{
  "version info": {
    "schema version": 2,
    "api version": "1.3.296",
    "comment": "from git branch: github-main commit: 486e4b289053a7d64784e7ce791711843c60c235",
    "date": "2024-09-26 07:23:50Z"
  },
  "validation": {
    "vkGetInstanceProcAddr": {
      "core": [
        {
          "vuid": "VUID-vkGetInstanceProcAddr-instance-parameter",
          "text": "If <code>instance</code> is not <code>NULL</code>, <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetInstanceProcAddr-pName-parameter",
          "text": "<code>pName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string",
          "page": "vkspec"
        }
      ]
    },
    "vkGetDeviceProcAddr": {
      "core": [
        {
          "vuid": "VUID-vkGetDeviceProcAddr-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceProcAddr-pName-parameter",
          "text": "<code>pName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string",
          "page": "vkspec"
        }
      ]
    },
    "vkEnumerateInstanceVersion": {
      "core": [
        {
          "vuid": "VUID-vkEnumerateInstanceVersion-pApiVersion-parameter",
          "text": "<code>pApiVersion</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateInstance": {
      "core": [
        {
          "vuid": "VUID-vkCreateInstance-ppEnabledExtensionNames-01388",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateInstance-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkInstanceCreateInfo\">VkInstanceCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateInstance-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateInstance-pInstance-parameter",
          "text": "<code>pInstance</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkInstance\">VkInstance</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkInstanceCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkInstanceCreateInfo-pNext-04925",
          "text": "If the <code>pNext</code> chain of <code>VkInstanceCreateInfo</code> includes a <code>VkDebugReportCallbackCreateInfoEXT</code> structure, the list of enabled extensions in <code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> contain <code><a href=\"#VK_EXT_debug_report\">VK_EXT_debug_report</a></code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkInstanceCreateInfo-pNext-04926",
          "text": "If the <code>pNext</code> chain of <code>VkInstanceCreateInfo</code> includes a <code>VkDebugUtilsMessengerCreateInfoEXT</code> structure, the list of enabled extensions in <code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> contain <code><a href=\"#VK_EXT_debug_utils\">VK_EXT_debug_utils</a></code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkInstanceCreateInfo-pNext-06779",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkExportMetalObjectCreateInfoEXT\">VkExportMetalObjectCreateInfoEXT</a> structure, its <code>exportObjectType</code> member <strong class=\"purple\">must</strong> be either <code>VK_EXPORT_METAL_OBJECT_TYPE_METAL_DEVICE_BIT_EXT</code> or <code>VK_EXPORT_METAL_OBJECT_TYPE_METAL_COMMAND_QUEUE_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkInstanceCreateInfo-flags-06559",
          "text": "If <code>flags</code> has the <code>VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR</code> bit set, the list of enabled extensions in <code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> contain <code><a href=\"#VK_KHR_portability_enumeration\">VK_KHR_portability_enumeration</a></code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkInstanceCreateInfo-pNext-09400",
          "text": "If the <code>pNext</code> chain of <code>VkInstanceCreateInfo</code> includes a <a href=\"#VkDirectDriverLoadingListLUNARG\">VkDirectDriverLoadingListLUNARG</a> structure, the list of enabled extensions in <code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> contain <a href=\"#VK_LUNARG_direct_driver_loading\">VK_LUNARG_direct_driver_loading</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkInstanceCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkInstanceCreateInfo-pNext-pNext",
          "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=\"#VkDirectDriverLoadingListLUNARG\">VkDirectDriverLoadingListLUNARG</a>, <a href=\"#VkExportMetalObjectCreateInfoEXT\">VkExportMetalObjectCreateInfoEXT</a>, <a href=\"#VkLayerSettingsCreateInfoEXT\">VkLayerSettingsCreateInfoEXT</a>, <a href=\"#VkValidationFeaturesEXT\">VkValidationFeaturesEXT</a>, or <a href=\"#VkValidationFlagsEXT\">VkValidationFlagsEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkInstanceCreateInfo-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique, with the exception of structures of type <a href=\"#VkDebugUtilsMessengerCreateInfoEXT\">VkDebugUtilsMessengerCreateInfoEXT</a>, <a href=\"#VkExportMetalObjectCreateInfoEXT\">VkExportMetalObjectCreateInfoEXT</a>, or <a href=\"#VkLayerSettingsCreateInfoEXT\">VkLayerSettingsCreateInfoEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkInstanceCreateInfo-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkInstanceCreateFlagBits\">VkInstanceCreateFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkInstanceCreateInfo-pApplicationInfo-parameter",
          "text": "If <code>pApplicationInfo</code> is not <code>NULL</code>, <code>pApplicationInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkApplicationInfo\">VkApplicationInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkInstanceCreateInfo-ppEnabledLayerNames-parameter",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkInstanceCreateInfo-ppEnabledExtensionNames-parameter",
          "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",
          "page": "vkspec"
        }
      ]
    },
    "VkValidationFlagsEXT": {
      "core": [
        {
          "vuid": "VUID-VkValidationFlagsEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkValidationFlagsEXT-pDisabledValidationChecks-parameter",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkValidationFlagsEXT-disabledValidationCheckCount-arraylength",
          "text": "<code>disabledValidationCheckCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkValidationFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkValidationFeaturesEXT-pEnabledValidationFeatures-02967",
          "text": "If the <code>pEnabledValidationFeatures</code> array contains <code>VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT</code>, then it <strong class=\"purple\">must</strong> also contain <code>VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT</code> or <code>VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkValidationFeaturesEXT-pEnabledValidationFeatures-02968",
          "text": "If the <code>pEnabledValidationFeatures</code> array contains <code>VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT</code>, then it <strong class=\"purple\">must</strong> not contain <code>VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkValidationFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkValidationFeaturesEXT-pEnabledValidationFeatures-parameter",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkValidationFeaturesEXT-pDisabledValidationFeatures-parameter",
          "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",
          "page": "vkspec"
        }
      ]
    },
    "VkLayerSettingsCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkLayerSettingsCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkLayerSettingsCreateInfoEXT-pSettings-parameter",
          "text": "If <code>settingCount</code> is not <code>0</code>, <code>pSettings</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>settingCount</code> valid <a href=\"#VkLayerSettingEXT\">VkLayerSettingEXT</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkLayerSettingEXT": {
      "core": [
        {
          "vuid": "VUID-VkLayerSettingEXT-valueCount-10070",
          "text": "If <code>valueCount</code> is not <code>0</code>, <code>pValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>valueCount</code> values of the type indicated by <code>type</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkLayerSettingEXT-pLayerName-parameter",
          "text": "<code>pLayerName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkLayerSettingEXT-pSettingName-parameter",
          "text": "<code>pSettingName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkLayerSettingEXT-type-parameter",
          "text": "<code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkLayerSettingTypeEXT\">VkLayerSettingTypeEXT</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkDirectDriverLoadingListLUNARG": {
      "core": [
        {
          "vuid": "VUID-VkDirectDriverLoadingListLUNARG-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDirectDriverLoadingListLUNARG-mode-parameter",
          "text": "<code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDirectDriverLoadingModeLUNARG\">VkDirectDriverLoadingModeLUNARG</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDirectDriverLoadingListLUNARG-pDrivers-parameter",
          "text": "<code>pDrivers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>driverCount</code> valid <a href=\"#VkDirectDriverLoadingInfoLUNARG\">VkDirectDriverLoadingInfoLUNARG</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDirectDriverLoadingListLUNARG-driverCount-arraylength",
          "text": "<code>driverCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkDirectDriverLoadingInfoLUNARG": {
      "core": [
        {
          "vuid": "VUID-VkDirectDriverLoadingInfoLUNARG-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDirectDriverLoadingInfoLUNARG-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkApplicationInfo": {
      "core": [
        {
          "vuid": "VUID-VkApplicationInfo-apiVersion-04010",
          "text": "If <code>apiVersion</code> is not <code>0</code>, then it <strong class=\"purple\">must</strong> be greater than or equal to <a href=\"#VK_API_VERSION_1_0\">VK_API_VERSION_1_0</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkApplicationInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_APPLICATION_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkApplicationInfo-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkApplicationInfo-pApplicationName-parameter",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkApplicationInfo-pEngineName-parameter",
          "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",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroyInstance": {
      "core": [
        {
          "vuid": "VUID-vkDestroyInstance-instance-00629",
          "text": "All child objects created using <code>instance</code> <strong class=\"purple\">must</strong> have been destroyed prior to destroying <code>instance</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyInstance-instance-00630",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyInstance-instance-00631",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyInstance-instance-parameter",
          "text": "If <code>instance</code> is not <code>NULL</code>, <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyInstance-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "vkEnumeratePhysicalDevices": {
      "core": [
        {
          "vuid": "VUID-vkEnumeratePhysicalDevices-instance-parameter",
          "text": "<code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkEnumeratePhysicalDevices-pPhysicalDeviceCount-parameter",
          "text": "<code>pPhysicalDeviceCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkEnumeratePhysicalDevices-pPhysicalDevices-parameter",
          "text": "If the value referenced by <code>pPhysicalDeviceCount</code> is not <code>0</code>, and <code>pPhysicalDevices</code> is not <code>NULL</code>, <code>pPhysicalDevices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPhysicalDeviceCount</code> <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handles",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceProperties": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceProperties-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceProperties-pProperties-parameter",
          "text": "<code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceProperties2": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceProperties2-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceProperties2-pProperties-parameter",
          "text": "<code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPhysicalDeviceProperties2\">VkPhysicalDeviceProperties2</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceProperties2": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceProperties2-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceProperties2-pNext-pNext",
          "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=\"#VkPhysicalDeviceAccelerationStructurePropertiesKHR\">VkPhysicalDeviceAccelerationStructurePropertiesKHR</a>, <a href=\"#VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT\">VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI\">VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI</a>, <a href=\"#VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR\">VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceConservativeRasterizationPropertiesEXT\">VkPhysicalDeviceConservativeRasterizationPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceCooperativeMatrixPropertiesKHR\">VkPhysicalDeviceCooperativeMatrixPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceCooperativeMatrixPropertiesNV\">VkPhysicalDeviceCooperativeMatrixPropertiesNV</a>, <a href=\"#VkPhysicalDeviceCopyMemoryIndirectPropertiesNV\">VkPhysicalDeviceCopyMemoryIndirectPropertiesNV</a>, <a href=\"#VkPhysicalDeviceCudaKernelLaunchPropertiesNV\">VkPhysicalDeviceCudaKernelLaunchPropertiesNV</a>, <a href=\"#VkPhysicalDeviceCustomBorderColorPropertiesEXT\">VkPhysicalDeviceCustomBorderColorPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDepthStencilResolveProperties\">VkPhysicalDeviceDepthStencilResolveProperties</a>, <a href=\"#VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT\">VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDescriptorBufferPropertiesEXT\">VkPhysicalDeviceDescriptorBufferPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDescriptorIndexingProperties\">VkPhysicalDeviceDescriptorIndexingProperties</a>, <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</a>, <a href=\"#VkPhysicalDeviceDiscardRectanglePropertiesEXT\">VkPhysicalDeviceDiscardRectanglePropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDisplacementMicromapPropertiesNV\">VkPhysicalDeviceDisplacementMicromapPropertiesNV</a>, <a href=\"#VkPhysicalDeviceDriverProperties\">VkPhysicalDeviceDriverProperties</a>, <a href=\"#VkPhysicalDeviceDrmPropertiesEXT\">VkPhysicalDeviceDrmPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceExtendedDynamicState3PropertiesEXT\">VkPhysicalDeviceExtendedDynamicState3PropertiesEXT</a>, <a href=\"#VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV\">VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV</a>, <a href=\"#VkPhysicalDeviceExternalFormatResolvePropertiesANDROID\">VkPhysicalDeviceExternalFormatResolvePropertiesANDROID</a>, <a href=\"#VkPhysicalDeviceExternalMemoryHostPropertiesEXT\">VkPhysicalDeviceExternalMemoryHostPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceFloatControlsProperties\">VkPhysicalDeviceFloatControlsProperties</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMap2PropertiesEXT\">VkPhysicalDeviceFragmentDensityMap2PropertiesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM\">VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapPropertiesEXT\">VkPhysicalDeviceFragmentDensityMapPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR\">VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV\">VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV</a>, <a href=\"#VkPhysicalDeviceFragmentShadingRatePropertiesKHR\">VkPhysicalDeviceFragmentShadingRatePropertiesKHR</a>, <a href=\"#VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT\">VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceHostImageCopyPropertiesEXT\">VkPhysicalDeviceHostImageCopyPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceIDProperties\">VkPhysicalDeviceIDProperties</a>, <a href=\"#VkPhysicalDeviceImageAlignmentControlPropertiesMESA\">VkPhysicalDeviceImageAlignmentControlPropertiesMESA</a>, <a href=\"#VkPhysicalDeviceImageProcessing2PropertiesQCOM\">VkPhysicalDeviceImageProcessing2PropertiesQCOM</a>, <a href=\"#VkPhysicalDeviceImageProcessingPropertiesQCOM\">VkPhysicalDeviceImageProcessingPropertiesQCOM</a>, <a href=\"#VkPhysicalDeviceInlineUniformBlockProperties\">VkPhysicalDeviceInlineUniformBlockProperties</a>, <a href=\"#VkPhysicalDeviceLayeredApiPropertiesListKHR\">VkPhysicalDeviceLayeredApiPropertiesListKHR</a>, <a href=\"#VkPhysicalDeviceLayeredDriverPropertiesMSFT\">VkPhysicalDeviceLayeredDriverPropertiesMSFT</a>, <a href=\"#VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT\">VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceLineRasterizationPropertiesKHR\">VkPhysicalDeviceLineRasterizationPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceMaintenance3Properties\">VkPhysicalDeviceMaintenance3Properties</a>, <a href=\"#VkPhysicalDeviceMaintenance4Properties\">VkPhysicalDeviceMaintenance4Properties</a>, <a href=\"#VkPhysicalDeviceMaintenance5PropertiesKHR\">VkPhysicalDeviceMaintenance5PropertiesKHR</a>, <a href=\"#VkPhysicalDeviceMaintenance6PropertiesKHR\">VkPhysicalDeviceMaintenance6PropertiesKHR</a>, <a href=\"#VkPhysicalDeviceMaintenance7PropertiesKHR\">VkPhysicalDeviceMaintenance7PropertiesKHR</a>, <a href=\"#VkPhysicalDeviceMapMemoryPlacedPropertiesEXT\">VkPhysicalDeviceMapMemoryPlacedPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceMemoryDecompressionPropertiesNV\">VkPhysicalDeviceMemoryDecompressionPropertiesNV</a>, <a href=\"#VkPhysicalDeviceMeshShaderPropertiesEXT\">VkPhysicalDeviceMeshShaderPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceMeshShaderPropertiesNV\">VkPhysicalDeviceMeshShaderPropertiesNV</a>, <a href=\"#VkPhysicalDeviceMultiDrawPropertiesEXT\">VkPhysicalDeviceMultiDrawPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX\">VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX</a>, <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>, <a href=\"#VkPhysicalDeviceNestedCommandBufferPropertiesEXT\">VkPhysicalDeviceNestedCommandBufferPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceOpacityMicromapPropertiesEXT\">VkPhysicalDeviceOpacityMicromapPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceOpticalFlowPropertiesNV\">VkPhysicalDeviceOpticalFlowPropertiesNV</a>, <a href=\"#VkPhysicalDevicePCIBusInfoPropertiesEXT\">VkPhysicalDevicePCIBusInfoPropertiesEXT</a>, <a href=\"#VkPhysicalDevicePerformanceQueryPropertiesKHR\">VkPhysicalDevicePerformanceQueryPropertiesKHR</a>, <a href=\"#VkPhysicalDevicePipelineBinaryPropertiesKHR\">VkPhysicalDevicePipelineBinaryPropertiesKHR</a>, <a href=\"#VkPhysicalDevicePipelineRobustnessPropertiesEXT\">VkPhysicalDevicePipelineRobustnessPropertiesEXT</a>, <a href=\"#VkPhysicalDevicePointClippingProperties\">VkPhysicalDevicePointClippingProperties</a>, <a href=\"#VkPhysicalDevicePortabilitySubsetPropertiesKHR\">VkPhysicalDevicePortabilitySubsetPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceProtectedMemoryProperties\">VkPhysicalDeviceProtectedMemoryProperties</a>, <a href=\"#VkPhysicalDeviceProvokingVertexPropertiesEXT\">VkPhysicalDeviceProvokingVertexPropertiesEXT</a>, <a href=\"#VkPhysicalDevicePushDescriptorPropertiesKHR\">VkPhysicalDevicePushDescriptorPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV\">VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV</a>, <a href=\"#VkPhysicalDeviceRayTracingPipelinePropertiesKHR\">VkPhysicalDeviceRayTracingPipelinePropertiesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>, <a href=\"#VkPhysicalDeviceRenderPassStripedPropertiesARM\">VkPhysicalDeviceRenderPassStripedPropertiesARM</a>, <a href=\"#VkPhysicalDeviceRobustness2PropertiesEXT\">VkPhysicalDeviceRobustness2PropertiesEXT</a>, <a href=\"#VkPhysicalDeviceSampleLocationsPropertiesEXT\">VkPhysicalDeviceSampleLocationsPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceSamplerFilterMinmaxProperties\">VkPhysicalDeviceSamplerFilterMinmaxProperties</a>, <a href=\"#VkPhysicalDeviceSchedulingControlsPropertiesARM\">VkPhysicalDeviceSchedulingControlsPropertiesARM</a>, <a href=\"#VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM\">VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM</a>, <a href=\"#VkPhysicalDeviceShaderCoreProperties2AMD\">VkPhysicalDeviceShaderCoreProperties2AMD</a>, <a href=\"#VkPhysicalDeviceShaderCorePropertiesAMD\">VkPhysicalDeviceShaderCorePropertiesAMD</a>, <a href=\"#VkPhysicalDeviceShaderCorePropertiesARM\">VkPhysicalDeviceShaderCorePropertiesARM</a>, <a href=\"#VkPhysicalDeviceShaderEnqueuePropertiesAMDX\">VkPhysicalDeviceShaderEnqueuePropertiesAMDX</a>, <a href=\"#VkPhysicalDeviceShaderIntegerDotProductProperties\">VkPhysicalDeviceShaderIntegerDotProductProperties</a>, <a href=\"#VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT\">VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceShaderObjectPropertiesEXT\">VkPhysicalDeviceShaderObjectPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceShaderSMBuiltinsPropertiesNV\">VkPhysicalDeviceShaderSMBuiltinsPropertiesNV</a>, <a href=\"#VkPhysicalDeviceShaderTileImagePropertiesEXT\">VkPhysicalDeviceShaderTileImagePropertiesEXT</a>, <a href=\"#VkPhysicalDeviceShadingRateImagePropertiesNV\">VkPhysicalDeviceShadingRateImagePropertiesNV</a>, <a href=\"#VkPhysicalDeviceSubgroupProperties\">VkPhysicalDeviceSubgroupProperties</a>, <a href=\"#VkPhysicalDeviceSubgroupSizeControlProperties\">VkPhysicalDeviceSubgroupSizeControlProperties</a>, <a href=\"#VkPhysicalDeviceSubpassShadingPropertiesHUAWEI\">VkPhysicalDeviceSubpassShadingPropertiesHUAWEI</a>, <a href=\"#VkPhysicalDeviceTexelBufferAlignmentProperties\">VkPhysicalDeviceTexelBufferAlignmentProperties</a>, <a href=\"#VkPhysicalDeviceTimelineSemaphoreProperties\">VkPhysicalDeviceTimelineSemaphoreProperties</a>, <a href=\"#VkPhysicalDeviceTransformFeedbackPropertiesEXT\">VkPhysicalDeviceTransformFeedbackPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT\">VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR\">VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceVulkan11Properties\">VkPhysicalDeviceVulkan11Properties</a>, <a href=\"#VkPhysicalDeviceVulkan12Properties\">VkPhysicalDeviceVulkan12Properties</a>, or <a href=\"#VkPhysicalDeviceVulkan13Properties\">VkPhysicalDeviceVulkan13Properties</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceProperties2-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceVulkan11Properties": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceVulkan11Properties-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceVulkan12Properties": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceVulkan12Properties-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceVulkan13Properties": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceVulkan13Properties-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceIDProperties": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceIDProperties-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceDriverProperties": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceDriverProperties-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDevicePCIBusInfoPropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDevicePCIBusInfoPropertiesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceDrmPropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceDrmPropertiesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShaderIntegerDotProductProperties": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShaderIntegerDotProductProperties-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceImageProcessingPropertiesQCOM": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceImageProcessingPropertiesQCOM-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShaderTileImagePropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShaderTileImagePropertiesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceImageProcessing2PropertiesQCOM": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceImageProcessing2PropertiesQCOM-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceLayeredDriverPropertiesMSFT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceLayeredDriverPropertiesMSFT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceSchedulingControlsPropertiesARM": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceSchedulingControlsPropertiesARM-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceSchedulingControlsPropertiesARM-schedulingControlsFlags-parameter",
          "text": "<code>schedulingControlsFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPhysicalDeviceSchedulingControlsFlagBitsARM\">VkPhysicalDeviceSchedulingControlsFlagBitsARM</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceSchedulingControlsPropertiesARM-schedulingControlsFlags-requiredbitmask",
          "text": "<code>schedulingControlsFlags</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceQueueFamilyProperties": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties-pQueueFamilyPropertyCount-parameter",
          "text": "<code>pQueueFamilyPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties-pQueueFamilyProperties-parameter",
          "text": "If the value referenced by <code>pQueueFamilyPropertyCount</code> is not <code>0</code>, and <code>pQueueFamilyProperties</code> is not <code>NULL</code>, <code>pQueueFamilyProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pQueueFamilyPropertyCount</code> <a href=\"#VkQueueFamilyProperties\">VkQueueFamilyProperties</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceQueueFamilyProperties2": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties2-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties2-pQueueFamilyPropertyCount-parameter",
          "text": "<code>pQueueFamilyPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties2-pQueueFamilyProperties-parameter",
          "text": "If the value referenced by <code>pQueueFamilyPropertyCount</code> is not <code>0</code>, and <code>pQueueFamilyProperties</code> is not <code>NULL</code>, <code>pQueueFamilyProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pQueueFamilyPropertyCount</code> <a href=\"#VkQueueFamilyProperties2\">VkQueueFamilyProperties2</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkQueueFamilyProperties2": {
      "core": [
        {
          "vuid": "VUID-VkQueueFamilyProperties2-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkQueueFamilyProperties2-pNext-pNext",
          "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=\"#VkQueueFamilyCheckpointProperties2NV\">VkQueueFamilyCheckpointProperties2NV</a>, <a href=\"#VkQueueFamilyCheckpointPropertiesNV\">VkQueueFamilyCheckpointPropertiesNV</a>, <a href=\"#VkQueueFamilyGlobalPriorityPropertiesKHR\">VkQueueFamilyGlobalPriorityPropertiesKHR</a>, <a href=\"#VkQueueFamilyQueryResultStatusPropertiesKHR\">VkQueueFamilyQueryResultStatusPropertiesKHR</a>, or <a href=\"#VkQueueFamilyVideoPropertiesKHR\">VkQueueFamilyVideoPropertiesKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkQueueFamilyProperties2-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        }
      ]
    },
    "VkQueueFamilyGlobalPriorityPropertiesKHR": {
      "core": [
        {
          "vuid": "VUID-VkQueueFamilyGlobalPriorityPropertiesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkQueueFamilyCheckpointProperties2NV": {
      "core": [
        {
          "vuid": "VUID-VkQueueFamilyCheckpointProperties2NV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkQueueFamilyCheckpointPropertiesNV": {
      "core": [
        {
          "vuid": "VUID-VkQueueFamilyCheckpointPropertiesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkQueueFamilyVideoPropertiesKHR": {
      "core": [
        {
          "vuid": "VUID-VkQueueFamilyVideoPropertiesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUEUE_FAMILY_VIDEO_PROPERTIES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkQueueFamilyQueryResultStatusPropertiesKHR": {
      "core": [
        {
          "vuid": "VUID-VkQueueFamilyQueryResultStatusPropertiesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR": {
      "core": [
        {
          "vuid": "VUID-vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR-pCounterCount-parameter",
          "text": "<code>pCounterCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR-pCounters-parameter",
          "text": "If the value referenced by <code>pCounterCount</code> is not <code>0</code>, and <code>pCounters</code> is not <code>NULL</code>, <code>pCounters</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pCounterCount</code> <a href=\"#VkPerformanceCounterKHR\">VkPerformanceCounterKHR</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR-pCounterDescriptions-parameter",
          "text": "If the value referenced by <code>pCounterCount</code> is not <code>0</code>, and <code>pCounterDescriptions</code> is not <code>NULL</code>, <code>pCounterDescriptions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pCounterCount</code> <a href=\"#VkPerformanceCounterDescriptionKHR\">VkPerformanceCounterDescriptionKHR</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkPerformanceCounterKHR": {
      "core": [
        {
          "vuid": "VUID-VkPerformanceCounterKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPerformanceCounterKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPerformanceCounterDescriptionKHR": {
      "core": [
        {
          "vuid": "VUID-VkPerformanceCounterDescriptionKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPerformanceCounterDescriptionKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkEnumeratePhysicalDeviceGroups": {
      "core": [
        {
          "vuid": "VUID-vkEnumeratePhysicalDeviceGroups-instance-parameter",
          "text": "<code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkEnumeratePhysicalDeviceGroups-pPhysicalDeviceGroupCount-parameter",
          "text": "<code>pPhysicalDeviceGroupCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkEnumeratePhysicalDeviceGroups-pPhysicalDeviceGroupProperties-parameter",
          "text": "If the value referenced by <code>pPhysicalDeviceGroupCount</code> is not <code>0</code>, and <code>pPhysicalDeviceGroupProperties</code> is not <code>NULL</code>, <code>pPhysicalDeviceGroupProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPhysicalDeviceGroupCount</code> <a href=\"#VkPhysicalDeviceGroupProperties\">VkPhysicalDeviceGroupProperties</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceGroupProperties": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceGroupProperties-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceGroupProperties-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateDevice": {
      "core": [
        {
          "vuid": "VUID-vkCreateDevice-ppEnabledExtensionNames-01387",
          "text": "All <a href=\"#extendingvulkan-extensions-extensiondependencies\">required device 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateDevice-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateDevice-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDeviceCreateInfo\">VkDeviceCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateDevice-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateDevice-pDevice-parameter",
          "text": "<code>pDevice</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkDeviceCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkDeviceCreateInfo-queueFamilyIndex-02802",
          "text": "The <code>queueFamilyIndex</code> member of each element of <code>pQueueCreateInfos</code> <strong class=\"purple\">must</strong> be unique within <code>pQueueCreateInfos</code> , except that two members can share the same <code>queueFamilyIndex</code> if one describes protected-capable queues and one describes queues that are not protected-capable",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceCreateInfo-pQueueCreateInfos-06755",
          "text": "If multiple elements of <code>pQueueCreateInfos</code> share the same <code>queueFamilyIndex</code>, the sum of their <code>queueCount</code> members <strong class=\"purple\">must</strong> be less than or equal to the <code>queueCount</code> member of the <code>VkQueueFamilyProperties</code> structure, as returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code> in the <code>pQueueFamilyProperties</code>[queueFamilyIndex]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceCreateInfo-pQueueCreateInfos-06654",
          "text": "If multiple elements of <code>pQueueCreateInfos</code> share the same <code>queueFamilyIndex</code>, then all of such elements <strong class=\"purple\">must</strong> have the same global priority level, which <strong class=\"purple\">can</strong> be specified explicitly by the including a <a href=\"#VkDeviceQueueGlobalPriorityCreateInfoKHR\">VkDeviceQueueGlobalPriorityCreateInfoKHR</a> structure in the <code>pNext</code> chain, or by the implicit default value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceCreateInfo-pNext-00373",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-01840",
          "text": "If <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> advertises Vulkan 1.1 or later, <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-00374",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-03328",
          "text": "<code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> not contain both <code><a href=\"#VK_KHR_buffer_device_address\">VK_KHR_buffer_device_address</a></code> and <code><a href=\"#VK_EXT_buffer_device_address\">VK_EXT_buffer_device_address</a></code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceCreateInfo-pNext-04748",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkPhysicalDeviceVulkan12Features\">VkPhysicalDeviceVulkan12Features</a> structure and <a href=\"#VkPhysicalDeviceVulkan12Features\">VkPhysicalDeviceVulkan12Features</a>::<code>bufferDeviceAddress</code> is <code>VK_TRUE</code>, <code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> not contain <code><a href=\"#VK_EXT_buffer_device_address\">VK_EXT_buffer_device_address</a></code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceCreateInfo-pNext-02829",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkPhysicalDeviceVulkan11Features\">VkPhysicalDeviceVulkan11Features</a> structure, then it <strong class=\"purple\">must</strong> not include a <a href=\"#VkPhysicalDevice16BitStorageFeatures\">VkPhysicalDevice16BitStorageFeatures</a>, <a href=\"#VkPhysicalDeviceMultiviewFeatures\">VkPhysicalDeviceMultiviewFeatures</a>, <a href=\"#VkPhysicalDeviceVariablePointersFeatures\">VkPhysicalDeviceVariablePointersFeatures</a>, <a href=\"#VkPhysicalDeviceProtectedMemoryFeatures\">VkPhysicalDeviceProtectedMemoryFeatures</a>, <a href=\"#VkPhysicalDeviceSamplerYcbcrConversionFeatures\">VkPhysicalDeviceSamplerYcbcrConversionFeatures</a>, or <a href=\"#VkPhysicalDeviceShaderDrawParametersFeatures\">VkPhysicalDeviceShaderDrawParametersFeatures</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceCreateInfo-pNext-02830",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkPhysicalDeviceVulkan12Features\">VkPhysicalDeviceVulkan12Features</a> structure, then it <strong class=\"purple\">must</strong> not include a <a href=\"#VkPhysicalDevice8BitStorageFeatures\">VkPhysicalDevice8BitStorageFeatures</a>, <a href=\"#VkPhysicalDeviceShaderAtomicInt64Features\">VkPhysicalDeviceShaderAtomicInt64Features</a>, <a href=\"#VkPhysicalDeviceShaderFloat16Int8Features\">VkPhysicalDeviceShaderFloat16Int8Features</a>, <a href=\"#VkPhysicalDeviceDescriptorIndexingFeatures\">VkPhysicalDeviceDescriptorIndexingFeatures</a>, <a href=\"#VkPhysicalDeviceScalarBlockLayoutFeatures\">VkPhysicalDeviceScalarBlockLayoutFeatures</a>, <a href=\"#VkPhysicalDeviceImagelessFramebufferFeatures\">VkPhysicalDeviceImagelessFramebufferFeatures</a>, <a href=\"#VkPhysicalDeviceUniformBufferStandardLayoutFeatures\">VkPhysicalDeviceUniformBufferStandardLayoutFeatures</a>, <a href=\"#VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures\">VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures</a>, <a href=\"#VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures\">VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures</a>, <a href=\"#VkPhysicalDeviceHostQueryResetFeatures\">VkPhysicalDeviceHostQueryResetFeatures</a>, <a href=\"#VkPhysicalDeviceTimelineSemaphoreFeatures\">VkPhysicalDeviceTimelineSemaphoreFeatures</a>, <a href=\"#VkPhysicalDeviceBufferDeviceAddressFeatures\">VkPhysicalDeviceBufferDeviceAddressFeatures</a>, or <a href=\"#VkPhysicalDeviceVulkanMemoryModelFeatures\">VkPhysicalDeviceVulkanMemoryModelFeatures</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-04476",
          "text": "If <code>ppEnabledExtensionNames</code> contains <code>\"VK_KHR_shader_draw_parameters\"</code> and the <code>pNext</code> chain includes a <a href=\"#VkPhysicalDeviceVulkan11Features\">VkPhysicalDeviceVulkan11Features</a> structure, then <code>VkPhysicalDeviceVulkan11Features</code>::<code>shaderDrawParameters</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-02831",
          "text": "If <code>ppEnabledExtensionNames</code> contains <code>\"VK_KHR_draw_indirect_count\"</code> and the <code>pNext</code> chain includes a <a href=\"#VkPhysicalDeviceVulkan12Features\">VkPhysicalDeviceVulkan12Features</a> structure, then <code>VkPhysicalDeviceVulkan12Features</code>::<code>drawIndirectCount</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-02832",
          "text": "If <code>ppEnabledExtensionNames</code> contains <code>\"VK_KHR_sampler_mirror_clamp_to_edge\"</code> and the <code>pNext</code> chain includes a <a href=\"#VkPhysicalDeviceVulkan12Features\">VkPhysicalDeviceVulkan12Features</a> structure, then <code>VkPhysicalDeviceVulkan12Features</code>::<code>samplerMirrorClampToEdge</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-02833",
          "text": "If <code>ppEnabledExtensionNames</code> contains <code>\"VK_EXT_descriptor_indexing\"</code> and the <code>pNext</code> chain includes a <a href=\"#VkPhysicalDeviceVulkan12Features\">VkPhysicalDeviceVulkan12Features</a> structure, then <code>VkPhysicalDeviceVulkan12Features</code>::<code>descriptorIndexing</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-02834",
          "text": "If <code>ppEnabledExtensionNames</code> contains <code>\"VK_EXT_sampler_filter_minmax\"</code> and the <code>pNext</code> chain includes a <a href=\"#VkPhysicalDeviceVulkan12Features\">VkPhysicalDeviceVulkan12Features</a> structure, then <code>VkPhysicalDeviceVulkan12Features</code>::<code>samplerFilterMinmax</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-02835",
          "text": "If <code>ppEnabledExtensionNames</code> contains <code>\"VK_EXT_shader_viewport_index_layer\"</code> and the <code>pNext</code> chain includes a <a href=\"#VkPhysicalDeviceVulkan12Features\">VkPhysicalDeviceVulkan12Features</a> structure, then <code>VkPhysicalDeviceVulkan12Features</code>::<code>shaderOutputViewportIndex</code> and <code>VkPhysicalDeviceVulkan12Features</code>::<code>shaderOutputLayer</code> <strong class=\"purple\">must</strong> both be <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceCreateInfo-pNext-06532",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkPhysicalDeviceVulkan13Features\">VkPhysicalDeviceVulkan13Features</a> structure, then it <strong class=\"purple\">must</strong> not include a <a href=\"#VkPhysicalDeviceDynamicRenderingFeatures\">VkPhysicalDeviceDynamicRenderingFeatures</a>, <a href=\"#VkPhysicalDeviceImageRobustnessFeatures\">VkPhysicalDeviceImageRobustnessFeatures</a>, <a href=\"#VkPhysicalDeviceInlineUniformBlockFeatures\">VkPhysicalDeviceInlineUniformBlockFeatures</a>, <a href=\"#VkPhysicalDeviceMaintenance4Features\">VkPhysicalDeviceMaintenance4Features</a>, <a href=\"#VkPhysicalDevicePipelineCreationCacheControlFeatures\">VkPhysicalDevicePipelineCreationCacheControlFeatures</a>, <a href=\"#VkPhysicalDevicePrivateDataFeatures\">VkPhysicalDevicePrivateDataFeatures</a>, <a href=\"#VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures\">VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures</a>, <a href=\"#VkPhysicalDeviceShaderIntegerDotProductFeatures\">VkPhysicalDeviceShaderIntegerDotProductFeatures</a>, <a href=\"#VkPhysicalDeviceShaderTerminateInvocationFeatures\">VkPhysicalDeviceShaderTerminateInvocationFeatures</a>, <a href=\"#VkPhysicalDeviceSubgroupSizeControlFeatures\">VkPhysicalDeviceSubgroupSizeControlFeatures</a>, <a href=\"#VkPhysicalDeviceSynchronization2Features\">VkPhysicalDeviceSynchronization2Features</a>, <a href=\"#VkPhysicalDeviceTextureCompressionASTCHDRFeatures\">VkPhysicalDeviceTextureCompressionASTCHDRFeatures</a>, or <a href=\"#VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures\">VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceCreateInfo-pProperties-04451",
          "text": "If the <code><a href=\"#VK_KHR_portability_subset\">VK_KHR_portability_subset</a></code> extension is included in <code>pProperties</code> of <a href=\"#vkEnumerateDeviceExtensionProperties\">vkEnumerateDeviceExtensionProperties</a>, <code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> include <code>\"VK_KHR_portability_subset\"</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceCreateInfo-shadingRateImage-04478",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, the <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a> feature <strong class=\"purple\">must</strong> not be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceCreateInfo-shadingRateImage-04479",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, the <a href=\"#features-primitiveFragmentShadingRate\"><code>primitiveFragmentShadingRate</code></a> feature <strong class=\"purple\">must</strong> not be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceCreateInfo-shadingRateImage-04480",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, the <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> feature <strong class=\"purple\">must</strong> not be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceCreateInfo-fragmentDensityMap-04481",
          "text": "If the <a href=\"#features-fragmentDensityMap\"><code>fragmentDensityMap</code></a> feature is enabled, the <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a> feature <strong class=\"purple\">must</strong> not be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceCreateInfo-fragmentDensityMap-04482",
          "text": "If the <a href=\"#features-fragmentDensityMap\"><code>fragmentDensityMap</code></a> feature is enabled, the <a href=\"#features-primitiveFragmentShadingRate\"><code>primitiveFragmentShadingRate</code></a> feature <strong class=\"purple\">must</strong> not be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceCreateInfo-fragmentDensityMap-04483",
          "text": "If the <a href=\"#features-fragmentDensityMap\"><code>fragmentDensityMap</code></a> feature is enabled, the <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> feature <strong class=\"purple\">must</strong> not be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceCreateInfo-None-04896",
          "text": "If <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> is enabled, <a href=\"#features-shaderImageInt64Atomics\"><code>shaderImageInt64Atomics</code></a> <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceCreateInfo-None-04897",
          "text": "If <a href=\"#features-sparseImageFloat32Atomics\"><code>sparseImageFloat32Atomics</code></a> is enabled, <a href=\"#features-shaderImageFloat32Atomics\"><code>shaderImageFloat32Atomics</code></a> <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceCreateInfo-None-04898",
          "text": "If <a href=\"#features-sparseImageFloat32AtomicAdd\"><code>sparseImageFloat32AtomicAdd</code></a> is enabled, <a href=\"#features-shaderImageFloat32AtomicAdd\"><code>shaderImageFloat32AtomicAdd</code></a> <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceCreateInfo-sparseImageFloat32AtomicMinMax-04975",
          "text": "If <a href=\"#features-sparseImageFloat32AtomicMinMax\"><code>sparseImageFloat32AtomicMinMax</code></a> is enabled, <a href=\"#features-shaderImageFloat32AtomicMinMax\"><code>shaderImageFloat32AtomicMinMax</code></a> <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceCreateInfo-None-08095",
          "text": "If <a href=\"#features-descriptorBuffer\"><code>descriptorBuffer</code></a> is enabled, <code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> not contain <code><a href=\"#VK_AMD_shader_fragment_mask\">VK_AMD_shader_fragment_mask</a></code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceCreateInfo-pNext-09396",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkDeviceQueueShaderCoreControlCreateInfoARM\">VkDeviceQueueShaderCoreControlCreateInfoARM</a> structure, then it <strong class=\"purple\">must</strong> not be included in the <code>pNext</code> chain of any of the <a href=\"#VkDeviceQueueCreateInfo\">VkDeviceQueueCreateInfo</a> structures in <code>pQueueCreateInfos</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceCreateInfo-pNext-09397",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkDeviceQueueShaderCoreControlCreateInfoARM\">VkDeviceQueueShaderCoreControlCreateInfoARM</a> structure then <a href=\"#VkPhysicalDeviceSchedulingControlsPropertiesARM\">VkPhysicalDeviceSchedulingControlsPropertiesARM</a>::<code>schedulingControlsFlags</code> <strong class=\"purple\">must</strong> contain <code>VK_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_SHADER_CORE_COUNT_ARM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceCreateInfo-pNext-pNext",
          "text": "Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceDeviceMemoryReportCreateInfoEXT\">VkDeviceDeviceMemoryReportCreateInfoEXT</a>, <a href=\"#VkDeviceDiagnosticsConfigCreateInfoNV\">VkDeviceDiagnosticsConfigCreateInfoNV</a>, <a href=\"#VkDeviceGroupDeviceCreateInfo\">VkDeviceGroupDeviceCreateInfo</a>, <a href=\"#VkDeviceMemoryOverallocationCreateInfoAMD\">VkDeviceMemoryOverallocationCreateInfoAMD</a>, <a href=\"#VkDevicePipelineBinaryInternalCacheControlKHR\">VkDevicePipelineBinaryInternalCacheControlKHR</a>, <a href=\"#VkDevicePrivateDataCreateInfo\">VkDevicePrivateDataCreateInfo</a>, <a href=\"#VkDeviceQueueShaderCoreControlCreateInfoARM\">VkDeviceQueueShaderCoreControlCreateInfoARM</a>, <a href=\"#VkPhysicalDevice16BitStorageFeatures\">VkPhysicalDevice16BitStorageFeatures</a>, <a href=\"#VkPhysicalDevice4444FormatsFeaturesEXT\">VkPhysicalDevice4444FormatsFeaturesEXT</a>, <a href=\"#VkPhysicalDevice8BitStorageFeatures\">VkPhysicalDevice8BitStorageFeatures</a>, <a href=\"#VkPhysicalDeviceASTCDecodeFeaturesEXT\">VkPhysicalDeviceASTCDecodeFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceAccelerationStructureFeaturesKHR\">VkPhysicalDeviceAccelerationStructureFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceAddressBindingReportFeaturesEXT\">VkPhysicalDeviceAddressBindingReportFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceAmigoProfilingFeaturesSEC\">VkPhysicalDeviceAmigoProfilingFeaturesSEC</a>, <a href=\"#VkPhysicalDeviceAntiLagFeaturesAMD\">VkPhysicalDeviceAntiLagFeaturesAMD</a>, <a href=\"#VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT\">VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT\">VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT\">VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBorderColorSwizzleFeaturesEXT\">VkPhysicalDeviceBorderColorSwizzleFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBufferDeviceAddressFeatures\">VkPhysicalDeviceBufferDeviceAddressFeatures</a>, <a href=\"#VkPhysicalDeviceBufferDeviceAddressFeaturesEXT\">VkPhysicalDeviceBufferDeviceAddressFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI\">VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI</a>, <a href=\"#VkPhysicalDeviceCoherentMemoryFeaturesAMD\">VkPhysicalDeviceCoherentMemoryFeaturesAMD</a>, <a href=\"#VkPhysicalDeviceColorWriteEnableFeaturesEXT\">VkPhysicalDeviceColorWriteEnableFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceCommandBufferInheritanceFeaturesNV\">VkPhysicalDeviceCommandBufferInheritanceFeaturesNV</a>, <a href=\"#VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR\">VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceConditionalRenderingFeaturesEXT\">VkPhysicalDeviceConditionalRenderingFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceCooperativeMatrixFeaturesKHR\">VkPhysicalDeviceCooperativeMatrixFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceCooperativeMatrixFeaturesNV\">VkPhysicalDeviceCooperativeMatrixFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCopyMemoryIndirectFeaturesNV\">VkPhysicalDeviceCopyMemoryIndirectFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCornerSampledImageFeaturesNV\">VkPhysicalDeviceCornerSampledImageFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCoverageReductionModeFeaturesNV\">VkPhysicalDeviceCoverageReductionModeFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCubicClampFeaturesQCOM\">VkPhysicalDeviceCubicClampFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceCubicWeightsFeaturesQCOM\">VkPhysicalDeviceCubicWeightsFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceCudaKernelLaunchFeaturesNV\">VkPhysicalDeviceCudaKernelLaunchFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCustomBorderColorFeaturesEXT\">VkPhysicalDeviceCustomBorderColorFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV\">VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDepthBiasControlFeaturesEXT\">VkPhysicalDeviceDepthBiasControlFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDepthClampControlFeaturesEXT\">VkPhysicalDeviceDepthClampControlFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDepthClampZeroOneFeaturesEXT\">VkPhysicalDeviceDepthClampZeroOneFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDepthClipControlFeaturesEXT\">VkPhysicalDeviceDepthClipControlFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDepthClipEnableFeaturesEXT\">VkPhysicalDeviceDepthClipEnableFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDescriptorBufferFeaturesEXT\">VkPhysicalDeviceDescriptorBufferFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDescriptorIndexingFeatures\">VkPhysicalDeviceDescriptorIndexingFeatures</a>, <a href=\"#VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV\">VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE\">VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE</a>, <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV\">VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV\">VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDeviceMemoryReportFeaturesEXT\">VkPhysicalDeviceDeviceMemoryReportFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDiagnosticsConfigFeaturesNV\">VkPhysicalDeviceDiagnosticsConfigFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDisplacementMicromapFeaturesNV\">VkPhysicalDeviceDisplacementMicromapFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDynamicRenderingFeatures\">VkPhysicalDeviceDynamicRenderingFeatures</a>, <a href=\"#VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR\">VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT\">VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceExclusiveScissorFeaturesNV\">VkPhysicalDeviceExclusiveScissorFeaturesNV</a>, <a href=\"#VkPhysicalDeviceExtendedDynamicState2FeaturesEXT\">VkPhysicalDeviceExtendedDynamicState2FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceExtendedDynamicState3FeaturesEXT\">VkPhysicalDeviceExtendedDynamicState3FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceExtendedDynamicStateFeaturesEXT\">VkPhysicalDeviceExtendedDynamicStateFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV\">VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV</a>, <a href=\"#VkPhysicalDeviceExternalFormatResolveFeaturesANDROID\">VkPhysicalDeviceExternalFormatResolveFeaturesANDROID</a>, <a href=\"#VkPhysicalDeviceExternalMemoryRDMAFeaturesNV\">VkPhysicalDeviceExternalMemoryRDMAFeaturesNV</a>, <a href=\"#VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX\">VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX</a>, <a href=\"#VkPhysicalDeviceFaultFeaturesEXT\">VkPhysicalDeviceFaultFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFeatures2\">VkPhysicalDeviceFeatures2</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMap2FeaturesEXT\">VkPhysicalDeviceFragmentDensityMap2FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapFeaturesEXT\">VkPhysicalDeviceFragmentDensityMapFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM\">VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR\">VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT\">VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV\">VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV</a>, <a href=\"#VkPhysicalDeviceFragmentShadingRateFeaturesKHR\">VkPhysicalDeviceFragmentShadingRateFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceFrameBoundaryFeaturesEXT\">VkPhysicalDeviceFrameBoundaryFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR\">VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT\">VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceHostImageCopyFeaturesEXT\">VkPhysicalDeviceHostImageCopyFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceHostQueryResetFeatures\">VkPhysicalDeviceHostQueryResetFeatures</a>, <a href=\"#VkPhysicalDeviceImage2DViewOf3DFeaturesEXT\">VkPhysicalDeviceImage2DViewOf3DFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceImageAlignmentControlFeaturesMESA\">VkPhysicalDeviceImageAlignmentControlFeaturesMESA</a>, <a href=\"#VkPhysicalDeviceImageCompressionControlFeaturesEXT\">VkPhysicalDeviceImageCompressionControlFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT\">VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceImageProcessing2FeaturesQCOM\">VkPhysicalDeviceImageProcessing2FeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceImageProcessingFeaturesQCOM\">VkPhysicalDeviceImageProcessingFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceImageRobustnessFeatures\">VkPhysicalDeviceImageRobustnessFeatures</a>, <a href=\"#VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT\">VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceImageViewMinLodFeaturesEXT\">VkPhysicalDeviceImageViewMinLodFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceImagelessFramebufferFeatures\">VkPhysicalDeviceImagelessFramebufferFeatures</a>, <a href=\"#VkPhysicalDeviceIndexTypeUint8FeaturesKHR\">VkPhysicalDeviceIndexTypeUint8FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceInheritedViewportScissorFeaturesNV\">VkPhysicalDeviceInheritedViewportScissorFeaturesNV</a>, <a href=\"#VkPhysicalDeviceInlineUniformBlockFeatures\">VkPhysicalDeviceInlineUniformBlockFeatures</a>, <a href=\"#VkPhysicalDeviceInvocationMaskFeaturesHUAWEI\">VkPhysicalDeviceInvocationMaskFeaturesHUAWEI</a>, <a href=\"#VkPhysicalDeviceLegacyDitheringFeaturesEXT\">VkPhysicalDeviceLegacyDitheringFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT\">VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceLineRasterizationFeaturesKHR\">VkPhysicalDeviceLineRasterizationFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceLinearColorAttachmentFeaturesNV\">VkPhysicalDeviceLinearColorAttachmentFeaturesNV</a>, <a href=\"#VkPhysicalDeviceMaintenance4Features\">VkPhysicalDeviceMaintenance4Features</a>, <a href=\"#VkPhysicalDeviceMaintenance5FeaturesKHR\">VkPhysicalDeviceMaintenance5FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceMaintenance6FeaturesKHR\">VkPhysicalDeviceMaintenance6FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceMaintenance7FeaturesKHR\">VkPhysicalDeviceMaintenance7FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceMapMemoryPlacedFeaturesEXT\">VkPhysicalDeviceMapMemoryPlacedFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMemoryDecompressionFeaturesNV\">VkPhysicalDeviceMemoryDecompressionFeaturesNV</a>, <a href=\"#VkPhysicalDeviceMemoryPriorityFeaturesEXT\">VkPhysicalDeviceMemoryPriorityFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMeshShaderFeaturesEXT\">VkPhysicalDeviceMeshShaderFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMeshShaderFeaturesNV\">VkPhysicalDeviceMeshShaderFeaturesNV</a>, <a href=\"#VkPhysicalDeviceMultiDrawFeaturesEXT\">VkPhysicalDeviceMultiDrawFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT\">VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMultiviewFeatures\">VkPhysicalDeviceMultiviewFeatures</a>, <a href=\"#VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM\">VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM\">VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT\">VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceNestedCommandBufferFeaturesEXT\">VkPhysicalDeviceNestedCommandBufferFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT\">VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceOpacityMicromapFeaturesEXT\">VkPhysicalDeviceOpacityMicromapFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceOpticalFlowFeaturesNV\">VkPhysicalDeviceOpticalFlowFeaturesNV</a>, <a href=\"#VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT\">VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePerStageDescriptorSetFeaturesNV\">VkPhysicalDevicePerStageDescriptorSetFeaturesNV</a>, <a href=\"#VkPhysicalDevicePerformanceQueryFeaturesKHR\">VkPhysicalDevicePerformanceQueryFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePipelineBinaryFeaturesKHR\">VkPhysicalDevicePipelineBinaryFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePipelineCreationCacheControlFeatures\">VkPhysicalDevicePipelineCreationCacheControlFeatures</a>, <a href=\"#VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR\">VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT\">VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePipelinePropertiesFeaturesEXT\">VkPhysicalDevicePipelinePropertiesFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePipelineProtectedAccessFeaturesEXT\">VkPhysicalDevicePipelineProtectedAccessFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePipelineRobustnessFeaturesEXT\">VkPhysicalDevicePipelineRobustnessFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePresentBarrierFeaturesNV\">VkPhysicalDevicePresentBarrierFeaturesNV</a>, <a href=\"#VkPhysicalDevicePresentIdFeaturesKHR\">VkPhysicalDevicePresentIdFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePresentWaitFeaturesKHR\">VkPhysicalDevicePresentWaitFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT\">VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT\">VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePrivateDataFeatures\">VkPhysicalDevicePrivateDataFeatures</a>, <a href=\"#VkPhysicalDeviceProtectedMemoryFeatures\">VkPhysicalDeviceProtectedMemoryFeatures</a>, <a href=\"#VkPhysicalDeviceProvokingVertexFeaturesEXT\">VkPhysicalDeviceProvokingVertexFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT\">VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT\">VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceRawAccessChainsFeaturesNV\">VkPhysicalDeviceRawAccessChainsFeaturesNV</a>, <a href=\"#VkPhysicalDeviceRayQueryFeaturesKHR\">VkPhysicalDeviceRayQueryFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV\">VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV</a>, <a href=\"#VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR\">VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingMotionBlurFeaturesNV\">VkPhysicalDeviceRayTracingMotionBlurFeaturesNV</a>, <a href=\"#VkPhysicalDeviceRayTracingPipelineFeaturesKHR\">VkPhysicalDeviceRayTracingPipelineFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR\">VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingValidationFeaturesNV\">VkPhysicalDeviceRayTracingValidationFeaturesNV</a>, <a href=\"#VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG\">VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG</a>, <a href=\"#VkPhysicalDeviceRenderPassStripedFeaturesARM\">VkPhysicalDeviceRenderPassStripedFeaturesARM</a>, <a href=\"#VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV\">VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV</a>, <a href=\"#VkPhysicalDeviceRobustness2FeaturesEXT\">VkPhysicalDeviceRobustness2FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceSamplerYcbcrConversionFeatures\">VkPhysicalDeviceSamplerYcbcrConversionFeatures</a>, <a href=\"#VkPhysicalDeviceScalarBlockLayoutFeatures\">VkPhysicalDeviceScalarBlockLayoutFeatures</a>, <a href=\"#VkPhysicalDeviceSchedulingControlsFeaturesARM\">VkPhysicalDeviceSchedulingControlsFeaturesARM</a>, <a href=\"#VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures\">VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures</a>, <a href=\"#VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV\">VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV</a>, <a href=\"#VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT\">VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderAtomicFloatFeaturesEXT\">VkPhysicalDeviceShaderAtomicFloatFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderAtomicInt64Features\">VkPhysicalDeviceShaderAtomicInt64Features</a>, <a href=\"#VkPhysicalDeviceShaderClockFeaturesKHR\">VkPhysicalDeviceShaderClockFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM\">VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM</a>, <a href=\"#VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures\">VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures</a>, <a href=\"#VkPhysicalDeviceShaderDrawParametersFeatures\">VkPhysicalDeviceShaderDrawParametersFeatures</a>, <a href=\"#VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD\">VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD</a>, <a href=\"#VkPhysicalDeviceShaderEnqueueFeaturesAMDX\">VkPhysicalDeviceShaderEnqueueFeaturesAMDX</a>, <a href=\"#VkPhysicalDeviceShaderExpectAssumeFeaturesKHR\">VkPhysicalDeviceShaderExpectAssumeFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderFloat16Int8Features\">VkPhysicalDeviceShaderFloat16Int8Features</a>, <a href=\"#VkPhysicalDeviceShaderFloatControls2FeaturesKHR\">VkPhysicalDeviceShaderFloatControls2FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT\">VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderImageFootprintFeaturesNV\">VkPhysicalDeviceShaderImageFootprintFeaturesNV</a>, <a href=\"#VkPhysicalDeviceShaderIntegerDotProductFeatures\">VkPhysicalDeviceShaderIntegerDotProductFeatures</a>, <a href=\"#VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL\">VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL</a>, <a href=\"#VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR\">VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT\">VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderObjectFeaturesEXT\">VkPhysicalDeviceShaderObjectFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderQuadControlFeaturesKHR\">VkPhysicalDeviceShaderQuadControlFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR\">VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT\">VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderSMBuiltinsFeaturesNV\">VkPhysicalDeviceShaderSMBuiltinsFeaturesNV</a>, <a href=\"#VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures\">VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures</a>, <a href=\"#VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR\">VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR\">VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderTerminateInvocationFeatures\">VkPhysicalDeviceShaderTerminateInvocationFeatures</a>, <a href=\"#VkPhysicalDeviceShaderTileImageFeaturesEXT\">VkPhysicalDeviceShaderTileImageFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShadingRateImageFeaturesNV\">VkPhysicalDeviceShadingRateImageFeaturesNV</a>, <a href=\"#VkPhysicalDeviceSubgroupSizeControlFeatures\">VkPhysicalDeviceSubgroupSizeControlFeatures</a>, <a href=\"#VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT\">VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceSubpassShadingFeaturesHUAWEI\">VkPhysicalDeviceSubpassShadingFeaturesHUAWEI</a>, <a href=\"#VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT\">VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceSynchronization2Features\">VkPhysicalDeviceSynchronization2Features</a>, <a href=\"#VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT\">VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceTextureCompressionASTCHDRFeatures\">VkPhysicalDeviceTextureCompressionASTCHDRFeatures</a>, <a href=\"#VkPhysicalDeviceTilePropertiesFeaturesQCOM\">VkPhysicalDeviceTilePropertiesFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceTimelineSemaphoreFeatures\">VkPhysicalDeviceTimelineSemaphoreFeatures</a>, <a href=\"#VkPhysicalDeviceTransformFeedbackFeaturesEXT\">VkPhysicalDeviceTransformFeedbackFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceUniformBufferStandardLayoutFeatures\">VkPhysicalDeviceUniformBufferStandardLayoutFeatures</a>, <a href=\"#VkPhysicalDeviceVariablePointersFeatures\">VkPhysicalDeviceVariablePointersFeatures</a>, <a href=\"#VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR\">VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT\">VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceVideoMaintenance1FeaturesKHR\">VkPhysicalDeviceVideoMaintenance1FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceVulkan11Features\">VkPhysicalDeviceVulkan11Features</a>, <a href=\"#VkPhysicalDeviceVulkan12Features\">VkPhysicalDeviceVulkan12Features</a>, <a href=\"#VkPhysicalDeviceVulkan13Features\">VkPhysicalDeviceVulkan13Features</a>, <a href=\"#VkPhysicalDeviceVulkanMemoryModelFeatures\">VkPhysicalDeviceVulkanMemoryModelFeatures</a>, <a href=\"#VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR\">VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT\">VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceYcbcrDegammaFeaturesQCOM\">VkPhysicalDeviceYcbcrDegammaFeaturesQCOM</a>, <a href=\"#VkPhysicalDeviceYcbcrImageArraysFeaturesEXT\">VkPhysicalDeviceYcbcrImageArraysFeaturesEXT</a>, or <a href=\"#VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures\">VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceCreateInfo-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique, with the exception of structures of type <a href=\"#VkDeviceDeviceMemoryReportCreateInfoEXT\">VkDeviceDeviceMemoryReportCreateInfoEXT</a> or <a href=\"#VkDevicePrivateDataCreateInfo\">VkDevicePrivateDataCreateInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceCreateInfo-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceCreateInfo-pQueueCreateInfos-parameter",
          "text": "<code>pQueueCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueCreateInfoCount</code> valid <a href=\"#VkDeviceQueueCreateInfo\">VkDeviceQueueCreateInfo</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceCreateInfo-ppEnabledLayerNames-parameter",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-parameter",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceCreateInfo-pEnabledFeatures-parameter",
          "text": "If <code>pEnabledFeatures</code> is not <code>NULL</code>, <code>pEnabledFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPhysicalDeviceFeatures\">VkPhysicalDeviceFeatures</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceCreateInfo-queueCreateInfoCount-arraylength",
          "text": "<code>queueCreateInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkDeviceGroupDeviceCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-00375",
          "text": "Each element of <code>pPhysicalDevices</code> <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-00376",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-physicalDeviceCount-00377",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-parameter",
          "text": "If <code>physicalDeviceCount</code> is not <code>0</code>, <code>pPhysicalDevices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>physicalDeviceCount</code> valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handles",
          "page": "vkspec"
        }
      ]
    },
    "VkDeviceMemoryOverallocationCreateInfoAMD": {
      "core": [
        {
          "vuid": "VUID-VkDeviceMemoryOverallocationCreateInfoAMD-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceMemoryOverallocationCreateInfoAMD-overallocationBehavior-parameter",
          "text": "<code>overallocationBehavior</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkMemoryOverallocationBehaviorAMD\">VkMemoryOverallocationBehaviorAMD</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkDeviceDiagnosticsConfigCreateInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkDeviceDiagnosticsConfigCreateInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceDiagnosticsConfigCreateInfoNV-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDeviceDiagnosticsConfigFlagBitsNV\">VkDeviceDiagnosticsConfigFlagBitsNV</a> values",
          "page": "vkspec"
        }
      ]
    },
    "VkDeviceDeviceMemoryReportCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkDeviceDeviceMemoryReportCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceDeviceMemoryReportCreateInfoEXT-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceDeviceMemoryReportCreateInfoEXT-pfnUserCallback-parameter",
          "text": "<code>pfnUserCallback</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#PFN_vkDeviceMemoryReportCallbackEXT\">PFN_vkDeviceMemoryReportCallbackEXT</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceDeviceMemoryReportCreateInfoEXT-pUserData-parameter",
          "text": "<code>pUserData</code> <strong class=\"purple\">must</strong> be a pointer value",
          "page": "vkspec"
        }
      ]
    },
    "VkDeviceMemoryReportCallbackDataEXT": {
      "core": [
        {
          "vuid": "VUID-VkDeviceMemoryReportCallbackDataEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceMemoryReportCallbackDataEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkDevicePrivateDataCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkDevicePrivateDataCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkDevicePipelineBinaryInternalCacheControlKHR": {
      "core": [
        {
          "vuid": "VUID-VkDevicePipelineBinaryInternalCacheControlKHR-disableInternalCache-09602",
          "text": "If <a href=\"#VkPhysicalDevicePipelineBinaryPropertiesKHR\">VkPhysicalDevicePipelineBinaryPropertiesKHR</a>::<code>pipelineBinaryInternalCacheControl</code> is <code>VK_FALSE</code>, <code>disableInternalCache</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDevicePipelineBinaryInternalCacheControlKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroyDevice": {
      "core": [
        {
          "vuid": "VUID-vkDestroyDevice-device-05137",
          "text": "All child objects created on <code>device</code> <strong class=\"purple\">must</strong> have been destroyed prior to destroying <code>device</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyDevice-device-00379",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyDevice-device-00380",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyDevice-device-parameter",
          "text": "If <code>device</code> is not <code>NULL</code>, <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyDevice-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkDeviceQueueCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkDeviceQueueCreateInfo-queueFamilyIndex-00381",
          "text": "<code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceQueueCreateInfo-queueCount-00382",
          "text": "<code>queueCount</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>queueCount</code> member of the <code>VkQueueFamilyProperties</code> structure, as returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code> in the <code>pQueueFamilyProperties</code>[queueFamilyIndex]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceQueueCreateInfo-pQueuePriorities-00383",
          "text": "Each element of <code>pQueuePriorities</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code> inclusive",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceQueueCreateInfo-flags-02861",
          "text": "If the <a href=\"#features-protectedMemory\"><code>protectedMemory</code></a> feature is not enabled, the <code>VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT</code> bit of <code>flags</code> <strong class=\"purple\">must</strong> not be set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceQueueCreateInfo-flags-06449",
          "text": "If <code>flags</code> includes <code>VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT</code>, <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be the index of a queue family that includes the <code>VK_QUEUE_PROTECTED_BIT</code> capability",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceQueueCreateInfo-pNext-09398",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkDeviceQueueShaderCoreControlCreateInfoARM\">VkDeviceQueueShaderCoreControlCreateInfoARM</a> structure then <a href=\"#VkPhysicalDeviceSchedulingControlsPropertiesARM\">VkPhysicalDeviceSchedulingControlsPropertiesARM</a>::<code>schedulingControlsFlags</code> <strong class=\"purple\">must</strong> contain <code>VK_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_SHADER_CORE_COUNT_ARM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceQueueCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceQueueCreateInfo-pNext-pNext",
          "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=\"#VkDeviceQueueGlobalPriorityCreateInfoKHR\">VkDeviceQueueGlobalPriorityCreateInfoKHR</a> or <a href=\"#VkDeviceQueueShaderCoreControlCreateInfoARM\">VkDeviceQueueShaderCoreControlCreateInfoARM</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceQueueCreateInfo-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceQueueCreateInfo-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDeviceQueueCreateFlagBits\">VkDeviceQueueCreateFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceQueueCreateInfo-pQueuePriorities-parameter",
          "text": "<code>pQueuePriorities</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueCount</code> <code>float</code> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceQueueCreateInfo-queueCount-arraylength",
          "text": "<code>queueCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkDeviceQueueGlobalPriorityCreateInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkDeviceQueueGlobalPriorityCreateInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceQueueGlobalPriorityCreateInfoKHR-globalPriority-parameter",
          "text": "<code>globalPriority</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueueGlobalPriorityKHR\">VkQueueGlobalPriorityKHR</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkDeviceQueueShaderCoreControlCreateInfoARM": {
      "core": [
        {
          "vuid": "VUID-VkDeviceQueueShaderCoreControlCreateInfoARM-shaderCoreCount-09399",
          "text": "<code>shaderCoreCount</code> <strong class=\"purple\">must</strong> be greater than 0 and less than or equal to the total number of shader cores as reported via <a href=\"#VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM\">VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM</a>::<code>shaderCoreCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceQueueShaderCoreControlCreateInfoARM-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetDeviceQueue": {
      "core": [
        {
          "vuid": "VUID-vkGetDeviceQueue-queueFamilyIndex-00384",
          "text": "<code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be one of the queue family indices specified when <code>device</code> was created, via the <a href=\"#VkDeviceQueueCreateInfo\">VkDeviceQueueCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceQueue-queueIndex-00385",
          "text": "<code>queueIndex</code> <strong class=\"purple\">must</strong> be less than the value of <a href=\"#VkDeviceQueueCreateInfo\">VkDeviceQueueCreateInfo</a>::<code>queueCount</code> for the queue family indicated by <code>queueFamilyIndex</code> when <code>device</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceQueue-flags-01841",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceQueue-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceQueue-pQueue-parameter",
          "text": "<code>pQueue</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkQueue\">VkQueue</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "vkGetDeviceQueue2": {
      "core": [
        {
          "vuid": "VUID-vkGetDeviceQueue2-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceQueue2-pQueueInfo-parameter",
          "text": "<code>pQueueInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDeviceQueueInfo2\">VkDeviceQueueInfo2</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceQueue2-pQueue-parameter",
          "text": "<code>pQueue</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkQueue\">VkQueue</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkDeviceQueueInfo2": {
      "core": [
        {
          "vuid": "VUID-VkDeviceQueueInfo2-queueFamilyIndex-01842",
          "text": "<code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be one of the queue family indices specified when <code>device</code> was created, via the <a href=\"#VkDeviceQueueCreateInfo\">VkDeviceQueueCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceQueueInfo2-flags-06225",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be equal to <a href=\"#VkDeviceQueueCreateInfo\">VkDeviceQueueCreateInfo</a>::<code>flags</code> for a <a href=\"#VkDeviceQueueCreateInfo\">VkDeviceQueueCreateInfo</a> structure for the queue family indicated by <code>queueFamilyIndex</code> when <code>device</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceQueueInfo2-queueIndex-01843",
          "text": "<code>queueIndex</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkDeviceQueueCreateInfo\">VkDeviceQueueCreateInfo</a>::<code>queueCount</code> for the corresponding queue family and flags indicated by <code>queueFamilyIndex</code> and <code>flags</code> when <code>device</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceQueueInfo2-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceQueueInfo2-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceQueueInfo2-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDeviceQueueCreateFlagBits\">VkDeviceQueueCreateFlagBits</a> values",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateCommandPool": {
      "core": [
        {
          "vuid": "VUID-vkCreateCommandPool-queueFamilyIndex-01937",
          "text": "<code>pCreateInfo-&gt;queueFamilyIndex</code> <strong class=\"purple\">must</strong> be the index of a queue family available in the logical device <code>device</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateCommandPool-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateCommandPool-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCommandPoolCreateInfo\">VkCommandPoolCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateCommandPool-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateCommandPool-pCommandPool-parameter",
          "text": "<code>pCommandPool</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkCommandPool\">VkCommandPool</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkCommandPoolCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkCommandPoolCreateInfo-flags-02860",
          "text": "If the <a href=\"#features-protectedMemory\"><code>protectedMemory</code></a> feature is not enabled, the <code>VK_COMMAND_POOL_CREATE_PROTECTED_BIT</code> bit of <code>flags</code> <strong class=\"purple\">must</strong> not be set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandPoolCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandPoolCreateInfo-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandPoolCreateInfo-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCommandPoolCreateFlagBits\">VkCommandPoolCreateFlagBits</a> values",
          "page": "vkspec"
        }
      ]
    },
    "vkTrimCommandPool": {
      "core": [
        {
          "vuid": "VUID-vkTrimCommandPool-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkTrimCommandPool-commandPool-parameter",
          "text": "<code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandPool\">VkCommandPool</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkTrimCommandPool-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkTrimCommandPool-commandPool-parent",
          "text": "<code>commandPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkResetCommandPool": {
      "core": [
        {
          "vuid": "VUID-vkResetCommandPool-commandPool-00040",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkResetCommandPool-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkResetCommandPool-commandPool-parameter",
          "text": "<code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandPool\">VkCommandPool</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkResetCommandPool-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCommandPoolResetFlagBits\">VkCommandPoolResetFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkResetCommandPool-commandPool-parent",
          "text": "<code>commandPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroyCommandPool": {
      "core": [
        {
          "vuid": "VUID-vkDestroyCommandPool-commandPool-00041",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyCommandPool-commandPool-00042",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyCommandPool-commandPool-00043",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyCommandPool-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyCommandPool-commandPool-parameter",
          "text": "If <code>commandPool</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandPool\">VkCommandPool</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyCommandPool-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyCommandPool-commandPool-parent",
          "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>",
          "page": "vkspec"
        }
      ]
    },
    "vkAllocateCommandBuffers": {
      "core": [
        {
          "vuid": "VUID-vkAllocateCommandBuffers-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAllocateCommandBuffers-pAllocateInfo-parameter",
          "text": "<code>pAllocateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCommandBufferAllocateInfo\">VkCommandBufferAllocateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAllocateCommandBuffers-pCommandBuffers-parameter",
          "text": "<code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pAllocateInfo-&gt;commandBufferCount</code> <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAllocateCommandBuffers-pAllocateInfo::commandBufferCount-arraylength",
          "text": "<code>pAllocateInfo-&gt;commandBufferCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkCommandBufferAllocateInfo": {
      "core": [
        {
          "vuid": "VUID-VkCommandBufferAllocateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferAllocateInfo-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferAllocateInfo-commandPool-parameter",
          "text": "<code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandPool\">VkCommandPool</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferAllocateInfo-level-parameter",
          "text": "<code>level</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBufferLevel\">VkCommandBufferLevel</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkResetCommandBuffer": {
      "core": [
        {
          "vuid": "VUID-vkResetCommandBuffer-commandBuffer-00045",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkResetCommandBuffer-commandBuffer-00046",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkResetCommandBuffer-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkResetCommandBuffer-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCommandBufferResetFlagBits\">VkCommandBufferResetFlagBits</a> values",
          "page": "vkspec"
        }
      ]
    },
    "vkFreeCommandBuffers": {
      "core": [
        {
          "vuid": "VUID-vkFreeCommandBuffers-pCommandBuffers-00047",
          "text": "All elements of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkFreeCommandBuffers-pCommandBuffers-00048",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkFreeCommandBuffers-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkFreeCommandBuffers-commandPool-parameter",
          "text": "<code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandPool\">VkCommandPool</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkFreeCommandBuffers-commandBufferCount-arraylength",
          "text": "<code>commandBufferCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkFreeCommandBuffers-commandPool-parent",
          "text": "<code>commandPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkFreeCommandBuffers-pCommandBuffers-parent",
          "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>",
          "page": "vkspec"
        }
      ]
    },
    "vkBeginCommandBuffer": {
      "core": [
        {
          "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00049",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">recording or pending state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00050",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00051",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00052",
          "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 <a href=\"#features-occlusionQueryPrecise\"><code>occlusionQueryPrecise</code></a> feature is not enabled, then <code>pBeginInfo-&gt;pInheritanceInfo-&gt;queryFlags</code> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_CONTROL_PRECISE_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-02840",
          "text": "If <code>commandBuffer</code> is a primary command buffer, then <code>pBeginInfo-&gt;flags</code> <strong class=\"purple\">must</strong> not set both the <code>VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT</code> and the <code>VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT</code> flags",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBeginCommandBuffer-pBeginInfo-parameter",
          "text": "<code>pBeginInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCommandBufferBeginInfo\">VkCommandBufferBeginInfo</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkCommandBufferBeginInfo": {
      "core": [
        {
          "vuid": "VUID-VkCommandBufferBeginInfo-flags-09123",
          "text": "If <code>flags</code> contains <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code>, the <a href=\"#VkCommandPool\">VkCommandPool</a> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferBeginInfo-flags-00055",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferBeginInfo-flags-09240",
          "text": "If <code>flags</code> contains <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code> and the <a href=\"#features-dynamicRendering\"><code>dynamicRendering</code></a> feature is not enabled, the <code>renderPass</code> member of <code>pInheritanceInfo</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferBeginInfo-flags-06002",
          "text": "If <code>flags</code> contains <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code> and the <code>renderPass</code> member of <code>pInheritanceInfo</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the <code>pNext</code> chain of <code>pInheritanceInfo</code> <strong class=\"purple\">must</strong> include a <a href=\"#VkCommandBufferInheritanceRenderingInfo\">VkCommandBufferInheritanceRenderingInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferBeginInfo-flags-06003",
          "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> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>pNext</code> chain of <code>pInheritanceInfo</code> includes a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, the <code>colorAttachmentCount</code> member of that structure <strong class=\"purple\">must</strong> be equal to the value of <a href=\"#VkCommandBufferInheritanceRenderingInfo\">VkCommandBufferInheritanceRenderingInfo</a>::<code>colorAttachmentCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferBeginInfo-flags-06000",
          "text": "If <code>flags</code> contains <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code> and the <code>renderPass</code> member of <code>pInheritanceInfo</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the <code>renderPass</code> member of <code>pInheritanceInfo</code> <strong class=\"purple\">must</strong> be a valid <code>VkRenderPass</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferBeginInfo-flags-06001",
          "text": "If <code>flags</code> contains <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code> and the <code>renderPass</code> member of <code>pInheritanceInfo</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferBeginInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferBeginInfo-pNext-pNext",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferBeginInfo-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferBeginInfo-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCommandBufferUsageFlagBits\">VkCommandBufferUsageFlagBits</a> values",
          "page": "vkspec"
        }
      ]
    },
    "VkCommandBufferInheritanceInfo": {
      "core": [
        {
          "vuid": "VUID-VkCommandBufferInheritanceInfo-occlusionQueryEnable-00056",
          "text": "If the <a href=\"#features-inheritedQueries\"><code>inheritedQueries</code></a> feature is not enabled, <code>occlusionQueryEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferInheritanceInfo-queryFlags-00057",
          "text": "If the <a href=\"#features-inheritedQueries\"><code>inheritedQueries</code></a> feature is enabled, <code>queryFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryControlFlagBits\">VkQueryControlFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferInheritanceInfo-queryFlags-02788",
          "text": "If the <a href=\"#features-inheritedQueries\"><code>inheritedQueries</code></a> feature is not enabled, <code>queryFlags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferInheritanceInfo-pipelineStatistics-02789",
          "text": "If the <a href=\"#features-pipelineStatisticsQuery\"><code>pipelineStatisticsQuery</code></a> feature is enabled, <code>pipelineStatistics</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryPipelineStatisticFlagBits\">VkQueryPipelineStatisticFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferInheritanceInfo-pipelineStatistics-00058",
          "text": "If the <a href=\"#features-pipelineStatisticsQuery\"><code>pipelineStatisticsQuery</code></a> feature is not enabled, <code>pipelineStatistics</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferInheritanceInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferInheritanceInfo-pNext-pNext",
          "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=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a>, <a href=\"#VkCommandBufferInheritanceConditionalRenderingInfoEXT\">VkCommandBufferInheritanceConditionalRenderingInfoEXT</a>, <a href=\"#VkCommandBufferInheritanceRenderPassTransformInfoQCOM\">VkCommandBufferInheritanceRenderPassTransformInfoQCOM</a>, <a href=\"#VkCommandBufferInheritanceRenderingInfo\">VkCommandBufferInheritanceRenderingInfo</a>, <a href=\"#VkCommandBufferInheritanceViewportScissorInfoNV\">VkCommandBufferInheritanceViewportScissorInfoNV</a>, <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>, <a href=\"#VkMultiviewPerViewAttributesInfoNVX\">VkMultiviewPerViewAttributesInfoNVX</a>, <a href=\"#VkRenderingAttachmentLocationInfoKHR\">VkRenderingAttachmentLocationInfoKHR</a>, or <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferInheritanceInfo-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferInheritanceInfo-commonparent",
          "text": "Both of <code>framebuffer</code>, and <code>renderPass</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkCommandBufferInheritanceConditionalRenderingInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkCommandBufferInheritanceConditionalRenderingInfoEXT-conditionalRenderingEnable-01977",
          "text": "If the <a href=\"#features-inheritedConditionalRendering\"><code>inheritedConditionalRendering</code></a> feature is not enabled, <code>conditionalRenderingEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferInheritanceConditionalRenderingInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkCommandBufferInheritanceRenderPassTransformInfoQCOM": {
      "core": [
        {
          "vuid": "VUID-VkCommandBufferInheritanceRenderPassTransformInfoQCOM-transform-02864",
          "text": "<code>transform</code> <strong class=\"purple\">must</strong> be <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code>, <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code>, or <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferInheritanceRenderPassTransformInfoQCOM-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkCommandBufferInheritanceViewportScissorInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkCommandBufferInheritanceViewportScissorInfoNV-viewportScissor2D-04782",
          "text": "If the <a href=\"#features-inheritedViewportScissor2D\"><code>inheritedViewportScissor2D</code></a> feature is not enabled, <code>viewportScissor2D</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferInheritanceViewportScissorInfoNV-viewportScissor2D-04783",
          "text": "If the <a href=\"#features-multiViewport\"><code>multiViewport</code></a> feature is not enabled and <code>viewportScissor2D</code> is <code>VK_TRUE</code>, then <code>viewportDepthCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferInheritanceViewportScissorInfoNV-viewportScissor2D-04784",
          "text": "If <code>viewportScissor2D</code> is <code>VK_TRUE</code>, then <code>viewportDepthCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferInheritanceViewportScissorInfoNV-viewportScissor2D-04785",
          "text": "If <code>viewportScissor2D</code> is <code>VK_TRUE</code>, then <code>pViewportDepths</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportDepthCount</code> valid <code>VkViewport</code> structures, except any requirements on <code>x</code>, <code>y</code>, <code>width</code>, and <code>height</code> do not apply",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferInheritanceViewportScissorInfoNV-viewportScissor2D-04786",
          "text": "If <code>viewportScissor2D</code> is <code>VK_TRUE</code>, then the command buffer <strong class=\"purple\">must</strong> be recorded with the <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferInheritanceViewportScissorInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkCommandBufferInheritanceRenderingInfo": {
      "core": [
        {
          "vuid": "VUID-VkCommandBufferInheritanceRenderingInfo-colorAttachmentCount-06004",
          "text": "If <code>colorAttachmentCount</code> is not <code>0</code>, <code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferInheritanceRenderingInfo-variableMultisampleRate-06005",
          "text": "If the <a href=\"#features-variableMultisampleRate\"><code>variableMultisampleRate</code></a> feature is not enabled, <code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferInheritanceRenderingInfo-depthAttachmentFormat-06540",
          "text": "If <code>depthAttachmentFormat</code> is not <code>VK_FORMAT_UNDEFINED</code>, it <strong class=\"purple\">must</strong> be a format that includes a depth component",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferInheritanceRenderingInfo-depthAttachmentFormat-06007",
          "text": "If <code>depthAttachmentFormat</code> is not <code>VK_FORMAT_UNDEFINED</code>, it <strong class=\"purple\">must</strong> be a format with <a href=\"#potential-format-features\">potential format features</a> that include <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferInheritanceRenderingInfo-pColorAttachmentFormats-06492",
          "text": "If any element of <code>pColorAttachmentFormats</code> is not <code>VK_FORMAT_UNDEFINED</code>, it <strong class=\"purple\">must</strong> be a format with <a href=\"#potential-format-features\">potential format features</a> that include <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code> , or <code>VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV</code> if the <a href=\"#features-linearColorAttachment\"><code>linearColorAttachment</code></a> feature is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferInheritanceRenderingInfo-stencilAttachmentFormat-06541",
          "text": "If <code>stencilAttachmentFormat</code> is not <code>VK_FORMAT_UNDEFINED</code>, it <strong class=\"purple\">must</strong> be a format that includes a stencil aspect",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferInheritanceRenderingInfo-stencilAttachmentFormat-06199",
          "text": "If <code>stencilAttachmentFormat</code> is not <code>VK_FORMAT_UNDEFINED</code>, it <strong class=\"purple\">must</strong> be a format with <a href=\"#potential-format-features\">potential format features</a> that include <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferInheritanceRenderingInfo-depthAttachmentFormat-06200",
          "text": "If <code>depthAttachmentFormat</code> is not <code>VK_FORMAT_UNDEFINED</code> and <code>stencilAttachmentFormat</code> is not <code>VK_FORMAT_UNDEFINED</code>, <code>depthAttachmentFormat</code> <strong class=\"purple\">must</strong> equal <code>stencilAttachmentFormat</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferInheritanceRenderingInfo-multiview-06008",
          "text": "If the <a href=\"#features-multiview\"><code>multiview</code></a> feature is not enabled, <code>viewMask</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferInheritanceRenderingInfo-viewMask-06009",
          "text": "The index of the most significant bit in <code>viewMask</code> <strong class=\"purple\">must</strong> be less than <a href=\"#limits-maxMultiviewViewCount\"><code>maxMultiviewViewCount</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferInheritanceRenderingInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferInheritanceRenderingInfo-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkRenderingFlagBits\">VkRenderingFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferInheritanceRenderingInfo-pColorAttachmentFormats-parameter",
          "text": "If <code>colorAttachmentCount</code> is not <code>0</code>, <code>pColorAttachmentFormats</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>colorAttachmentCount</code> valid <a href=\"#VkFormat\">VkFormat</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferInheritanceRenderingInfo-depthAttachmentFormat-parameter",
          "text": "<code>depthAttachmentFormat</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferInheritanceRenderingInfo-stencilAttachmentFormat-parameter",
          "text": "<code>stencilAttachmentFormat</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferInheritanceRenderingInfo-rasterizationSamples-parameter",
          "text": "If <code>rasterizationSamples</code> is not <code>0</code>, <code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkAttachmentSampleCountInfoAMD": {
      "core": [
        {
          "vuid": "VUID-VkAttachmentSampleCountInfoAMD-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkEndCommandBuffer": {
      "core": [
        {
          "vuid": "VUID-vkEndCommandBuffer-commandBuffer-00059",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkEndCommandBuffer-commandBuffer-00060",
          "text": "If <code>commandBuffer</code> is a primary command buffer, there <strong class=\"purple\">must</strong> not be an active render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkEndCommandBuffer-commandBuffer-00061",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkEndCommandBuffer-None-01978",
          "text": "Conditional rendering <strong class=\"purple\">must</strong> not be <a href=\"#active-conditional-rendering\">active</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkEndCommandBuffer-None-06991",
          "text": "There <strong class=\"purple\">must</strong> be no video session object bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkEndCommandBuffer-commandBuffer-01815",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkEndCommandBuffer-commandBuffer-00062",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkEndCommandBuffer-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "vkQueueSubmit2": {
      "core": [
        {
          "vuid": "VUID-vkQueueSubmit2-fence-04894",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSubmit2-fence-04895",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSubmit2-synchronization2-03866",
          "text": "The <a href=\"#features-synchronization2\"><code>synchronization2</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSubmit2-commandBuffer-03867",
          "text": "If a command recorded into the <code>commandBuffer</code> member of any element of the <code>pCommandBufferInfos</code> member of any element of <code>pSubmits</code> referenced a <a href=\"#VkEvent\">VkEvent</a>, that event <strong class=\"purple\">must</strong> not be referenced by a command that has been submitted to another queue and is still in the <em>pending state</em>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSubmit2-semaphore-03868",
          "text": "The <code>semaphore</code> member of any binary semaphore element of the <code>pSignalSemaphoreInfos</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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSubmit2-stageMask-03869",
          "text": "The <code>stageMask</code> member of any element of the <code>pSignalSemaphoreInfos</code> member of any element of <code>pSubmits</code> <strong class=\"purple\">must</strong> only include pipeline stages that are supported by the queue family which <code>queue</code> belongs to",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSubmit2-stageMask-03870",
          "text": "The <code>stageMask</code> member of any element of the <code>pWaitSemaphoreInfos</code> member of any element of <code>pSubmits</code> <strong class=\"purple\">must</strong> only include pipeline stages that are supported by the queue family which <code>queue</code> belongs to",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSubmit2-semaphore-03871",
          "text": "When a semaphore wait operation for a binary semaphore is executed, as defined by the <code>semaphore</code> member of any element of the <code>pWaitSemaphoreInfos</code> member of any element of <code>pSubmits</code>, there <strong class=\"purple\">must</strong> be no other queues waiting on the same semaphore",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSubmit2-semaphore-03873",
          "text": "The <code>semaphore</code> member of any element of the <code>pWaitSemaphoreInfos</code> member of any element of <code>pSubmits</code> that was created with a <a href=\"#VkSemaphoreTypeKHR\">VkSemaphoreTypeKHR</a> of <code>VK_SEMAPHORE_TYPE_BINARY_KHR</code> <strong class=\"purple\">must</strong> reference a semaphore signal operation that has been submitted for execution and any <a href=\"#synchronization-semaphores-signaling\">semaphore signal operations</a> on which it depends <strong class=\"purple\">must</strong> have also been submitted for execution",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSubmit2-commandBuffer-03874",
          "text": "The <code>commandBuffer</code> member of any element of the <code>pCommandBufferInfos</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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSubmit2-commandBuffer-03875",
          "text": "If a command recorded into the <code>commandBuffer</code> member of any element of the <code>pCommandBufferInfos</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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSubmit2-commandBuffer-03876",
          "text": "Any <a href=\"#commandbuffers-secondary\">secondary command buffers recorded</a> into the <code>commandBuffer</code> member of any element of the <code>pCommandBufferInfos</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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSubmit2-commandBuffer-03877",
          "text": "If any <a href=\"#commandbuffers-secondary\">secondary command buffers recorded</a> into the <code>commandBuffer</code> member of any element of the <code>pCommandBufferInfos</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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSubmit2-commandBuffer-03878",
          "text": "The <code>commandBuffer</code> member of any element of the <code>pCommandBufferInfos</code> member of any 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSubmit2-commandBuffer-03879",
          "text": "If a command recorded into the <code>commandBuffer</code> member of any element of the <code>pCommandBufferInfos</code> member of any element of <code>pSubmits</code> includes a <a href=\"#synchronization-queue-transfers-acquire\">Queue Family Ownership Transfer Acquire Operation</a>, there <strong class=\"purple\">must</strong> exist a previously submitted <a href=\"#synchronization-queue-transfers-release\">Queue Family Ownership 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSubmit2-commandBuffer-03880",
          "text": "If a command recorded into the <code>commandBuffer</code> member of any element of the <code>pCommandBufferInfos</code> member of any element of <code>pSubmits</code> was a <a href=\"#vkCmdBeginQuery\">vkCmdBeginQuery</a> whose <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, the <a href=\"#profiling-lock\">profiling lock</a> <strong class=\"purple\">must</strong> have been held continuously on the <code>VkDevice</code> that <code>queue</code> was retrieved from, throughout recording of those command buffers",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSubmit2-queue-06447",
          "text": "If <code>queue</code> was not created with <code>VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT</code>, the <code>flags</code> member of any element of <code>pSubmits</code> <strong class=\"purple\">must</strong> not include <code>VK_SUBMIT_PROTECTED_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSubmit2-queue-parameter",
          "text": "<code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSubmit2-pSubmits-parameter",
          "text": "If <code>submitCount</code> is not <code>0</code>, <code>pSubmits</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>submitCount</code> valid <a href=\"#VkSubmitInfo2\">VkSubmitInfo2</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSubmit2-fence-parameter",
          "text": "If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFence\">VkFence</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSubmit2-commonparent",
          "text": "Both of <code>fence</code>, and <code>queue</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkSubmitInfo2": {
      "core": [
        {
          "vuid": "VUID-VkSubmitInfo2-semaphore-03881",
          "text": "If the same semaphore is used as the <code>semaphore</code> member of both an element of <code>pSignalSemaphoreInfos</code> and <code>pWaitSemaphoreInfos</code>, and that semaphore is a timeline semaphore, the <code>value</code> member of the <code>pSignalSemaphoreInfos</code> element <strong class=\"purple\">must</strong> be greater than the <code>value</code> member of the <code>pWaitSemaphoreInfos</code> element",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo2-semaphore-03882",
          "text": "If the <code>semaphore</code> member of any element of <code>pSignalSemaphoreInfos</code> is a timeline semaphore, the <code>value</code> member of that element <strong class=\"purple\">must</strong> have a value greater than the current value of the semaphore when the <a href=\"#synchronization-semaphores-signaling\">semaphore signal operation</a> is executed",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo2-semaphore-03883",
          "text": "If the <code>semaphore</code> member of any element of <code>pSignalSemaphoreInfos</code> is a timeline semaphore, the <code>value</code> member of that element <strong class=\"purple\">must</strong> have a value which does not differ from the current value of the semaphore or the value of any outstanding semaphore wait or signal operation on that semaphore by more than <a href=\"#limits-maxTimelineSemaphoreValueDifference\"><code>maxTimelineSemaphoreValueDifference</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo2-semaphore-03884",
          "text": "If the <code>semaphore</code> member of any element of <code>pWaitSemaphoreInfos</code> is a timeline semaphore, the <code>value</code> member of that element <strong class=\"purple\">must</strong> have a value which does not differ from the current value of the semaphore or the value of any outstanding semaphore wait or signal operation on that semaphore by more than <a href=\"#limits-maxTimelineSemaphoreValueDifference\"><code>maxTimelineSemaphoreValueDifference</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo2-flags-03886",
          "text": "If <code>flags</code> includes <code>VK_SUBMIT_PROTECTED_BIT</code>, all elements of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be protected command buffers",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo2-flags-03887",
          "text": "If <code>flags</code> does not include <code>VK_SUBMIT_PROTECTED_BIT</code>, each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> not be a protected command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo2KHR-commandBuffer-06192",
          "text": "If any <code>commandBuffer</code> member of an element of <code>pCommandBufferInfos</code> contains any <a href=\"#renderpass-suspension\">resumed render pass instances</a>, they <strong class=\"purple\">must</strong> be suspended by a render pass instance earlier in submission order within <code>pCommandBufferInfos</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo2KHR-commandBuffer-06010",
          "text": "If any <code>commandBuffer</code> member of an element of <code>pCommandBufferInfos</code> contains any <a href=\"#renderpass-suspension\">suspended render pass instances</a>, they <strong class=\"purple\">must</strong> be resumed by a render pass instance later in submission order within <code>pCommandBufferInfos</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo2KHR-commandBuffer-06011",
          "text": "If any <code>commandBuffer</code> member of an element of <code>pCommandBufferInfos</code> contains any <a href=\"#renderpass-suspension\">suspended render pass instances</a>, there <strong class=\"purple\">must</strong> be no action or synchronization commands between that render pass instance and the render pass instance that resumes it",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo2KHR-commandBuffer-06012",
          "text": "If any <code>commandBuffer</code> member of an element of <code>pCommandBufferInfos</code> contains any <a href=\"#renderpass-suspension\">suspended render pass instances</a>, there <strong class=\"purple\">must</strong> be no render pass instances between that render pass instance and the render pass instance that resumes it",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo2KHR-variableSampleLocations-06013",
          "text": "If the <a href=\"#limits-variableSampleLocations\"><code>variableSampleLocations</code></a> limit is not supported, and any <code>commandBuffer</code> member of an element of <code>pCommandBufferInfos</code> contains any <a href=\"#renderpass-suspension\">suspended render pass instances</a>, where a graphics pipeline has been bound, any pipelines bound in the render pass instance that resumes it, or any subsequent render pass instances that resume from that one and so on, <strong class=\"purple\">must</strong> use the same sample locations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo2-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBMIT_INFO_2</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo2-pNext-pNext",
          "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=\"#VkFrameBoundaryEXT\">VkFrameBoundaryEXT</a>, <a href=\"#VkLatencySubmissionPresentIdNV\">VkLatencySubmissionPresentIdNV</a>, <a href=\"#VkPerformanceQuerySubmitInfoKHR\">VkPerformanceQuerySubmitInfoKHR</a>, <a href=\"#VkWin32KeyedMutexAcquireReleaseInfoKHR\">VkWin32KeyedMutexAcquireReleaseInfoKHR</a>, or <a href=\"#VkWin32KeyedMutexAcquireReleaseInfoNV\">VkWin32KeyedMutexAcquireReleaseInfoNV</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo2-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo2-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSubmitFlagBits\">VkSubmitFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo2-pWaitSemaphoreInfos-parameter",
          "text": "If <code>waitSemaphoreInfoCount</code> is not <code>0</code>, <code>pWaitSemaphoreInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>waitSemaphoreInfoCount</code> valid <a href=\"#VkSemaphoreSubmitInfo\">VkSemaphoreSubmitInfo</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo2-pCommandBufferInfos-parameter",
          "text": "If <code>commandBufferInfoCount</code> is not <code>0</code>, <code>pCommandBufferInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>commandBufferInfoCount</code> valid <a href=\"#VkCommandBufferSubmitInfo\">VkCommandBufferSubmitInfo</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo2-pSignalSemaphoreInfos-parameter",
          "text": "If <code>signalSemaphoreInfoCount</code> is not <code>0</code>, <code>pSignalSemaphoreInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>signalSemaphoreInfoCount</code> valid <a href=\"#VkSemaphoreSubmitInfo\">VkSemaphoreSubmitInfo</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkSemaphoreSubmitInfo": {
      "core": [
        {
          "vuid": "VUID-VkSemaphoreSubmitInfo-stageMask-03929",
          "text": "If the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreSubmitInfo-stageMask-03930",
          "text": "If the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreSubmitInfo-stageMask-03931",
          "text": "If the <a href=\"#features-conditionalRendering\"><code>conditionalRendering</code></a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreSubmitInfo-stageMask-03932",
          "text": "If the <a href=\"#features-fragmentDensityMap\"><code>fragmentDensityMap</code></a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreSubmitInfo-stageMask-03933",
          "text": "If the <a href=\"#features-transformFeedback\"><code>transformFeedback</code></a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreSubmitInfo-stageMask-03934",
          "text": "If the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreSubmitInfo-stageMask-03935",
          "text": "If the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreSubmitInfo-stageMask-07316",
          "text": "If neither the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> or <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> are enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreSubmitInfo-stageMask-04957",
          "text": "If the <a href=\"#features-subpassShading\"><code>subpassShading</code></a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreSubmitInfo-stageMask-04995",
          "text": "If the <a href=\"#features-invocationMask\"><code>invocationMask</code></a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreSubmitInfo-stageMask-07946",
          "text": "If neither the <a href=\"#VK_NV_ray_tracing\">VK_NV_ray_tracing</a> extension or <a href=\"#features-rayTracingPipeline\"><code>rayTracingPipeline</code> feature</a> are enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreSubmitInfo-device-03888",
          "text": "If the <code>device</code> that <code>semaphore</code> was created on is not a device group, <code>deviceIndex</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreSubmitInfo-device-03889",
          "text": "If the <code>device</code> that <code>semaphore</code> was created on is a device group, <code>deviceIndex</code> <strong class=\"purple\">must</strong> be a valid device index",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreSubmitInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreSubmitInfo-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreSubmitInfo-semaphore-parameter",
          "text": "<code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphore\">VkSemaphore</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreSubmitInfo-stageMask-parameter",
          "text": "<code>stageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits2\">VkPipelineStageFlagBits2</a> values",
          "page": "vkspec"
        }
      ]
    },
    "VkCommandBufferSubmitInfo": {
      "core": [
        {
          "vuid": "VUID-VkCommandBufferSubmitInfo-commandBuffer-03890",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> not have been allocated with <code>VK_COMMAND_BUFFER_LEVEL_SECONDARY</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferSubmitInfo-deviceMask-03891",
          "text": "If <code>deviceMask</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be a valid device mask",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferSubmitInfo-commandBuffer-09445",
          "text": "If any render pass instance in <code>commandBuffer</code> was recorded with a <a href=\"#VkRenderPassStripeBeginInfoARM\">VkRenderPassStripeBeginInfoARM</a> structure in its pNext chain and did not specify the <code>VK_RENDERING_RESUMING_BIT</code> flag, a <a href=\"#VkRenderPassStripeSubmitInfoARM\">VkRenderPassStripeSubmitInfoARM</a> <strong class=\"purple\">must</strong> be included in the <code>pNext</code> chain",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferSubmitInfo-pNext-09446",
          "text": "If a <a href=\"#VkRenderPassStripeSubmitInfoARM\">VkRenderPassStripeSubmitInfoARM</a> is included in the <code>pNext</code> chain, the value of <a href=\"#VkRenderPassStripeSubmitInfoARM\">VkRenderPassStripeSubmitInfoARM</a>::<code>stripeSemaphoreInfoCount</code> <strong class=\"purple\">must</strong> be equal to the sum of the <a href=\"#VkRenderPassStripeBeginInfoARM\">VkRenderPassStripeBeginInfoARM</a>::<code>stripeInfoCount</code> parameters provided to render pass instances recorded in <code>commandBuffer</code> that did not specify the <code>VK_RENDERING_RESUMING_BIT</code> flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferSubmitInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferSubmitInfo-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkRenderPassStripeSubmitInfoARM\">VkRenderPassStripeSubmitInfoARM</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferSubmitInfo-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCommandBufferSubmitInfo-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkRenderPassStripeSubmitInfoARM": {
      "core": [
        {
          "vuid": "VUID-VkRenderPassStripeSubmitInfoARM-semaphore-09447",
          "text": "The <code>semaphore</code> member of each element of <code>pStripeSemaphoreInfos</code> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_BINARY</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassStripeSubmitInfoARM-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_SUBMIT_INFO_ARM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassStripeSubmitInfoARM-pStripeSemaphoreInfos-parameter",
          "text": "<code>pStripeSemaphoreInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stripeSemaphoreInfoCount</code> valid <a href=\"#VkSemaphoreSubmitInfo\">VkSemaphoreSubmitInfo</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassStripeSubmitInfoARM-stripeSemaphoreInfoCount-arraylength",
          "text": "<code>stripeSemaphoreInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkQueueSubmit": {
      "core": [
        {
          "vuid": "VUID-vkQueueSubmit-fence-00063",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSubmit-fence-00064",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00065",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSubmit-pWaitDstStageMask-00066",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSubmit-pSignalSemaphores-00067",
          "text": "Each binary semaphore 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSubmit-pWaitSemaphores-00068",
          "text": "When a semaphore wait operation referring to a binary semaphore defined by any element of the <code>pWaitSemaphores</code> member of any element of <code>pSubmits</code> executes on <code>queue</code>, there <strong class=\"purple\">must</strong> be no other queues waiting on the same semaphore",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSubmit-pWaitSemaphores-03238",
          "text": "All elements of the <code>pWaitSemaphores</code> member of all elements of <code>pSubmits</code> created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_BINARY</code> <strong class=\"purple\">must</strong> reference a semaphore signal operation that has been submitted for execution and any <a href=\"#synchronization-semaphores-signaling\">semaphore signal operations</a> on which it depends <strong class=\"purple\">must</strong> have also been submitted for execution",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00070",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00071",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00072",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00073",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00074",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSubmit-pSubmits-02207",
          "text": "If any element of <code>pSubmits-&gt;pCommandBuffers</code> includes a <a href=\"#synchronization-queue-transfers-acquire\">Queue Family Ownership Transfer Acquire Operation</a>, there <strong class=\"purple\">must</strong> exist a previously submitted <a href=\"#synchronization-queue-transfers-release\">Queue Family Ownership 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSubmit-pCommandBuffers-03220",
          "text": "If a command recorded into any element of <code>pCommandBuffers</code> was a <a href=\"#vkCmdBeginQuery\">vkCmdBeginQuery</a> whose <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, the <a href=\"#profiling-lock\">profiling lock</a> <strong class=\"purple\">must</strong> have been held continuously on the <code>VkDevice</code> that <code>queue</code> was retrieved from, throughout recording of those command buffers",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSubmit-pSubmits-02808",
          "text": "Any resource created with <code>VK_SHARING_MODE_EXCLUSIVE</code> that is read by an operation specified by <code>pSubmits</code> <strong class=\"purple\">must</strong> not be owned by any queue family other than the one which <code>queue</code> belongs to, at the time it is executed",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSubmit-pSubmits-04626",
          "text": "Any resource created with <code>VK_SHARING_MODE_CONCURRENT</code> that is accessed by an operation specified by <code>pSubmits</code> <strong class=\"purple\">must</strong> have included the queue family of <code>queue</code> at resource creation time",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSubmit-queue-06448",
          "text": "If <code>queue</code> was not created with <code>VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT</code>, there <strong class=\"purple\">must</strong> be no element of <code>pSubmits</code> that includes a <a href=\"#VkProtectedSubmitInfo\">VkProtectedSubmitInfo</a> structure in its <code>pNext</code> chain with <code>protectedSubmit</code> equal to <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSubmit-queue-parameter",
          "text": "<code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSubmit-pSubmits-parameter",
          "text": "If <code>submitCount</code> is not <code>0</code>, <code>pSubmits</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>submitCount</code> valid <a href=\"#VkSubmitInfo\">VkSubmitInfo</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSubmit-fence-parameter",
          "text": "If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFence\">VkFence</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSubmit-commonparent",
          "text": "Both of <code>fence</code>, and <code>queue</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkSubmitInfo": {
      "core": [
        {
          "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-04090",
          "text": "If the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is not enabled, <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-04091",
          "text": "If the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is not enabled, <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-04092",
          "text": "If the <a href=\"#features-conditionalRendering\"><code>conditionalRendering</code></a> feature is not enabled, <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-04093",
          "text": "If the <a href=\"#features-fragmentDensityMap\"><code>fragmentDensityMap</code></a> feature is not enabled, <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-04094",
          "text": "If the <a href=\"#features-transformFeedback\"><code>transformFeedback</code></a> feature is not enabled, <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-04095",
          "text": "If the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is not enabled, <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-04096",
          "text": "If the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is not enabled, <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-07318",
          "text": "If neither the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> or <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> are enabled, <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-03937",
          "text": "If the <a href=\"#features-synchronization2\"><code>synchronization2</code></a> feature is not enabled, <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-07949",
          "text": "If neither the <a href=\"#VK_NV_ray_tracing\">VK_NV_ray_tracing</a> extension or <a href=\"#features-rayTracingPipeline\"><code>rayTracingPipeline</code> feature</a> are enabled, <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo-pCommandBuffers-00075",
          "text": "Each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> not have been allocated with <code>VK_COMMAND_BUFFER_LEVEL_SECONDARY</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-00078",
          "text": "Each element of <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo-pWaitSemaphores-03239",
          "text": "If any element of <code>pWaitSemaphores</code> or <code>pSignalSemaphores</code> was created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo-pNext-03240",
          "text": "If the <code>pNext</code> chain of this structure includes a <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a> structure and any element of <code>pWaitSemaphores</code> was created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code>, then its <code>waitSemaphoreValueCount</code> member <strong class=\"purple\">must</strong> equal <code>waitSemaphoreCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo-pNext-03241",
          "text": "If the <code>pNext</code> chain of this structure includes a <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a> structure and any element of <code>pSignalSemaphores</code> was created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code>, then its <code>signalSemaphoreValueCount</code> member <strong class=\"purple\">must</strong> equal <code>signalSemaphoreCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo-pSignalSemaphores-03242",
          "text": "For each element of <code>pSignalSemaphores</code> created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code> the corresponding element of <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a>::<code>pSignalSemaphoreValues</code> <strong class=\"purple\">must</strong> have a value greater than the current value of the semaphore when the <a href=\"#synchronization-semaphores-signaling\">semaphore signal operation</a> is executed",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo-pWaitSemaphores-03243",
          "text": "For each element of <code>pWaitSemaphores</code> created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code> the corresponding element of <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a>::<code>pWaitSemaphoreValues</code> <strong class=\"purple\">must</strong> have a value which does not differ from the current value of the semaphore or the value of any outstanding semaphore wait or signal operation on that semaphore by more than <a href=\"#limits-maxTimelineSemaphoreValueDifference\"><code>maxTimelineSemaphoreValueDifference</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo-pSignalSemaphores-03244",
          "text": "For each element of <code>pSignalSemaphores</code> created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code> the corresponding element of <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a>::<code>pSignalSemaphoreValues</code> <strong class=\"purple\">must</strong> have a value which does not differ from the current value of the semaphore or the value of any outstanding semaphore wait or signal operation on that semaphore by more than <a href=\"#limits-maxTimelineSemaphoreValueDifference\"><code>maxTimelineSemaphoreValueDifference</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo-pNext-04120",
          "text": "If the <code>pNext</code> chain of this structure does not include a <code>VkProtectedSubmitInfo</code> structure with <code>protectedSubmit</code> set to <code>VK_TRUE</code>, then each element of the <code>pCommandBuffers</code> array <strong class=\"purple\">must</strong> be an unprotected command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo-pNext-04148",
          "text": "If the <code>pNext</code> chain of this structure includes a <code>VkProtectedSubmitInfo</code> structure with <code>protectedSubmit</code> set to <code>VK_TRUE</code>, then each element of the <code>pCommandBuffers</code> array <strong class=\"purple\">must</strong> be a protected command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo-pCommandBuffers-06193",
          "text": "If <code>pCommandBuffers</code> contains any <a href=\"#renderpass-suspension\">resumed render pass instances</a>, they <strong class=\"purple\">must</strong> be suspended by a render pass instance earlier in submission order within <code>pCommandBuffers</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo-pCommandBuffers-06014",
          "text": "If <code>pCommandBuffers</code> contains any <a href=\"#renderpass-suspension\">suspended render pass instances</a>, they <strong class=\"purple\">must</strong> be resumed by a render pass instance later in submission order within <code>pCommandBuffers</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo-pCommandBuffers-06015",
          "text": "If <code>pCommandBuffers</code> contains any <a href=\"#renderpass-suspension\">suspended render pass instances</a>, there <strong class=\"purple\">must</strong> be no action or synchronization commands executed in a primary or <a href=\"#commandbuffers-secondary\">secondary</a> command buffer between that render pass instance and the render pass instance that resumes it",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo-pCommandBuffers-06016",
          "text": "If <code>pCommandBuffers</code> contains any <a href=\"#renderpass-suspension\">suspended render pass instances</a>, there <strong class=\"purple\">must</strong> be no render pass instances between that render pass instance and the render pass instance that resumes it",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo-variableSampleLocations-06017",
          "text": "If the <a href=\"#limits-variableSampleLocations\"><code>variableSampleLocations</code></a> limit is not supported, and any element of <code>pCommandBuffers</code> contains any <a href=\"#renderpass-suspension\">suspended render pass instances</a>, where a graphics pipeline has been bound, any pipelines bound in the render pass instance that resumes it, or any subsequent render pass instances that resume from that one and so on, <strong class=\"purple\">must</strong> use the same sample locations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBMIT_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo-pNext-pNext",
          "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=\"#VkAmigoProfilingSubmitInfoSEC\">VkAmigoProfilingSubmitInfoSEC</a>, <a href=\"#VkD3D12FenceSubmitInfoKHR\">VkD3D12FenceSubmitInfoKHR</a>, <a href=\"#VkDeviceGroupSubmitInfo\">VkDeviceGroupSubmitInfo</a>, <a href=\"#VkFrameBoundaryEXT\">VkFrameBoundaryEXT</a>, <a href=\"#VkLatencySubmissionPresentIdNV\">VkLatencySubmissionPresentIdNV</a>, <a href=\"#VkPerformanceQuerySubmitInfoKHR\">VkPerformanceQuerySubmitInfoKHR</a>, <a href=\"#VkProtectedSubmitInfo\">VkProtectedSubmitInfo</a>, <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a>, <a href=\"#VkWin32KeyedMutexAcquireReleaseInfoKHR\">VkWin32KeyedMutexAcquireReleaseInfoKHR</a>, or <a href=\"#VkWin32KeyedMutexAcquireReleaseInfoNV\">VkWin32KeyedMutexAcquireReleaseInfoNV</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo-pWaitSemaphores-parameter",
          "text": "If <code>waitSemaphoreCount</code> is not <code>0</code>, <code>pWaitSemaphores</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>waitSemaphoreCount</code> valid <a href=\"#VkSemaphore\">VkSemaphore</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-parameter",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo-pCommandBuffers-parameter",
          "text": "If <code>commandBufferCount</code> is not <code>0</code>, <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>commandBufferCount</code> valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo-pSignalSemaphores-parameter",
          "text": "If <code>signalSemaphoreCount</code> is not <code>0</code>, <code>pSignalSemaphores</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>signalSemaphoreCount</code> valid <a href=\"#VkSemaphore\">VkSemaphore</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubmitInfo-commonparent",
          "text": "Each of the elements of <code>pCommandBuffers</code>, the elements of <code>pSignalSemaphores</code>, and the elements of <code>pWaitSemaphores</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkTimelineSemaphoreSubmitInfo": {
      "core": [
        {
          "vuid": "VUID-VkTimelineSemaphoreSubmitInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkTimelineSemaphoreSubmitInfo-pWaitSemaphoreValues-parameter",
          "text": "If <code>waitSemaphoreValueCount</code> is not <code>0</code>, and <code>pWaitSemaphoreValues</code> is not <code>NULL</code>, <code>pWaitSemaphoreValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>waitSemaphoreValueCount</code> <code>uint64_t</code> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkTimelineSemaphoreSubmitInfo-pSignalSemaphoreValues-parameter",
          "text": "If <code>signalSemaphoreValueCount</code> is not <code>0</code>, and <code>pSignalSemaphoreValues</code> is not <code>NULL</code>, <code>pSignalSemaphoreValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>signalSemaphoreValueCount</code> <code>uint64_t</code> values",
          "page": "vkspec"
        }
      ]
    },
    "VkD3D12FenceSubmitInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-waitSemaphoreValuesCount-00079",
          "text": "<code>waitSemaphoreValuesCount</code> <strong class=\"purple\">must</strong> be the same value as <code>VkSubmitInfo</code>::<code>waitSemaphoreCount</code>, where this structure is in the <code>pNext</code> chain of a <code>VkSubmitInfo</code> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-signalSemaphoreValuesCount-00080",
          "text": "<code>signalSemaphoreValuesCount</code> <strong class=\"purple\">must</strong> be the same value as <code>VkSubmitInfo</code>::<code>signalSemaphoreCount</code>, where this structure is in the <code>pNext</code> chain of a <code>VkSubmitInfo</code> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-pWaitSemaphoreValues-parameter",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-pSignalSemaphoreValues-parameter",
          "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",
          "page": "vkspec"
        }
      ]
    },
    "VkWin32KeyedMutexAcquireReleaseInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireSyncs-00081",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireSyncs-parameter",
          "text": "If <code>acquireCount</code> is not <code>0</code>, <code>pAcquireSyncs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>acquireCount</code> valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireKeys-parameter",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireTimeouts-parameter",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pReleaseSyncs-parameter",
          "text": "If <code>releaseCount</code> is not <code>0</code>, <code>pReleaseSyncs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>releaseCount</code> valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pReleaseKeys-parameter",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-commonparent",
          "text": "Both of the elements of <code>pAcquireSyncs</code>, and the elements of <code>pReleaseSyncs</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkWin32KeyedMutexAcquireReleaseInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireSyncs-parameter",
          "text": "If <code>acquireCount</code> is not <code>0</code>, <code>pAcquireSyncs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>acquireCount</code> valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireKeys-parameter",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireTimeoutMilliseconds-parameter",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pReleaseSyncs-parameter",
          "text": "If <code>releaseCount</code> is not <code>0</code>, <code>pReleaseSyncs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>releaseCount</code> valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pReleaseKeys-parameter",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-commonparent",
          "text": "Both of the elements of <code>pAcquireSyncs</code>, and the elements of <code>pReleaseSyncs</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkProtectedSubmitInfo": {
      "core": [
        {
          "vuid": "VUID-VkProtectedSubmitInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkDeviceGroupSubmitInfo": {
      "core": [
        {
          "vuid": "VUID-VkDeviceGroupSubmitInfo-waitSemaphoreCount-00082",
          "text": "<code>waitSemaphoreCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkSubmitInfo\">VkSubmitInfo</a>::<code>waitSemaphoreCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceGroupSubmitInfo-commandBufferCount-00083",
          "text": "<code>commandBufferCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkSubmitInfo\">VkSubmitInfo</a>::<code>commandBufferCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceGroupSubmitInfo-signalSemaphoreCount-00084",
          "text": "<code>signalSemaphoreCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkSubmitInfo\">VkSubmitInfo</a>::<code>signalSemaphoreCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceGroupSubmitInfo-pWaitSemaphoreDeviceIndices-00085",
          "text": "All elements of <code>pWaitSemaphoreDeviceIndices</code> and <code>pSignalSemaphoreDeviceIndices</code> <strong class=\"purple\">must</strong> be valid device indices",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceGroupSubmitInfo-pCommandBufferDeviceMasks-00086",
          "text": "All elements of <code>pCommandBufferDeviceMasks</code> <strong class=\"purple\">must</strong> be valid device masks",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceGroupSubmitInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceGroupSubmitInfo-pWaitSemaphoreDeviceIndices-parameter",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceGroupSubmitInfo-pCommandBufferDeviceMasks-parameter",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceGroupSubmitInfo-pSignalSemaphoreDeviceIndices-parameter",
          "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",
          "page": "vkspec"
        }
      ]
    },
    "VkPerformanceQuerySubmitInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkPerformanceQuerySubmitInfoKHR-counterPassIndex-03221",
          "text": "<code>counterPassIndex</code> <strong class=\"purple\">must</strong> be less than the number of counter passes required by any queries within the batch. The required number of counter passes for a performance query is obtained by calling <a href=\"#vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR\">vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPerformanceQuerySubmitInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdExecuteCommands": {
      "core": [
        {
          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00088",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00089",
          "text": "Each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">pending or executable state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00091",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00092",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00093",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00094",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00096",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00099",
          "text": "If <code>vkCmdExecuteCommands</code> is being called within a render pass instance, and any element of <code>pCommandBuffers</code> was recorded with <a href=\"#VkCommandBufferInheritanceInfo\">VkCommandBufferInheritanceInfo</a>::<code>framebuffer</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, that <code>VkFramebuffer</code> <strong class=\"purple\">must</strong> match the <code>VkFramebuffer</code> used in the current render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-contents-09680",
          "text": "If <code>vkCmdExecuteCommands</code> is being called within a render pass     instance begun with <a href=\"#vkCmdBeginRenderPass\">vkCmdBeginRenderPass</a>, and     <a href=\"#vkCmdNextSubpass\">vkCmdNextSubpass</a> has not been called in the current render pass     instance, the <code>contents</code> parameter of <a href=\"#vkCmdBeginRenderPass\">vkCmdBeginRenderPass</a>     <strong class=\"purple\">must</strong> have been set to     <code>VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS</code> , or <code>VK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-None-09681",
          "text": "If <code>vkCmdExecuteCommands</code> is being called within a render pass     instance begun with <a href=\"#vkCmdBeginRenderPass\">vkCmdBeginRenderPass</a>, and     <a href=\"#vkCmdNextSubpass\">vkCmdNextSubpass</a> has been called in the current render pass     instance, the <code>contents</code> parameter of the last call to     <a href=\"#vkCmdNextSubpass\">vkCmdNextSubpass</a> <strong class=\"purple\">must</strong> have been set to     <code>VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS</code> , or <code>VK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-06019",
          "text": "If <code>vkCmdExecuteCommands</code> is being called within a render pass instance begun with <a href=\"#vkCmdBeginRenderPass\">vkCmdBeginRenderPass</a>, each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been recorded with <a href=\"#VkCommandBufferInheritanceInfo\">VkCommandBufferInheritanceInfo</a>::<code>subpass</code> set to the index of the subpass which the given command buffer will be executed in",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-pBeginInfo-06020",
          "text": "If <code>vkCmdExecuteCommands</code> is being called within a render pass instance begun with <a href=\"#vkCmdBeginRenderPass\">vkCmdBeginRenderPass</a>, the render passes specified in the <code>pBeginInfo-&gt;pInheritanceInfo-&gt;renderPass</code> members of the <a href=\"#vkBeginCommandBuffer\">vkBeginCommandBuffer</a> commands used to begin recording each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the current render pass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-pNext-02865",
          "text": "If <code>vkCmdExecuteCommands</code> is being called within a render pass instance that included <a href=\"#VkRenderPassTransformBeginInfoQCOM\">VkRenderPassTransformBeginInfoQCOM</a> in the <code>pNext</code> chain of <a href=\"#VkRenderPassBeginInfo\">VkRenderPassBeginInfo</a>, then each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been recorded with <a href=\"#VkCommandBufferInheritanceRenderPassTransformInfoQCOM\">VkCommandBufferInheritanceRenderPassTransformInfoQCOM</a> in the <code>pNext</code> chain of <a href=\"#VkCommandBufferBeginInfo\">VkCommandBufferBeginInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-pNext-02866",
          "text": "If <code>vkCmdExecuteCommands</code> is being called within a render pass instance that included <a href=\"#VkRenderPassTransformBeginInfoQCOM\">VkRenderPassTransformBeginInfoQCOM</a> in the <code>pNext</code> chain of <a href=\"#VkRenderPassBeginInfo\">VkRenderPassBeginInfo</a>, then each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been recorded with <a href=\"#VkCommandBufferInheritanceRenderPassTransformInfoQCOM\">VkCommandBufferInheritanceRenderPassTransformInfoQCOM</a>::<code>transform</code> identical to <a href=\"#VkRenderPassTransformBeginInfoQCOM\">VkRenderPassTransformBeginInfoQCOM</a>::<code>transform</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-pNext-02867",
          "text": "If <code>vkCmdExecuteCommands</code> is being called within a render pass instance that included <a href=\"#VkRenderPassTransformBeginInfoQCOM\">VkRenderPassTransformBeginInfoQCOM</a> in the <code>pNext</code> chain of <a href=\"#VkRenderPassBeginInfo\">VkRenderPassBeginInfo</a>, then each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been recorded with <a href=\"#VkCommandBufferInheritanceRenderPassTransformInfoQCOM\">VkCommandBufferInheritanceRenderPassTransformInfoQCOM</a>::<code>renderArea</code> identical to <a href=\"#VkRenderPassBeginInfo\">VkRenderPassBeginInfo</a>::<code>renderArea</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00100",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00101",
          "text": "If the <a href=\"#features-inheritedQueries\"><code>inheritedQueries</code></a> feature is not enabled, <code>commandBuffer</code> <strong class=\"purple\">must</strong> not have any queries <a href=\"#queries-operation-active\">active</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00102",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00103",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00104",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00105",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-07594",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> not have any queries other than <code>VK_QUERY_TYPE_OCCLUSION</code> and <code>VK_QUERY_TYPE_PIPELINE_STATISTICS</code> <a href=\"#queries-operation-active\">active</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-01820",
          "text": "If <code>commandBuffer</code> is a protected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be a protected command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-01821",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be an unprotected command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-None-02286",
          "text": "This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-06533",
          "text": "If <code>vkCmdExecuteCommands</code> is being called within a render pass instance and any recorded command in <code>commandBuffer</code> in the current subpass will write to an image subresource as an attachment, commands recorded in elements of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> not read from the memory backing that image subresource in any other way",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-06534",
          "text": "If <code>vkCmdExecuteCommands</code> is being called within a render pass instance and any recorded command in <code>commandBuffer</code> in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, commands recorded in elements of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> not write to that image subresource as an attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-06535",
          "text": "If <code>vkCmdExecuteCommands</code> is being called within a render pass instance and any recorded command in a given element of <code>pCommandBuffers</code> will write to an image subresource as an attachment, commands recorded in elements of <code>pCommandBuffers</code> at a higher index <strong class=\"purple\">must</strong> not read from the memory backing that image subresource in any other way",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-06536",
          "text": "If <code>vkCmdExecuteCommands</code> is being called within a render pass instance and any recorded command in a given element of <code>pCommandBuffers</code> will read from an image subresource used as an attachment in any way other than as an attachment, commands recorded in elements of <code>pCommandBuffers</code> at a higher index <strong class=\"purple\">must</strong> not write to that image subresource as an attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-06021",
          "text": "If <code>pCommandBuffers</code> contains any <a href=\"#renderpass-suspension\">suspended render pass instances</a>, there <strong class=\"purple\">must</strong> be no action or synchronization commands between that render pass instance and any render pass instance that resumes it",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-06022",
          "text": "If <code>pCommandBuffers</code> contains any <a href=\"#renderpass-suspension\">suspended render pass instances</a>, there <strong class=\"purple\">must</strong> be no render pass instances between that render pass instance and any render pass instance that resumes it",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-variableSampleLocations-06023",
          "text": "If the <a href=\"#limits-variableSampleLocations\"><code>variableSampleLocations</code></a> limit is not supported, and any element of <code>pCommandBuffers</code> contains any <a href=\"#renderpass-suspension\">suspended render pass instances</a>, where a graphics pipeline has been bound, any pipelines bound in the render pass instance that resumes it, or any subsequent render pass instances that resume from that one and so on, <strong class=\"purple\">must</strong> use the same sample locations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-flags-06024",
          "text": "If <code>vkCmdExecuteCommands</code> is being called within a render pass instance begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, its <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>flags</code> parameter <strong class=\"purple\">must</strong> have included <code>VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-pBeginInfo-06025",
          "text": "If <code>vkCmdExecuteCommands</code> is being called within a render pass instance begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the render passes specified in the <code>pBeginInfo-&gt;pInheritanceInfo-&gt;renderPass</code> members of the <a href=\"#vkBeginCommandBuffer\">vkBeginCommandBuffer</a> commands used to begin recording each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-flags-06026",
          "text": "If <code>vkCmdExecuteCommands</code> is being called within a render pass instance begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>flags</code> member of the <a href=\"#VkCommandBufferInheritanceRenderingInfo\">VkCommandBufferInheritanceRenderingInfo</a> structure included in the <code>pNext</code> chain of <a href=\"#VkCommandBufferBeginInfo\">VkCommandBufferBeginInfo</a>::<code>pInheritanceInfo</code> used to begin recording each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>flags</code> parameter to <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, excluding <code>VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-colorAttachmentCount-06027",
          "text": "If <code>vkCmdExecuteCommands</code> is being called within a render pass instance begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>colorAttachmentCount</code> member of the <a href=\"#VkCommandBufferInheritanceRenderingInfo\">VkCommandBufferInheritanceRenderingInfo</a> structure included in the <code>pNext</code> chain of <a href=\"#VkCommandBufferBeginInfo\">VkCommandBufferBeginInfo</a>::<code>pInheritanceInfo</code> used to begin recording each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter to <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-imageView-06028",
          "text": "If <code>vkCmdExecuteCommands</code> is being called within a render pass instance begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, if the <code>imageView</code> member of an element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> parameter to <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the corresponding element of the <code>pColorAttachmentFormats</code> member of the <a href=\"#VkCommandBufferInheritanceRenderingInfo\">VkCommandBufferInheritanceRenderingInfo</a> structure included in the <code>pNext</code> chain of <a href=\"#VkCommandBufferBeginInfo\">VkCommandBufferBeginInfo</a>::<code>pInheritanceInfo</code> used to begin recording each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be equal to the format used to create that image view",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-imageView-07606",
          "text": "If <code>vkCmdExecuteCommands</code> is being called within a render pass instance begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, if the <code>imageView</code> member of an element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> parameter to <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the corresponding element of the <code>pColorAttachmentFormats</code> member of the <a href=\"#VkCommandBufferInheritanceRenderingInfo\">VkCommandBufferInheritanceRenderingInfo</a> structure included in the <code>pNext</code> chain of <a href=\"#VkCommandBufferBeginInfo\">VkCommandBufferBeginInfo</a>::<code>pInheritanceInfo</code> used to begin recording each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-pDepthAttachment-06029",
          "text": "If <code>vkCmdExecuteCommands</code> is being called within a render pass instance begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, if the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> parameter to <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthAttachmentFormat</code> member of the <a href=\"#VkCommandBufferInheritanceRenderingInfo\">VkCommandBufferInheritanceRenderingInfo</a> structure included in the <code>pNext</code> chain of <a href=\"#VkCommandBufferBeginInfo\">VkCommandBufferBeginInfo</a>::<code>pInheritanceInfo</code> used to begin recording each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be equal to the format used to create that image view",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-pStencilAttachment-06030",
          "text": "If <code>vkCmdExecuteCommands</code> is being called within a render pass instance begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, if the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> parameter to <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>stencilAttachmentFormat</code> member of the <a href=\"#VkCommandBufferInheritanceRenderingInfo\">VkCommandBufferInheritanceRenderingInfo</a> structure included in the <code>pNext</code> chain of <a href=\"#VkCommandBufferBeginInfo\">VkCommandBufferBeginInfo</a>::<code>pInheritanceInfo</code> used to begin recording each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be equal to the format used to create that image view",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-pDepthAttachment-06774",
          "text": "If <code>vkCmdExecuteCommands</code> is being called within a render pass instance begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> parameter to <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthAttachmentFormat</code> member of the <a href=\"#VkCommandBufferInheritanceRenderingInfo\">VkCommandBufferInheritanceRenderingInfo</a> structure included in the <code>pNext</code> chain of <a href=\"#VkCommandBufferBeginInfo\">VkCommandBufferBeginInfo</a>::<code>pInheritanceInfo</code> used to begin recording each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-pStencilAttachment-06775",
          "text": "If <code>vkCmdExecuteCommands</code> is being called within a render pass instance begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> parameter to <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>stencilAttachmentFormat</code> member of the <a href=\"#VkCommandBufferInheritanceRenderingInfo\">VkCommandBufferInheritanceRenderingInfo</a> structure included in the <code>pNext</code> chain of <a href=\"#VkCommandBufferBeginInfo\">VkCommandBufferBeginInfo</a>::<code>pInheritanceInfo</code> used to begin recording each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-viewMask-06031",
          "text": "If <code>vkCmdExecuteCommands</code> is being called within a render pass instance begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>viewMask</code> member of the <a href=\"#VkCommandBufferInheritanceRenderingInfo\">VkCommandBufferInheritanceRenderingInfo</a> structure included in the <code>pNext</code> chain of <a href=\"#VkCommandBufferBeginInfo\">VkCommandBufferBeginInfo</a>::<code>pInheritanceInfo</code> used to begin recording each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>viewMask</code> parameter to <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-pNext-06032",
          "text": "If <code>vkCmdExecuteCommands</code> is being called within a render pass instance begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and the <code>pNext</code> chain of <a href=\"#VkCommandBufferInheritanceInfo\">VkCommandBufferInheritanceInfo</a> includes a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, if the <code>imageView</code> member of an element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> parameter to <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the corresponding element of the <code>pColorAttachmentSamples</code> member of the <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure included in the <code>pNext</code> chain of <a href=\"#VkCommandBufferBeginInfo\">VkCommandBufferBeginInfo</a>::<code>pInheritanceInfo</code> used to begin recording each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be equal to the sample count used to create that image view",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-pNext-06033",
          "text": "If <code>vkCmdExecuteCommands</code> is being called within a render pass instance begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and the <code>pNext</code> chain of <a href=\"#VkCommandBufferInheritanceInfo\">VkCommandBufferInheritanceInfo</a> includes a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, if the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> parameter to <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of the <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure included in the <code>pNext</code> chain of <a href=\"#VkCommandBufferBeginInfo\">VkCommandBufferBeginInfo</a>::<code>pInheritanceInfo</code> used to begin recording each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be equal to the sample count used to create that image view",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-pNext-06034",
          "text": "If <code>vkCmdExecuteCommands</code> is being called within a render pass instance begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and the <code>pNext</code> chain of <a href=\"#VkCommandBufferInheritanceInfo\">VkCommandBufferInheritanceInfo</a> includes a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, if the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> parameter to <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of the <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure included in the <code>pNext</code> chain of <a href=\"#VkCommandBufferBeginInfo\">VkCommandBufferBeginInfo</a>::<code>pInheritanceInfo</code> used to begin recording each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be equal to the sample count used to create that image view",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-pNext-06035",
          "text": "If <code>vkCmdExecuteCommands</code> is being called within a render pass instance begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and the <code>pNext</code> chain of <a href=\"#VkCommandBufferInheritanceInfo\">VkCommandBufferInheritanceInfo</a> does not include a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, if the <code>imageView</code> member of an element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> parameter to <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkCommandBufferInheritanceRenderingInfo\">VkCommandBufferInheritanceRenderingInfo</a>::<code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be equal to the sample count used to create that image view",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-pNext-06036",
          "text": "If <code>vkCmdExecuteCommands</code> is being called within a render pass instance begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and the <code>pNext</code> chain of <a href=\"#VkCommandBufferInheritanceInfo\">VkCommandBufferInheritanceInfo</a> does not include a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, if the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> parameter to <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkCommandBufferInheritanceRenderingInfo\">VkCommandBufferInheritanceRenderingInfo</a>::<code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be equal to the sample count used to create that image view",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-pNext-06037",
          "text": "If <code>vkCmdExecuteCommands</code> is being called within a render pass instance begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and the <code>pNext</code> chain of <a href=\"#VkCommandBufferInheritanceInfo\">VkCommandBufferInheritanceInfo</a> does not include a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, if the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> parameter to <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkCommandBufferInheritanceRenderingInfo\">VkCommandBufferInheritanceRenderingInfo</a>::<code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be equal to the sample count used to create that image view",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-pNext-09299",
          "text": "If <code>vkCmdExecuteCommands</code> is being called within a render pass instance begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, with any color attachment using a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, the <code>pNext</code> chain of <a href=\"#VkCommandBufferInheritanceInfo\">VkCommandBufferInheritanceInfo</a> used to create each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> include a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a> structure with an <code>externalFormat</code> matching that used to create the resolve attachment in the render pass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-pNext-09300",
          "text": "If <code>vkCmdExecuteCommands</code> is being called within a render pass instance begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with any color attachment using a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, and the <code>pNext</code> chain of <a href=\"#VkCommandBufferInheritanceInfo\">VkCommandBufferInheritanceInfo</a> does not include a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, the value of <a href=\"#VkCommandBufferInheritanceRenderingInfo\">VkCommandBufferInheritanceRenderingInfo</a>::<code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLE_COUNT_1_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-09375",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a <a href=\"#glossary\">secondary command buffer</a> unless the <a href=\"#features-nestedCommandBuffer\"><code>nestedCommandBuffer</code></a> feature is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-nestedCommandBuffer-09376",
          "text": "If the <a href=\"#features-nestedCommandBuffer\"><code>nestedCommandBuffer</code></a> feature is enabled, the <a href=\"#glossary\">command buffer nesting level</a> of each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be less than <a href=\"#limits-maxCommandBufferNestingLevel\"><code>maxCommandBufferNestingLevel</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-nestedCommandBufferRendering-09377",
          "text": "If the <a href=\"#features-nestedCommandBufferRendering\"><code>nestedCommandBufferRendering</code></a> feature is not enabled, and <code>commandBuffer</code> is a <a href=\"#glossary\">secondary command buffer</a>, <code>commandBuffer</code> <strong class=\"purple\">must</strong> not have been recorded with <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-nestedCommandBufferSimultaneousUse-09378",
          "text": "If the <a href=\"#features-nestedCommandBufferSimultaneousUse\"><code>nestedCommandBufferSimultaneousUse</code></a> feature is not enabled, and <code>commandBuffer</code> is a <a href=\"#glossary\">secondary command buffer</a>, each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> not have been recorded with <code>VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-09504",
          "text": "If <code>vkCmdExecuteCommands</code> is being called within a render pass instance begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the color attachment mapping state specified by <a href=\"#VkRenderingAttachmentLocationInfoKHR\">VkRenderingAttachmentLocationInfoKHR</a> in the inheritance info of each element of <code>pCommandBuffers</code> and in the current state of <code>commandBuffer</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-09505",
          "text": "If <code>vkCmdExecuteCommands</code> is being called within a render pass instance begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the input attachment mapping state specified by <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a> in the inheritance info of each element of <code>pCommandBuffers</code> and in the current state of <code>commandBuffer</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-parameter",
          "text": "<code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>commandBufferCount</code> valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-commandBufferCount-arraylength",
          "text": "<code>commandBufferCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteCommands-commonparent",
          "text": "Both of <code>commandBuffer</code>, and the elements of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkDeviceGroupCommandBufferBeginInfo": {
      "core": [
        {
          "vuid": "VUID-VkDeviceGroupCommandBufferBeginInfo-deviceMask-00106",
          "text": "<code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceGroupCommandBufferBeginInfo-deviceMask-00107",
          "text": "<code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceGroupCommandBufferBeginInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetDeviceMask": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00108",
          "text": "<code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00109",
          "text": "<code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00110",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00111",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDeviceMask-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDeviceMask-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDeviceMask-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, or transfer operations",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateFence": {
      "core": [
        {
          "vuid": "VUID-vkCreateFence-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateFence-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkFenceCreateInfo\">VkFenceCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateFence-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateFence-pFence-parameter",
          "text": "<code>pFence</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkFence\">VkFence</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkFenceCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkFenceCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FENCE_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFenceCreateInfo-pNext-pNext",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFenceCreateInfo-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFenceCreateInfo-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkFenceCreateFlagBits\">VkFenceCreateFlagBits</a> values",
          "page": "vkspec"
        }
      ]
    },
    "VkExportFenceCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkExportFenceCreateInfo-handleTypes-01446",
          "text": "The bits in <code>handleTypes</code> <strong class=\"purple\">must</strong> be supported and compatible, as reported by <a href=\"#VkExternalFenceProperties\">VkExternalFenceProperties</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportFenceCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportFenceCreateInfo-handleTypes-parameter",
          "text": "<code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> values",
          "page": "vkspec"
        }
      ]
    },
    "VkExportFenceWin32HandleInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkExportFenceWin32HandleInfoKHR-handleTypes-01447",
          "text": "If <a href=\"#VkExportFenceCreateInfo\">VkExportFenceCreateInfo</a>::<code>handleTypes</code> does not include <code>VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, a <code>VkExportFenceWin32HandleInfoKHR</code> structure <strong class=\"purple\">must</strong> not be included in the <code>pNext</code> chain of <a href=\"#VkFenceCreateInfo\">VkFenceCreateInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportFenceWin32HandleInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportFenceWin32HandleInfoKHR-pAttributes-parameter",
          "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",
          "page": "vkspec"
        }
      ]
    },
    "vkGetFenceWin32HandleKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetFenceWin32HandleKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetFenceWin32HandleKHR-pGetWin32HandleInfo-parameter",
          "text": "<code>pGetWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkFenceGetWin32HandleInfoKHR\">VkFenceGetWin32HandleInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetFenceWin32HandleKHR-pHandle-parameter",
          "text": "<code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value",
          "page": "vkspec"
        }
      ]
    },
    "VkFenceGetWin32HandleInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01448",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01449",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-fence-01450",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01451",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01452",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> be defined as an NT handle or a global share handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-fence-parameter",
          "text": "<code>fence</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFence\">VkFence</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-parameter",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkGetFenceFdKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetFenceFdKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetFenceFdKHR-pGetFdInfo-parameter",
          "text": "<code>pGetFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkFenceGetFdInfoKHR\">VkFenceGetFdInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetFenceFdKHR-pFd-parameter",
          "text": "<code>pFd</code> <strong class=\"purple\">must</strong> be a valid pointer to an <code>int</code> value",
          "page": "vkspec"
        }
      ]
    },
    "VkFenceGetFdInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkFenceGetFdInfoKHR-handleType-01453",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFenceGetFdInfoKHR-handleType-01454",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFenceGetFdInfoKHR-fence-01455",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFenceGetFdInfoKHR-handleType-01456",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> be defined as a POSIX file descriptor handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFenceGetFdInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFenceGetFdInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFenceGetFdInfoKHR-fence-parameter",
          "text": "<code>fence</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFence\">VkFence</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFenceGetFdInfoKHR-handleType-parameter",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroyFence": {
      "core": [
        {
          "vuid": "VUID-vkDestroyFence-fence-01120",
          "text": "All <a href=\"#devsandqueues-submission\">queue submission</a> commands that refer to <code>fence</code> <strong class=\"purple\">must</strong> have completed execution",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyFence-fence-01121",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyFence-fence-01122",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyFence-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyFence-fence-parameter",
          "text": "If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFence\">VkFence</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyFence-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyFence-fence-parent",
          "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>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetFenceStatus": {
      "core": [
        {
          "vuid": "VUID-vkGetFenceStatus-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetFenceStatus-fence-parameter",
          "text": "<code>fence</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFence\">VkFence</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetFenceStatus-fence-parent",
          "text": "<code>fence</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkResetFences": {
      "core": [
        {
          "vuid": "VUID-vkResetFences-pFences-01123",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkResetFences-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkResetFences-pFences-parameter",
          "text": "<code>pFences</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>fenceCount</code> valid <a href=\"#VkFence\">VkFence</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkResetFences-fenceCount-arraylength",
          "text": "<code>fenceCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkResetFences-pFences-parent",
          "text": "Each element of <code>pFences</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkWaitForFences": {
      "core": [
        {
          "vuid": "VUID-vkWaitForFences-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWaitForFences-pFences-parameter",
          "text": "<code>pFences</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>fenceCount</code> valid <a href=\"#VkFence\">VkFence</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWaitForFences-fenceCount-arraylength",
          "text": "<code>fenceCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWaitForFences-pFences-parent",
          "text": "Each element of <code>pFences</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkRegisterDeviceEventEXT": {
      "core": [
        {
          "vuid": "VUID-vkRegisterDeviceEventEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkRegisterDeviceEventEXT-pDeviceEventInfo-parameter",
          "text": "<code>pDeviceEventInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDeviceEventInfoEXT\">VkDeviceEventInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkRegisterDeviceEventEXT-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkRegisterDeviceEventEXT-pFence-parameter",
          "text": "<code>pFence</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkFence\">VkFence</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkDeviceEventInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkDeviceEventInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceEventInfoEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceEventInfoEXT-deviceEvent-parameter",
          "text": "<code>deviceEvent</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceEventTypeEXT\">VkDeviceEventTypeEXT</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkRegisterDisplayEventEXT": {
      "core": [
        {
          "vuid": "VUID-vkRegisterDisplayEventEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkRegisterDisplayEventEXT-display-parameter",
          "text": "<code>display</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayKHR\">VkDisplayKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkRegisterDisplayEventEXT-pDisplayEventInfo-parameter",
          "text": "<code>pDisplayEventInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDisplayEventInfoEXT\">VkDisplayEventInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkRegisterDisplayEventEXT-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkRegisterDisplayEventEXT-pFence-parameter",
          "text": "<code>pFence</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkFence\">VkFence</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkRegisterDisplayEventEXT-commonparent",
          "text": "Both of <code>device</code>, and <code>display</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkDisplayEventInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkDisplayEventInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDisplayEventInfoEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDisplayEventInfoEXT-displayEvent-parameter",
          "text": "<code>displayEvent</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayEventTypeEXT\">VkDisplayEventTypeEXT</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkImportFenceWin32HandleKHR": {
      "core": [
        {
          "vuid": "VUID-vkImportFenceWin32HandleKHR-fence-04448",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkImportFenceWin32HandleKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkImportFenceWin32HandleKHR-pImportFenceWin32HandleInfo-parameter",
          "text": "<code>pImportFenceWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImportFenceWin32HandleInfoKHR\">VkImportFenceWin32HandleInfoKHR</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkImportFenceWin32HandleInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01457",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> be a value included in the <a href=\"#synchronization-fence-handletypes-win32\">Handle Types Supported by <code>VkImportFenceWin32HandleInfoKHR</code></a> table",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01459",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01460",
          "text": "If <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01461",
          "text": "If <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handle-01462",
          "text": "If <code>handle</code> is not <code>NULL</code>, <code>name</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handle-01539",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-name-01540",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-fence-parameter",
          "text": "<code>fence</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFence\">VkFence</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkFenceImportFlagBits\">VkFenceImportFlagBits</a> values",
          "page": "vkspec"
        }
      ]
    },
    "vkImportFenceFdKHR": {
      "core": [
        {
          "vuid": "VUID-vkImportFenceFdKHR-fence-01463",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkImportFenceFdKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkImportFenceFdKHR-pImportFenceFdInfo-parameter",
          "text": "<code>pImportFenceFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImportFenceFdInfoKHR\">VkImportFenceFdInfoKHR</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkImportFenceFdInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkImportFenceFdInfoKHR-handleType-01464",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> be a value included in the <a href=\"#synchronization-fence-handletypes-fd\">Handle Types Supported by <code>VkImportFenceFdInfoKHR</code></a> table",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportFenceFdInfoKHR-fd-01541",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportFenceFdInfoKHR-handleType-07306",
          "text": "If <code>handleType</code> refers to a handle type with copy payload transference semantics, <code>flags</code> <strong class=\"purple\">must</strong> contain <code>VK_FENCE_IMPORT_TEMPORARY_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportFenceFdInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportFenceFdInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportFenceFdInfoKHR-fence-parameter",
          "text": "<code>fence</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFence\">VkFence</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportFenceFdInfoKHR-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkFenceImportFlagBits\">VkFenceImportFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportFenceFdInfoKHR-handleType-parameter",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateSemaphore": {
      "core": [
        {
          "vuid": "VUID-vkCreateSemaphore-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateSemaphore-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSemaphoreCreateInfo\">VkSemaphoreCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateSemaphore-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateSemaphore-pSemaphore-parameter",
          "text": "<code>pSemaphore</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSemaphore\">VkSemaphore</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkSemaphoreCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkSemaphoreCreateInfo-pNext-06789",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkExportMetalObjectCreateInfoEXT\">VkExportMetalObjectCreateInfoEXT</a> structure, its <code>exportObjectType</code> member <strong class=\"purple\">must</strong> be <code>VK_EXPORT_METAL_OBJECT_TYPE_METAL_SHARED_EVENT_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreCreateInfo-pNext-pNext",
          "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=\"#VkExportMetalObjectCreateInfoEXT\">VkExportMetalObjectCreateInfoEXT</a>, <a href=\"#VkExportSemaphoreCreateInfo\">VkExportSemaphoreCreateInfo</a>, <a href=\"#VkExportSemaphoreWin32HandleInfoKHR\">VkExportSemaphoreWin32HandleInfoKHR</a>, <a href=\"#VkImportMetalSharedEventInfoEXT\">VkImportMetalSharedEventInfoEXT</a>, <a href=\"#VkQueryLowLatencySupportNV\">VkQueryLowLatencySupportNV</a>, or <a href=\"#VkSemaphoreTypeCreateInfo\">VkSemaphoreTypeCreateInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreCreateInfo-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique, with the exception of structures of type <a href=\"#VkExportMetalObjectCreateInfoEXT\">VkExportMetalObjectCreateInfoEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreCreateInfo-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkSemaphoreTypeCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkSemaphoreTypeCreateInfo-timelineSemaphore-03252",
          "text": "If the <a href=\"#features-timelineSemaphore\"><code>timelineSemaphore</code></a> feature is not enabled, <code>semaphoreType</code> <strong class=\"purple\">must</strong> not equal <code>VK_SEMAPHORE_TYPE_TIMELINE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreTypeCreateInfo-semaphoreType-03279",
          "text": "If <code>semaphoreType</code> is <code>VK_SEMAPHORE_TYPE_BINARY</code>, <code>initialValue</code> <strong class=\"purple\">must</strong> be zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreTypeCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreTypeCreateInfo-semaphoreType-parameter",
          "text": "<code>semaphoreType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkExportSemaphoreCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkExportSemaphoreCreateInfo-handleTypes-01124",
          "text": "The bits in <code>handleTypes</code> <strong class=\"purple\">must</strong> be supported and compatible, as reported by <a href=\"#VkExternalSemaphoreProperties\">VkExternalSemaphoreProperties</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportSemaphoreCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportSemaphoreCreateInfo-handleTypes-parameter",
          "text": "<code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> values",
          "page": "vkspec"
        }
      ]
    },
    "VkExportSemaphoreWin32HandleInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkExportSemaphoreWin32HandleInfoKHR-handleTypes-01125",
          "text": "If <a href=\"#VkExportSemaphoreCreateInfo\">VkExportSemaphoreCreateInfo</a>::<code>handleTypes</code> does not include <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT</code> or <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT</code>, <code>VkExportSemaphoreWin32HandleInfoKHR</code> <strong class=\"purple\">must</strong> not be included in the <code>pNext</code> chain of <a href=\"#VkSemaphoreCreateInfo\">VkSemaphoreCreateInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportSemaphoreWin32HandleInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportSemaphoreWin32HandleInfoKHR-pAttributes-parameter",
          "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",
          "page": "vkspec"
        }
      ]
    },
    "vkGetSemaphoreWin32HandleKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetSemaphoreWin32HandleKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetSemaphoreWin32HandleKHR-pGetWin32HandleInfo-parameter",
          "text": "<code>pGetWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSemaphoreGetWin32HandleInfoKHR\">VkSemaphoreGetWin32HandleInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetSemaphoreWin32HandleKHR-pHandle-parameter",
          "text": "<code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value",
          "page": "vkspec"
        }
      ]
    },
    "VkSemaphoreGetWin32HandleInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01126",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01127",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-semaphore-01128",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01129",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01130",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01131",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> be defined as an NT handle or a global share handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-semaphore-parameter",
          "text": "<code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphore\">VkSemaphore</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-parameter",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkQueryLowLatencySupportNV": {
      "core": [
        {
          "vuid": "VUID-VkQueryLowLatencySupportNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkQueryLowLatencySupportNV-pQueriedLowLatencyData-parameter",
          "text": "<code>pQueriedLowLatencyData</code> <strong class=\"purple\">must</strong> be a pointer value",
          "page": "vkspec"
        }
      ]
    },
    "vkGetSemaphoreFdKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetSemaphoreFdKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetSemaphoreFdKHR-pGetFdInfo-parameter",
          "text": "<code>pGetFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSemaphoreGetFdInfoKHR\">VkSemaphoreGetFdInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetSemaphoreFdKHR-pFd-parameter",
          "text": "<code>pFd</code> <strong class=\"purple\">must</strong> be a valid pointer to an <code>int</code> value",
          "page": "vkspec"
        }
      ]
    },
    "VkSemaphoreGetFdInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01132",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-semaphore-01133",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01134",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01135",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01136",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> be defined as a POSIX file descriptor handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-03253",
          "text": "If <code>handleType</code> refers to a handle type with copy payload transference semantics, <code>semaphore</code> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_BINARY</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-03254",
          "text": "If <code>handleType</code> refers to a handle type with copy payload transference semantics, <code>semaphore</code> <strong class=\"purple\">must</strong> have an associated semaphore signal operation that has been submitted for execution and any semaphore signal operations on which it depends <strong class=\"purple\">must</strong> have also been submitted for execution",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-semaphore-parameter",
          "text": "<code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphore\">VkSemaphore</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-parameter",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkGetSemaphoreZirconHandleFUCHSIA": {
      "core": [
        {
          "vuid": "VUID-vkGetSemaphoreZirconHandleFUCHSIA-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetSemaphoreZirconHandleFUCHSIA-pGetZirconHandleInfo-parameter",
          "text": "<code>pGetZirconHandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSemaphoreGetZirconHandleInfoFUCHSIA\">VkSemaphoreGetZirconHandleInfoFUCHSIA</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetSemaphoreZirconHandleFUCHSIA-pZirconHandle-parameter",
          "text": "<code>pZirconHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>zx_handle_t</code> value",
          "page": "vkspec"
        }
      ]
    },
    "VkSemaphoreGetZirconHandleInfoFUCHSIA": {
      "core": [
        {
          "vuid": "VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-handleType-04758",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-semaphore-04759",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-handleType-04760",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-handleType-04761",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-handleType-04762",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> be defined as a Zircon event handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-semaphore-04763",
          "text": "<code>semaphore</code> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_BINARY</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-semaphore-parameter",
          "text": "<code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphore\">VkSemaphore</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-handleType-parameter",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroySemaphore": {
      "core": [
        {
          "vuid": "VUID-vkDestroySemaphore-semaphore-05149",
          "text": "All     submitted batches that refer to <code>semaphore</code> <strong class=\"purple\">must</strong> have completed     execution",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroySemaphore-semaphore-01138",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroySemaphore-semaphore-01139",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroySemaphore-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroySemaphore-semaphore-parameter",
          "text": "If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphore\">VkSemaphore</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroySemaphore-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroySemaphore-semaphore-parent",
          "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>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetSemaphoreCounterValue": {
      "core": [
        {
          "vuid": "VUID-vkGetSemaphoreCounterValue-semaphore-03255",
          "text": "<code>semaphore</code> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetSemaphoreCounterValue-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetSemaphoreCounterValue-semaphore-parameter",
          "text": "<code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphore\">VkSemaphore</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetSemaphoreCounterValue-pValue-parameter",
          "text": "<code>pValue</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint64_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetSemaphoreCounterValue-semaphore-parent",
          "text": "<code>semaphore</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkWaitSemaphores": {
      "core": [
        {
          "vuid": "VUID-vkWaitSemaphores-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWaitSemaphores-pWaitInfo-parameter",
          "text": "<code>pWaitInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSemaphoreWaitInfo\">VkSemaphoreWaitInfo</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkSemaphoreWaitInfo": {
      "core": [
        {
          "vuid": "VUID-VkSemaphoreWaitInfo-pSemaphores-03256",
          "text": "All of the elements of <code>pSemaphores</code> <strong class=\"purple\">must</strong> reference a semaphore that was created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreWaitInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreWaitInfo-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreWaitInfo-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSemaphoreWaitFlagBits\">VkSemaphoreWaitFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreWaitInfo-pSemaphores-parameter",
          "text": "<code>pSemaphores</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>semaphoreCount</code> valid <a href=\"#VkSemaphore\">VkSemaphore</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreWaitInfo-pValues-parameter",
          "text": "<code>pValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>semaphoreCount</code> <code>uint64_t</code> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreWaitInfo-semaphoreCount-arraylength",
          "text": "<code>semaphoreCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkSignalSemaphore": {
      "core": [
        {
          "vuid": "VUID-vkSignalSemaphore-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSignalSemaphore-pSignalInfo-parameter",
          "text": "<code>pSignalInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSemaphoreSignalInfo\">VkSemaphoreSignalInfo</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkSemaphoreSignalInfo": {
      "core": [
        {
          "vuid": "VUID-VkSemaphoreSignalInfo-semaphore-03257",
          "text": "<code>semaphore</code> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreSignalInfo-value-03258",
          "text": "<code>value</code> <strong class=\"purple\">must</strong> have a value greater than the current value of the semaphore",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreSignalInfo-value-03259",
          "text": "<code>value</code> <strong class=\"purple\">must</strong> be less than the value of any pending semaphore signal operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreSignalInfo-value-03260",
          "text": "<code>value</code> <strong class=\"purple\">must</strong> have a value which does not differ from the current value of the semaphore or the value of any outstanding semaphore wait or signal operation on <code>semaphore</code> by more than <a href=\"#limits-maxTimelineSemaphoreValueDifference\"><code>maxTimelineSemaphoreValueDifference</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreSignalInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreSignalInfo-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSemaphoreSignalInfo-semaphore-parameter",
          "text": "<code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphore\">VkSemaphore</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "vkImportSemaphoreWin32HandleKHR": {
      "core": [
        {
          "vuid": "VUID-vkImportSemaphoreWin32HandleKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkImportSemaphoreWin32HandleKHR-pImportSemaphoreWin32HandleInfo-parameter",
          "text": "<code>pImportSemaphoreWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImportSemaphoreWin32HandleInfoKHR\">VkImportSemaphoreWin32HandleInfoKHR</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkImportSemaphoreWin32HandleInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01140",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> be a value included in the <a href=\"#synchronization-semaphore-handletypes-win32\">Handle Types Supported by <code>VkImportSemaphoreWin32HandleInfoKHR</code></a> table",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01466",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01467",
          "text": "If <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01468",
          "text": "If <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handle-01469",
          "text": "If <code>handle</code> is not <code>NULL</code>, <code>name</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handle-01542",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-name-01543",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-03261",
          "text": "If <code>handleType</code> is <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT</code> or <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT</code>, the <a href=\"#VkSemaphoreCreateInfo\">VkSemaphoreCreateInfo</a>::<code>flags</code> field <strong class=\"purple\">must</strong> match that of the semaphore from which <code>handle</code> or <code>name</code> was exported",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-03262",
          "text": "If <code>handleType</code> is <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT</code> or <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT</code>, the <a href=\"#VkSemaphoreTypeCreateInfo\">VkSemaphoreTypeCreateInfo</a>::<code>semaphoreType</code> field <strong class=\"purple\">must</strong> match that of the semaphore from which <code>handle</code> or <code>name</code> was exported",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-flags-03322",
          "text": "If <code>flags</code> contains <code>VK_SEMAPHORE_IMPORT_TEMPORARY_BIT</code>, the <a href=\"#VkSemaphoreTypeCreateInfo\">VkSemaphoreTypeCreateInfo</a>::<code>semaphoreType</code> field of the semaphore from which <code>handle</code> or <code>name</code> was exported <strong class=\"purple\">must</strong> not be <code>VK_SEMAPHORE_TYPE_TIMELINE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-semaphore-parameter",
          "text": "<code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphore\">VkSemaphore</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSemaphoreImportFlagBits\">VkSemaphoreImportFlagBits</a> values",
          "page": "vkspec"
        }
      ]
    },
    "vkImportSemaphoreFdKHR": {
      "core": [
        {
          "vuid": "VUID-vkImportSemaphoreFdKHR-semaphore-01142",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkImportSemaphoreFdKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkImportSemaphoreFdKHR-pImportSemaphoreFdInfo-parameter",
          "text": "<code>pImportSemaphoreFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImportSemaphoreFdInfoKHR\">VkImportSemaphoreFdInfoKHR</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkImportSemaphoreFdInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkImportSemaphoreFdInfoKHR-handleType-01143",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> be a value included in the <a href=\"#synchronization-semaphore-handletypes-fd\">Handle Types Supported by <code>VkImportSemaphoreFdInfoKHR</code></a> table",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportSemaphoreFdInfoKHR-fd-01544",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportSemaphoreFdInfoKHR-handleType-03263",
          "text": "If <code>handleType</code> is <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT</code>, the <a href=\"#VkSemaphoreCreateInfo\">VkSemaphoreCreateInfo</a>::<code>flags</code> field <strong class=\"purple\">must</strong> match that of the semaphore from which <code>fd</code> was exported",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportSemaphoreFdInfoKHR-handleType-07307",
          "text": "If <code>handleType</code> refers to a handle type with copy payload transference semantics, <code>flags</code> <strong class=\"purple\">must</strong> contain <code>VK_SEMAPHORE_IMPORT_TEMPORARY_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportSemaphoreFdInfoKHR-handleType-03264",
          "text": "If <code>handleType</code> is <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT</code>, the <a href=\"#VkSemaphoreTypeCreateInfo\">VkSemaphoreTypeCreateInfo</a>::<code>semaphoreType</code> field <strong class=\"purple\">must</strong> match that of the semaphore from which <code>fd</code> was exported",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportSemaphoreFdInfoKHR-flags-03323",
          "text": "If <code>flags</code> contains <code>VK_SEMAPHORE_IMPORT_TEMPORARY_BIT</code>, the <a href=\"#VkSemaphoreTypeCreateInfo\">VkSemaphoreTypeCreateInfo</a>::<code>semaphoreType</code> field of the semaphore from which <code>fd</code> was exported <strong class=\"purple\">must</strong> not be <code>VK_SEMAPHORE_TYPE_TIMELINE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportSemaphoreFdInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportSemaphoreFdInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportSemaphoreFdInfoKHR-semaphore-parameter",
          "text": "<code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphore\">VkSemaphore</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportSemaphoreFdInfoKHR-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSemaphoreImportFlagBits\">VkSemaphoreImportFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportSemaphoreFdInfoKHR-handleType-parameter",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkImportSemaphoreZirconHandleFUCHSIA": {
      "core": [
        {
          "vuid": "VUID-vkImportSemaphoreZirconHandleFUCHSIA-semaphore-04764",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkImportSemaphoreZirconHandleFUCHSIA-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkImportSemaphoreZirconHandleFUCHSIA-pImportSemaphoreZirconHandleInfo-parameter",
          "text": "<code>pImportSemaphoreZirconHandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImportSemaphoreZirconHandleInfoFUCHSIA\">VkImportSemaphoreZirconHandleInfoFUCHSIA</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkImportSemaphoreZirconHandleInfoFUCHSIA": {
      "core": [
        {
          "vuid": "VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-handleType-04765",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> be a value included in the <a href=\"#synchronization-semaphore-handletypes-fuchsia\">Handle Types Supported by <code>VkImportSemaphoreZirconHandleInfoFUCHSIA</code></a> table",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-zirconHandle-04766",
          "text": "<code>zirconHandle</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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-zirconHandle-04767",
          "text": "<code>zirconHandle</code> <strong class=\"purple\">must</strong> have <code>ZX_RIGHTS_BASIC</code> and <code>ZX_RIGHTS_SIGNAL</code> rights",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-semaphoreType-04768",
          "text": "The <a href=\"#VkSemaphoreTypeCreateInfo\">VkSemaphoreTypeCreateInfo</a>::<code>semaphoreType</code> field <strong class=\"purple\">must</strong> not be <code>VK_SEMAPHORE_TYPE_TIMELINE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-semaphore-parameter",
          "text": "<code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphore\">VkSemaphore</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSemaphoreImportFlagBits\">VkSemaphoreImportFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-handleType-parameter",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateEvent": {
      "core": [
        {
          "vuid": "VUID-vkCreateEvent-device-09672",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> support at least one queue family with one of the <code>VK_QUEUE_VIDEO_ENCODE_BIT_KHR</code>, <code>VK_QUEUE_VIDEO_DECODE_BIT_KHR</code>, <code>VK_QUEUE_COMPUTE_BIT</code>, or <code>VK_QUEUE_GRAPHICS_BIT</code> capabilities",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateEvent-events-04468",
          "text": "If the <code><a href=\"#VK_KHR_portability_subset\">VK_KHR_portability_subset</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>events</code> is <code>VK_FALSE</code>, then the implementation does not support <a href=\"#synchronization-events\">events</a>, and <a href=\"#vkCreateEvent\">vkCreateEvent</a> <strong class=\"purple\">must</strong> not be used",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateEvent-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateEvent-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkEventCreateInfo\">VkEventCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateEvent-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateEvent-pEvent-parameter",
          "text": "<code>pEvent</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkEvent\">VkEvent</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkEventCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkEventCreateInfo-pNext-06790",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkExportMetalObjectCreateInfoEXT\">VkExportMetalObjectCreateInfoEXT</a> structure, its <code>exportObjectType</code> member <strong class=\"purple\">must</strong> be <code>VK_EXPORT_METAL_OBJECT_TYPE_METAL_SHARED_EVENT_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkEventCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EVENT_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkEventCreateInfo-pNext-pNext",
          "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=\"#VkExportMetalObjectCreateInfoEXT\">VkExportMetalObjectCreateInfoEXT</a> or <a href=\"#VkImportMetalSharedEventInfoEXT\">VkImportMetalSharedEventInfoEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkEventCreateInfo-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique, with the exception of structures of type <a href=\"#VkExportMetalObjectCreateInfoEXT\">VkExportMetalObjectCreateInfoEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkEventCreateInfo-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkEventCreateFlagBits\">VkEventCreateFlagBits</a> values",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroyEvent": {
      "core": [
        {
          "vuid": "VUID-vkDestroyEvent-event-01145",
          "text": "All submitted commands that refer to <code>event</code> <strong class=\"purple\">must</strong> have completed execution",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyEvent-event-01146",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyEvent-event-01147",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyEvent-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyEvent-event-parameter",
          "text": "If <code>event</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>event</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkEvent\">VkEvent</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyEvent-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyEvent-event-parent",
          "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>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetEventStatus": {
      "core": [
        {
          "vuid": "VUID-vkGetEventStatus-event-03940",
          "text": "<code>event</code> <strong class=\"purple\">must</strong> not have been created with <code>VK_EVENT_CREATE_DEVICE_ONLY_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetEventStatus-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetEventStatus-event-parameter",
          "text": "<code>event</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkEvent\">VkEvent</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetEventStatus-event-parent",
          "text": "<code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkSetEvent": {
      "core": [
        {
          "vuid": "VUID-vkSetEvent-event-03941",
          "text": "<code>event</code> <strong class=\"purple\">must</strong> not have been created with <code>VK_EVENT_CREATE_DEVICE_ONLY_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetEvent-event-09543",
          "text": "<code>event</code> <strong class=\"purple\">must</strong> not be waited on by a command buffer in the <a href=\"#commandbuffers-lifecycle\">pending state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetEvent-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetEvent-event-parameter",
          "text": "<code>event</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkEvent\">VkEvent</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetEvent-event-parent",
          "text": "<code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkResetEvent": {
      "core": [
        {
          "vuid": "VUID-vkResetEvent-event-03821",
          "text": "There <strong class=\"purple\">must</strong> be an execution dependency between <code>vkResetEvent</code> and the execution of any <a href=\"#vkCmdWaitEvents\">vkCmdWaitEvents</a> that includes <code>event</code> in its <code>pEvents</code> parameter",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkResetEvent-event-03822",
          "text": "There <strong class=\"purple\">must</strong> be an execution dependency between <code>vkResetEvent</code> and the execution of any <a href=\"#vkCmdWaitEvents2\">vkCmdWaitEvents2</a> that includes <code>event</code> in its <code>pEvents</code> parameter",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkResetEvent-event-03823",
          "text": "<code>event</code> <strong class=\"purple\">must</strong> not have been created with <code>VK_EVENT_CREATE_DEVICE_ONLY_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkResetEvent-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkResetEvent-event-parameter",
          "text": "<code>event</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkEvent\">VkEvent</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkResetEvent-event-parent",
          "text": "<code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetEvent2": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetEvent2-synchronization2-03824",
          "text": "The <a href=\"#features-synchronization2\"><code>synchronization2</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetEvent2-dependencyFlags-03825",
          "text": "The <code>dependencyFlags</code> member of <code>pDependencyInfo</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetEvent2-srcStageMask-09391",
          "text": "The <code>srcStageMask</code> member of any element of the <code>pMemoryBarriers</code>, <code>pBufferMemoryBarriers</code>, or <code>pImageMemoryBarriers</code> members of <code>pDependencyInfo</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_2_HOST_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetEvent2-dstStageMask-09392",
          "text": "The <code>dstStageMask</code> member of any element of the <code>pMemoryBarriers</code>, <code>pBufferMemoryBarriers</code>, or <code>pImageMemoryBarriers</code> members of <code>pDependencyInfo</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_2_HOST_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetEvent2-commandBuffer-03826",
          "text": "The current device mask of <code>commandBuffer</code> <strong class=\"purple\">must</strong> include exactly one physical device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetEvent2-srcStageMask-03827",
          "text": "The <code>srcStageMask</code> member of any element of the <code>pMemoryBarriers</code>, <code>pBufferMemoryBarriers</code>, or <code>pImageMemoryBarriers</code> members of <code>pDependencyInfo</code> <strong class=\"purple\">must</strong> only include pipeline stages valid for the queue family that was used to create the command pool that <code>commandBuffer</code> was allocated from",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetEvent2-dstStageMask-03828",
          "text": "The <code>dstStageMask</code> member of any element of the <code>pMemoryBarriers</code>, <code>pBufferMemoryBarriers</code>, or <code>pImageMemoryBarriers</code> members of <code>pDependencyInfo</code> <strong class=\"purple\">must</strong> only include pipeline stages valid for the queue family that was used to create the command pool that <code>commandBuffer</code> was allocated from",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetEvent2-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetEvent2-event-parameter",
          "text": "<code>event</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkEvent\">VkEvent</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetEvent2-pDependencyInfo-parameter",
          "text": "<code>pDependencyInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDependencyInfo\">VkDependencyInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetEvent2-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetEvent2-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, decode, or encode operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetEvent2-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetEvent2-commonparent",
          "text": "Both of <code>commandBuffer</code>, and <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkDependencyInfo": {
      "core": [
        {
          "vuid": "VUID-VkDependencyInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEPENDENCY_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDependencyInfo-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDependencyInfo-dependencyFlags-parameter",
          "text": "<code>dependencyFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDependencyFlagBits\">VkDependencyFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDependencyInfo-pMemoryBarriers-parameter",
          "text": "If <code>memoryBarrierCount</code> is not <code>0</code>, <code>pMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>memoryBarrierCount</code> valid <a href=\"#VkMemoryBarrier2\">VkMemoryBarrier2</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDependencyInfo-pBufferMemoryBarriers-parameter",
          "text": "If <code>bufferMemoryBarrierCount</code> is not <code>0</code>, <code>pBufferMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bufferMemoryBarrierCount</code> valid <a href=\"#VkBufferMemoryBarrier2\">VkBufferMemoryBarrier2</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDependencyInfo-pImageMemoryBarriers-parameter",
          "text": "If <code>imageMemoryBarrierCount</code> is not <code>0</code>, <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>imageMemoryBarrierCount</code> valid <a href=\"#VkImageMemoryBarrier2\">VkImageMemoryBarrier2</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetEvent": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetEvent-stageMask-04090",
          "text": "If the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetEvent-stageMask-04091",
          "text": "If the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetEvent-stageMask-04092",
          "text": "If the <a href=\"#features-conditionalRendering\"><code>conditionalRendering</code></a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetEvent-stageMask-04093",
          "text": "If the <a href=\"#features-fragmentDensityMap\"><code>fragmentDensityMap</code></a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetEvent-stageMask-04094",
          "text": "If the <a href=\"#features-transformFeedback\"><code>transformFeedback</code></a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetEvent-stageMask-04095",
          "text": "If the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetEvent-stageMask-04096",
          "text": "If the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetEvent-stageMask-07318",
          "text": "If neither the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> or <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> are enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetEvent-stageMask-03937",
          "text": "If the <a href=\"#features-synchronization2\"><code>synchronization2</code></a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetEvent-stageMask-07949",
          "text": "If neither the <a href=\"#VK_NV_ray_tracing\">VK_NV_ray_tracing</a> extension or <a href=\"#features-rayTracingPipeline\"><code>rayTracingPipeline</code> feature</a> are enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetEvent-stageMask-06457",
          "text": "Any pipeline stage included in <code>stageMask</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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetEvent-stageMask-01149",
          "text": "<code>stageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetEvent-commandBuffer-01152",
          "text": "The current device mask of <code>commandBuffer</code> <strong class=\"purple\">must</strong> include exactly one physical device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetEvent-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetEvent-event-parameter",
          "text": "<code>event</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkEvent\">VkEvent</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetEvent-stageMask-parameter",
          "text": "<code>stageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetEvent-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetEvent-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, decode, or encode operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetEvent-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetEvent-commonparent",
          "text": "Both of <code>commandBuffer</code>, and <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdResetEvent2": {
      "core": [
        {
          "vuid": "VUID-vkCmdResetEvent2-stageMask-03929",
          "text": "If the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent2-stageMask-03930",
          "text": "If the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent2-stageMask-03931",
          "text": "If the <a href=\"#features-conditionalRendering\"><code>conditionalRendering</code></a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent2-stageMask-03932",
          "text": "If the <a href=\"#features-fragmentDensityMap\"><code>fragmentDensityMap</code></a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent2-stageMask-03933",
          "text": "If the <a href=\"#features-transformFeedback\"><code>transformFeedback</code></a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent2-stageMask-03934",
          "text": "If the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent2-stageMask-03935",
          "text": "If the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent2-stageMask-07316",
          "text": "If neither the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> or <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> are enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent2-stageMask-04957",
          "text": "If the <a href=\"#features-subpassShading\"><code>subpassShading</code></a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent2-stageMask-04995",
          "text": "If the <a href=\"#features-invocationMask\"><code>invocationMask</code></a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent2-stageMask-07946",
          "text": "If neither the <a href=\"#VK_NV_ray_tracing\">VK_NV_ray_tracing</a> extension or <a href=\"#features-rayTracingPipeline\"><code>rayTracingPipeline</code> feature</a> are enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent2-synchronization2-03829",
          "text": "The <a href=\"#features-synchronization2\"><code>synchronization2</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent2-stageMask-03830",
          "text": "<code>stageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_2_HOST_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent2-event-03831",
          "text": "There <strong class=\"purple\">must</strong> be an execution dependency between <code>vkCmdResetEvent2</code> and the execution of any <a href=\"#vkCmdWaitEvents\">vkCmdWaitEvents</a> that includes <code>event</code> in its <code>pEvents</code> parameter",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent2-event-03832",
          "text": "There <strong class=\"purple\">must</strong> be an execution dependency between <code>vkCmdResetEvent2</code> and the execution of any <a href=\"#vkCmdWaitEvents2\">vkCmdWaitEvents2</a> that includes <code>event</code> in its <code>pEvents</code> parameter",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent2-commandBuffer-03833",
          "text": "<code>commandBuffer</code>&#8217;s current device mask <strong class=\"purple\">must</strong> include exactly one physical device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent2-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent2-event-parameter",
          "text": "<code>event</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkEvent\">VkEvent</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent2-stageMask-parameter",
          "text": "<code>stageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits2\">VkPipelineStageFlagBits2</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent2-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent2-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, decode, or encode operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent2-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent2-commonparent",
          "text": "Both of <code>commandBuffer</code>, and <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdResetEvent": {
      "core": [
        {
          "vuid": "VUID-vkCmdResetEvent-stageMask-04090",
          "text": "If the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent-stageMask-04091",
          "text": "If the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent-stageMask-04092",
          "text": "If the <a href=\"#features-conditionalRendering\"><code>conditionalRendering</code></a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent-stageMask-04093",
          "text": "If the <a href=\"#features-fragmentDensityMap\"><code>fragmentDensityMap</code></a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent-stageMask-04094",
          "text": "If the <a href=\"#features-transformFeedback\"><code>transformFeedback</code></a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent-stageMask-04095",
          "text": "If the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent-stageMask-04096",
          "text": "If the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent-stageMask-07318",
          "text": "If neither the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> or <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> are enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent-stageMask-03937",
          "text": "If the <a href=\"#features-synchronization2\"><code>synchronization2</code></a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent-stageMask-07949",
          "text": "If neither the <a href=\"#VK_NV_ray_tracing\">VK_NV_ray_tracing</a> extension or <a href=\"#features-rayTracingPipeline\"><code>rayTracingPipeline</code> feature</a> are enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent-stageMask-06458",
          "text": "Any pipeline stage included in <code>stageMask</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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent-stageMask-01153",
          "text": "<code>stageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent-event-03834",
          "text": "There <strong class=\"purple\">must</strong> be an execution dependency between <code>vkCmdResetEvent</code> and the execution of any <a href=\"#vkCmdWaitEvents\">vkCmdWaitEvents</a> that includes <code>event</code> in its <code>pEvents</code> parameter",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent-event-03835",
          "text": "There <strong class=\"purple\">must</strong> be an execution dependency between <code>vkCmdResetEvent</code> and the execution of any <a href=\"#vkCmdWaitEvents2\">vkCmdWaitEvents2</a> that includes <code>event</code> in its <code>pEvents</code> parameter",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent-commandBuffer-01157",
          "text": "<code>commandBuffer</code>&#8217;s current device mask <strong class=\"purple\">must</strong> include exactly one physical device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent-event-parameter",
          "text": "<code>event</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkEvent\">VkEvent</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent-stageMask-parameter",
          "text": "<code>stageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, decode, or encode operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetEvent-commonparent",
          "text": "Both of <code>commandBuffer</code>, and <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdWaitEvents2": {
      "core": [
        {
          "vuid": "VUID-vkCmdWaitEvents2-synchronization2-03836",
          "text": "The <a href=\"#features-synchronization2\"><code>synchronization2</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents2-pEvents-03837",
          "text": "Members of <code>pEvents</code> <strong class=\"purple\">must</strong> not have been signaled by <a href=\"#vkCmdSetEvent\">vkCmdSetEvent</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents2-pEvents-03838",
          "text": "For any element <span class=\"eq\">i</span> of <code>pEvents</code>, if that event is signaled by <a href=\"#vkCmdSetEvent2\">vkCmdSetEvent2</a>, that command&#8217;s <code>dependencyInfo</code> parameter <strong class=\"purple\">must</strong> be exactly equal to the <span class=\"eq\">i</span>th element of <code>pDependencyInfos</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents2-pEvents-03839",
          "text": "For any element <span class=\"eq\">i</span> of <code>pEvents</code>, if that event is signaled by <a href=\"#vkSetEvent\">vkSetEvent</a>, barriers in the <span class=\"eq\">i</span>th element of <code>pDependencyInfos</code> <strong class=\"purple\">must</strong> include only host operations in their first <a href=\"#synchronization-dependencies-scopes\">synchronization scope</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents2-pEvents-03840",
          "text": "For any element <span class=\"eq\">i</span> of <code>pEvents</code>, if barriers in the <span class=\"eq\">i</span>th element of <code>pDependencyInfos</code> include only host operations, the <span class=\"eq\">i</span>th element of <code>pEvents</code> <strong class=\"purple\">must</strong> be signaled before <a href=\"#vkCmdWaitEvents2\">vkCmdWaitEvents2</a> is executed",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents2-pEvents-03841",
          "text": "For any element <span class=\"eq\">i</span> of <code>pEvents</code>, if barriers in the <span class=\"eq\">i</span>th element of <code>pDependencyInfos</code> do not include host operations, the <span class=\"eq\">i</span>th element of <code>pEvents</code> <strong class=\"purple\">must</strong> be signaled by a corresponding <a href=\"#vkCmdSetEvent2\">vkCmdSetEvent2</a> that occurred earlier in <a href=\"#synchronization-submission-order\">submission order</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents2-srcStageMask-03842",
          "text": "The <code>srcStageMask</code> member of any element of the <code>pMemoryBarriers</code>, <code>pBufferMemoryBarriers</code>, or <code>pImageMemoryBarriers</code> members of <code>pDependencyInfos</code> <strong class=\"purple\">must</strong> only include pipeline stages valid for the queue family that was used to create the command pool that <code>commandBuffer</code> was allocated from",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents2-dstStageMask-03843",
          "text": "The <code>dstStageMask</code> member of any element of the <code>pMemoryBarriers</code>, <code>pBufferMemoryBarriers</code>, or <code>pImageMemoryBarriers</code> members of <code>pDependencyInfos</code> <strong class=\"purple\">must</strong> only include pipeline stages valid for the queue family that was used to create the command pool that <code>commandBuffer</code> was allocated from",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents2-dependencyFlags-03844",
          "text": "If <code>vkCmdWaitEvents2</code> is being called inside a render pass instance, the <code>srcStageMask</code> member of any element of the <code>pMemoryBarriers</code>, <code>pBufferMemoryBarriers</code>, or <code>pImageMemoryBarriers</code> members of <code>pDependencyInfos</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_2_HOST_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents2-commandBuffer-03846",
          "text": "<code>commandBuffer</code>&#8217;s current device mask <strong class=\"purple\">must</strong> include exactly one physical device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents2-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents2-pEvents-parameter",
          "text": "<code>pEvents</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>eventCount</code> valid <a href=\"#VkEvent\">VkEvent</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents2-pDependencyInfos-parameter",
          "text": "<code>pDependencyInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>eventCount</code> valid <a href=\"#VkDependencyInfo\">VkDependencyInfo</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents2-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents2-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, decode, or encode operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents2-eventCount-arraylength",
          "text": "<code>eventCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents2-commonparent",
          "text": "Both of <code>commandBuffer</code>, and the elements of <code>pEvents</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdWaitEvents": {
      "core": [
        {
          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-04090",
          "text": "If the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-04091",
          "text": "If the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-04092",
          "text": "If the <a href=\"#features-conditionalRendering\"><code>conditionalRendering</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-04093",
          "text": "If the <a href=\"#features-fragmentDensityMap\"><code>fragmentDensityMap</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-04094",
          "text": "If the <a href=\"#features-transformFeedback\"><code>transformFeedback</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-04095",
          "text": "If the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-04096",
          "text": "If the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-07318",
          "text": "If neither the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> or <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> are enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-03937",
          "text": "If the <a href=\"#features-synchronization2\"><code>synchronization2</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-07949",
          "text": "If neither the <a href=\"#VK_NV_ray_tracing\">VK_NV_ray_tracing</a> extension or <a href=\"#features-rayTracingPipeline\"><code>rayTracingPipeline</code> feature</a> are enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-srcAccessMask-06257",
          "text": "If the <a href=\"#features-rayQuery\"><code>rayQuery</code></a> feature is not enabled and a memory barrier <code>srcAccessMask</code> includes <code>VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not include any of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages except <code>VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-dstStageMask-04090",
          "text": "If the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-dstStageMask-04091",
          "text": "If the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-dstStageMask-04092",
          "text": "If the <a href=\"#features-conditionalRendering\"><code>conditionalRendering</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-dstStageMask-04093",
          "text": "If the <a href=\"#features-fragmentDensityMap\"><code>fragmentDensityMap</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-dstStageMask-04094",
          "text": "If the <a href=\"#features-transformFeedback\"><code>transformFeedback</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-dstStageMask-04095",
          "text": "If the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-dstStageMask-04096",
          "text": "If the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-dstStageMask-07318",
          "text": "If neither the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> or <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> are enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-dstStageMask-03937",
          "text": "If the <a href=\"#features-synchronization2\"><code>synchronization2</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-dstStageMask-07949",
          "text": "If neither the <a href=\"#VK_NV_ray_tracing\">VK_NV_ray_tracing</a> extension or <a href=\"#features-rayTracingPipeline\"><code>rayTracingPipeline</code> feature</a> are enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-dstAccessMask-06257",
          "text": "If the <a href=\"#features-rayQuery\"><code>rayQuery</code></a> feature is not enabled and a memory barrier <code>dstAccessMask</code> includes <code>VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not include any of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages except <code>VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-srcAccessMask-02815",
          "text": "The <code>srcAccessMask</code> member of each element of <code>pMemoryBarriers</code> <strong class=\"purple\">must</strong> only include access flags that are supported by one or more of the pipeline stages in <code>srcStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-dstAccessMask-02816",
          "text": "The <code>dstAccessMask</code> member of each element of <code>pMemoryBarriers</code> <strong class=\"purple\">must</strong> only include access flags that are supported by one or more of the pipeline stages in <code>dstStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-pBufferMemoryBarriers-02817",
          "text": "For any element of <code>pBufferMemoryBarriers</code>, if its <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> members are equal, or if its <code>srcQueueFamilyIndex</code> is the queue family index that was used to create the command pool that <code>commandBuffer</code> was allocated from, then its <code>srcAccessMask</code> member <strong class=\"purple\">must</strong> only contain access flags that are supported by one or more of the pipeline stages in <code>srcStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-pBufferMemoryBarriers-02818",
          "text": "For any element of <code>pBufferMemoryBarriers</code>, if its <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> members are equal, or if its <code>dstQueueFamilyIndex</code> is the queue family index that was used to create the command pool that <code>commandBuffer</code> was allocated from, then its <code>dstAccessMask</code> member <strong class=\"purple\">must</strong> only contain access flags that are supported by one or more of the pipeline stages in <code>dstStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-pImageMemoryBarriers-02819",
          "text": "For any element of <code>pImageMemoryBarriers</code>, if its <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> members are equal, or if its <code>srcQueueFamilyIndex</code> is the queue family index that was used to create the command pool that <code>commandBuffer</code> was allocated from, then its <code>srcAccessMask</code> member <strong class=\"purple\">must</strong> only contain access flags that are supported by one or more of the pipeline stages in <code>srcStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-pImageMemoryBarriers-02820",
          "text": "For any element of <code>pImageMemoryBarriers</code>, if its <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> members are equal, or if its <code>dstQueueFamilyIndex</code> is the queue family index that was used to create the command pool that <code>commandBuffer</code> was allocated from, then its <code>dstAccessMask</code> member <strong class=\"purple\">must</strong> only contain access flags that are supported by one or more of the pipeline stages in <code>dstStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-06459",
          "text": "Any pipeline stage included in <code>srcStageMask</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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-dstStageMask-06460",
          "text": "Any pipeline stage included in <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-01158",
          "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 elements of <code>pEvents</code> and <code>VK_PIPELINE_STAGE_HOST_BIT</code> if any of the elements of <code>pEvents</code> was set using <code>vkSetEvent</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-07308",
          "text": "If <code>vkCmdWaitEvents</code> is being called inside a render pass instance, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-srcQueueFamilyIndex-02803",
          "text": "The <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> members of any element of <code>pBufferMemoryBarriers</code> or <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be equal",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-commandBuffer-01167",
          "text": "<code>commandBuffer</code>&#8217;s current device mask <strong class=\"purple\">must</strong> include exactly one physical device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-pEvents-03847",
          "text": "Elements of <code>pEvents</code> <strong class=\"purple\">must</strong> not have been signaled by <a href=\"#vkCmdSetEvent2\">vkCmdSetEvent2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-pEvents-parameter",
          "text": "<code>pEvents</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>eventCount</code> valid <a href=\"#VkEvent\">VkEvent</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-parameter",
          "text": "<code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-dstStageMask-parameter",
          "text": "<code>dstStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-pMemoryBarriers-parameter",
          "text": "If <code>memoryBarrierCount</code> is not <code>0</code>, <code>pMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>memoryBarrierCount</code> valid <a href=\"#VkMemoryBarrier\">VkMemoryBarrier</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-pBufferMemoryBarriers-parameter",
          "text": "If <code>bufferMemoryBarrierCount</code> is not <code>0</code>, <code>pBufferMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bufferMemoryBarrierCount</code> valid <a href=\"#VkBufferMemoryBarrier\">VkBufferMemoryBarrier</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-pImageMemoryBarriers-parameter",
          "text": "If <code>imageMemoryBarrierCount</code> is not <code>0</code>, <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>imageMemoryBarrierCount</code> valid <a href=\"#VkImageMemoryBarrier\">VkImageMemoryBarrier</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, decode, or encode operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-eventCount-arraylength",
          "text": "<code>eventCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWaitEvents-commonparent",
          "text": "Both of <code>commandBuffer</code>, and the elements of <code>pEvents</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdPipelineBarrier2": {
      "core": [
        {
          "vuid": "VUID-vkCmdPipelineBarrier2-None-07889",
          "text": "If <code>vkCmdPipelineBarrier2</code> is called within a render pass instance using a <a href=\"#VkRenderPass\">VkRenderPass</a> object, the render pass <strong class=\"purple\">must</strong> have been created with at least one subpass dependency that expresses a dependency from the current subpass to itself, does not include <code>VK_DEPENDENCY_BY_REGION_BIT</code> if this command does not, does not include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code> if this command does not, and has <a href=\"#synchronization-dependencies-scopes\">synchronization scopes</a> and <a href=\"#synchronization-dependencies-access-scopes\">access scopes</a> that are all supersets of the scopes defined in this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier2-bufferMemoryBarrierCount-01178",
          "text": "If <code>vkCmdPipelineBarrier2</code> is called within a render pass instance using a <a href=\"#VkRenderPass\">VkRenderPass</a> object, it <strong class=\"purple\">must</strong> not include any buffer memory barriers",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier2-image-04073",
          "text": "If <code>vkCmdPipelineBarrier2</code> is called within a render pass instance using a <a href=\"#VkRenderPass\">VkRenderPass</a> object, the <code>image</code> member of any image memory barrier included in this command <strong class=\"purple\">must</strong> be an attachment used in the current subpass both as an input attachment, and as either a color, color resolve, or depth/stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier2-image-09373",
          "text": "If <code>vkCmdPipelineBarrier2</code> is called within a render pass instance using a <a href=\"#VkRenderPass\">VkRenderPass</a> object, and the <code>image</code> member of any image memory barrier is a color resolve attachment, the corresponding color attachment <strong class=\"purple\">must</strong> be <code>VK_ATTACHMENT_UNUSED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier2-image-09374",
          "text": "If <code>vkCmdPipelineBarrier2</code> is called within a render pass instance using a <a href=\"#VkRenderPass\">VkRenderPass</a> object, and the <code>image</code> member of any image memory barrier is a color resolve attachment, it <strong class=\"purple\">must</strong> have been created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier2-oldLayout-01181",
          "text": "If <code>vkCmdPipelineBarrier2</code> is called within a render pass instance, the <code>oldLayout</code> and <code>newLayout</code> members of any image memory barrier included in this command <strong class=\"purple\">must</strong> be equal",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier2-srcQueueFamilyIndex-01182",
          "text": "If <code>vkCmdPipelineBarrier2</code> is called within a render pass instance, the <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> members of any memory barrier included in this command <strong class=\"purple\">must</strong> be equal",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier2-None-07890",
          "text": "If <code>vkCmdPipelineBarrier2</code> is called within a render pass instance, and the source stage masks of any memory barriers include <a href=\"#synchronization-framebuffer-regions\">framebuffer-space stages</a>, destination stage masks of all memory barriers <strong class=\"purple\">must</strong> only include <a href=\"#synchronization-framebuffer-regions\">framebuffer-space stages</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier2-dependencyFlags-07891",
          "text": "If <code>vkCmdPipelineBarrier2</code> is called within a render pass instance, and the source stage masks of any memory barriers include <a href=\"#synchronization-framebuffer-regions\">framebuffer-space stages</a>, then <code>dependencyFlags</code> <strong class=\"purple\">must</strong> include <code>VK_DEPENDENCY_BY_REGION_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier2-None-07892",
          "text": "If <code>vkCmdPipelineBarrier2</code> is called within a render pass instance, the source and destination stage masks of any memory barriers <strong class=\"purple\">must</strong> only include graphics pipeline stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier2-dependencyFlags-01186",
          "text": "If <code>vkCmdPipelineBarrier2</code> is called outside of a render pass instance, the dependency flags <strong class=\"purple\">must</strong> not include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier2-None-07893",
          "text": "If <code>vkCmdPipelineBarrier2</code> is called inside a render pass instance, and there is more than one view in the current subpass, dependency flags <strong class=\"purple\">must</strong> include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier2-None-09553",
          "text": "If     none of the <a href=\"#features-shaderTileImageColorReadAccess\"><code>shaderTileImageColorReadAccess</code></a>,     <a href=\"#features-shaderTileImageStencilReadAccess\"><code>shaderTileImageStencilReadAccess</code></a>, or     <a href=\"#features-shaderTileImageDepthReadAccess\"><code>shaderTileImageDepthReadAccess</code></a> features are enabled, and     the <a href=\"#features-dynamicRenderingLocalRead\"><code>dynamicRenderingLocalRead</code></a> feature is not enabled,     <code>vkCmdPipelineBarrier2</code> <strong class=\"purple\">must</strong> not be called within a render pass instance     started with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier2-None-09554",
          "text": "If the <a href=\"#features-dynamicRenderingLocalRead\"><code>dynamicRenderingLocalRead</code></a> feature is not enabled, and <code>vkCmdPipelineBarrier2</code> is called within a render pass instance started with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there <strong class=\"purple\">must</strong> be no buffer or image memory barriers specified by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier2-None-09586",
          "text": "If the <a href=\"#features-dynamicRenderingLocalRead\"><code>dynamicRenderingLocalRead</code></a> feature is not enabled, and <code>vkCmdPipelineBarrier2</code> is called within a render pass instance started with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, memory barriers specified by this command <strong class=\"purple\">must</strong> only include <code>VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT</code>, <code>VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT</code>, <code>VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT</code>, or <code>VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT</code> in their access masks",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier2-image-09555",
          "text": "If <code>vkCmdPipelineBarrier2</code> is called within a render pass instance started with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and the <code>image</code> member of any image memory barrier is used as an attachment in the current render pass instance, it <strong class=\"purple\">must</strong> be in the <code>VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code> layout",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier2-srcStageMask-09556",
          "text": "If <code>vkCmdPipelineBarrier2</code> is called within a render pass instance started with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, this command <strong class=\"purple\">must</strong> only specify <a href=\"#synchronization-framebuffer-regions\">framebuffer-space stages</a> in <code>srcStageMask</code> and <code>dstStageMask</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier2-synchronization2-03848",
          "text": "The <a href=\"#features-synchronization2\"><code>synchronization2</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier2-srcStageMask-09673",
          "text": "The <code>srcStageMask</code> member of any element of the <code>pMemoryBarriers</code> member of <code>pDependencyInfo</code> <strong class=\"purple\">must</strong> only include pipeline stages valid for the queue family that was used to create the command pool that <code>commandBuffer</code> was allocated from",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier2-dstStageMask-09674",
          "text": "The <code>dstStageMask</code> member of any element of the <code>pMemoryBarriers</code> member of <code>pDependencyInfo</code> <strong class=\"purple\">must</strong> only include pipeline stages valid for the queue family that was used to create the command pool that <code>commandBuffer</code> was allocated from",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier2-srcStageMask-09675",
          "text": "If a buffer or image memory barrier does not specify an <a href=\"#synchronization-queue-transfers-acquire\">acquire operation</a>, the respective <code>srcStageMask</code> member of the element of the <code>pBufferMemoryBarriers</code> or <code>pImageMemoryBarriers</code> members of <code>pDependencyInfo</code> <strong class=\"purple\">must</strong> only include pipeline stages valid for the queue family that was used to create the command pool that <code>commandBuffer</code> was allocated from",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier2-dstStageMask-09676",
          "text": "If a buffer or image memory barrier does not specify an <a href=\"#synchronization-queue-transfers-release\">release operation</a>, the respective <code>dstStageMask</code> member of the element of the <code>pBufferMemoryBarriers</code> or <code>pImageMemoryBarriers</code> members of <code>pDependencyInfo</code> <strong class=\"purple\">must</strong> only include pipeline stages valid for the queue family that was used to create the command pool that <code>commandBuffer</code> was allocated from",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier2-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier2-pDependencyInfo-parameter",
          "text": "<code>pDependencyInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDependencyInfo\">VkDependencyInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier2-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier2-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, compute, decode, or encode operations",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdPipelineBarrier": {
      "core": [
        {
          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-04090",
          "text": "If the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-04091",
          "text": "If the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-04092",
          "text": "If the <a href=\"#features-conditionalRendering\"><code>conditionalRendering</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-04093",
          "text": "If the <a href=\"#features-fragmentDensityMap\"><code>fragmentDensityMap</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-04094",
          "text": "If the <a href=\"#features-transformFeedback\"><code>transformFeedback</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-04095",
          "text": "If the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-04096",
          "text": "If the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-07318",
          "text": "If neither the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> or <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> are enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-03937",
          "text": "If the <a href=\"#features-synchronization2\"><code>synchronization2</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-07949",
          "text": "If neither the <a href=\"#VK_NV_ray_tracing\">VK_NV_ray_tracing</a> extension or <a href=\"#features-rayTracingPipeline\"><code>rayTracingPipeline</code> feature</a> are enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-srcAccessMask-06257",
          "text": "If the <a href=\"#features-rayQuery\"><code>rayQuery</code></a> feature is not enabled and a memory barrier <code>srcAccessMask</code> includes <code>VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not include any of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages except <code>VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-04090",
          "text": "If the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-04091",
          "text": "If the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-04092",
          "text": "If the <a href=\"#features-conditionalRendering\"><code>conditionalRendering</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-04093",
          "text": "If the <a href=\"#features-fragmentDensityMap\"><code>fragmentDensityMap</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-04094",
          "text": "If the <a href=\"#features-transformFeedback\"><code>transformFeedback</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-04095",
          "text": "If the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-04096",
          "text": "If the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-07318",
          "text": "If neither the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> or <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> are enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-03937",
          "text": "If the <a href=\"#features-synchronization2\"><code>synchronization2</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-07949",
          "text": "If neither the <a href=\"#VK_NV_ray_tracing\">VK_NV_ray_tracing</a> extension or <a href=\"#features-rayTracingPipeline\"><code>rayTracingPipeline</code> feature</a> are enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-dstAccessMask-06257",
          "text": "If the <a href=\"#features-rayQuery\"><code>rayQuery</code></a> feature is not enabled and a memory barrier <code>dstAccessMask</code> includes <code>VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not include any of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages except <code>VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-srcAccessMask-02815",
          "text": "The <code>srcAccessMask</code> member of each element of <code>pMemoryBarriers</code> <strong class=\"purple\">must</strong> only include access flags that are supported by one or more of the pipeline stages in <code>srcStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-dstAccessMask-02816",
          "text": "The <code>dstAccessMask</code> member of each element of <code>pMemoryBarriers</code> <strong class=\"purple\">must</strong> only include access flags that are supported by one or more of the pipeline stages in <code>dstStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-02817",
          "text": "For any element of <code>pBufferMemoryBarriers</code>, if its <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> members are equal, or if its <code>srcQueueFamilyIndex</code> is the queue family index that was used to create the command pool that <code>commandBuffer</code> was allocated from, then its <code>srcAccessMask</code> member <strong class=\"purple\">must</strong> only contain access flags that are supported by one or more of the pipeline stages in <code>srcStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-02818",
          "text": "For any element of <code>pBufferMemoryBarriers</code>, if its <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> members are equal, or if its <code>dstQueueFamilyIndex</code> is the queue family index that was used to create the command pool that <code>commandBuffer</code> was allocated from, then its <code>dstAccessMask</code> member <strong class=\"purple\">must</strong> only contain access flags that are supported by one or more of the pipeline stages in <code>dstStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-02819",
          "text": "For any element of <code>pImageMemoryBarriers</code>, if its <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> members are equal, or if its <code>srcQueueFamilyIndex</code> is the queue family index that was used to create the command pool that <code>commandBuffer</code> was allocated from, then its <code>srcAccessMask</code> member <strong class=\"purple\">must</strong> only contain access flags that are supported by one or more of the pipeline stages in <code>srcStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-02820",
          "text": "For any element of <code>pImageMemoryBarriers</code>, if its <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> members are equal, or if its <code>dstQueueFamilyIndex</code> is the queue family index that was used to create the command pool that <code>commandBuffer</code> was allocated from, then its <code>dstAccessMask</code> member <strong class=\"purple\">must</strong> only contain access flags that are supported by one or more of the pipeline stages in <code>dstStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-None-07889",
          "text": "If <code>vkCmdPipelineBarrier</code> is called within a render pass instance using a <a href=\"#VkRenderPass\">VkRenderPass</a> object, the render pass <strong class=\"purple\">must</strong> have been created with at least one subpass dependency that expresses a dependency from the current subpass to itself, does not include <code>VK_DEPENDENCY_BY_REGION_BIT</code> if this command does not, does not include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code> if this command does not, and has <a href=\"#synchronization-dependencies-scopes\">synchronization scopes</a> and <a href=\"#synchronization-dependencies-access-scopes\">access scopes</a> that are all supersets of the scopes defined in this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-bufferMemoryBarrierCount-01178",
          "text": "If <code>vkCmdPipelineBarrier</code> is called within a render pass instance using a <a href=\"#VkRenderPass\">VkRenderPass</a> object, it <strong class=\"purple\">must</strong> not include any buffer memory barriers",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-image-04073",
          "text": "If <code>vkCmdPipelineBarrier</code> is called within a render pass instance using a <a href=\"#VkRenderPass\">VkRenderPass</a> object, the <code>image</code> member of any image memory barrier included in this command <strong class=\"purple\">must</strong> be an attachment used in the current subpass both as an input attachment, and as either a color, color resolve, or depth/stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-image-09373",
          "text": "If <code>vkCmdPipelineBarrier</code> is called within a render pass instance using a <a href=\"#VkRenderPass\">VkRenderPass</a> object, and the <code>image</code> member of any image memory barrier is a color resolve attachment, the corresponding color attachment <strong class=\"purple\">must</strong> be <code>VK_ATTACHMENT_UNUSED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-image-09374",
          "text": "If <code>vkCmdPipelineBarrier</code> is called within a render pass instance using a <a href=\"#VkRenderPass\">VkRenderPass</a> object, and the <code>image</code> member of any image memory barrier is a color resolve attachment, it <strong class=\"purple\">must</strong> have been created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-oldLayout-01181",
          "text": "If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the <code>oldLayout</code> and <code>newLayout</code> members of any image memory barrier included in this command <strong class=\"purple\">must</strong> be equal",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-srcQueueFamilyIndex-01182",
          "text": "If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> members of any memory barrier included in this command <strong class=\"purple\">must</strong> be equal",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-None-07890",
          "text": "If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, and the source stage masks of any memory barriers include <a href=\"#synchronization-framebuffer-regions\">framebuffer-space stages</a>, destination stage masks of all memory barriers <strong class=\"purple\">must</strong> only include <a href=\"#synchronization-framebuffer-regions\">framebuffer-space stages</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-dependencyFlags-07891",
          "text": "If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, and the source stage masks of any memory barriers include <a href=\"#synchronization-framebuffer-regions\">framebuffer-space stages</a>, then <code>dependencyFlags</code> <strong class=\"purple\">must</strong> include <code>VK_DEPENDENCY_BY_REGION_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-None-07892",
          "text": "If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the source and destination stage masks of any memory barriers <strong class=\"purple\">must</strong> only include graphics pipeline stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-dependencyFlags-01186",
          "text": "If <code>vkCmdPipelineBarrier</code> is called outside of a render pass instance, the dependency flags <strong class=\"purple\">must</strong> not include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-None-07893",
          "text": "If <code>vkCmdPipelineBarrier</code> is called inside a render pass instance, and there is more than one view in the current subpass, dependency flags <strong class=\"purple\">must</strong> include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-None-09553",
          "text": "If     none of the <a href=\"#features-shaderTileImageColorReadAccess\"><code>shaderTileImageColorReadAccess</code></a>,     <a href=\"#features-shaderTileImageStencilReadAccess\"><code>shaderTileImageStencilReadAccess</code></a>, or     <a href=\"#features-shaderTileImageDepthReadAccess\"><code>shaderTileImageDepthReadAccess</code></a> features are enabled, and     the <a href=\"#features-dynamicRenderingLocalRead\"><code>dynamicRenderingLocalRead</code></a> feature is not enabled,     <code>vkCmdPipelineBarrier</code> <strong class=\"purple\">must</strong> not be called within a render pass instance     started with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-None-09554",
          "text": "If the <a href=\"#features-dynamicRenderingLocalRead\"><code>dynamicRenderingLocalRead</code></a> feature is not enabled, and <code>vkCmdPipelineBarrier</code> is called within a render pass instance started with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there <strong class=\"purple\">must</strong> be no buffer or image memory barriers specified by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-None-09586",
          "text": "If the <a href=\"#features-dynamicRenderingLocalRead\"><code>dynamicRenderingLocalRead</code></a> feature is not enabled, and <code>vkCmdPipelineBarrier</code> is called within a render pass instance started with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, memory barriers specified by this command <strong class=\"purple\">must</strong> only include <code>VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT</code>, <code>VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT</code>, <code>VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT</code>, or <code>VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT</code> in their access masks",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-image-09555",
          "text": "If <code>vkCmdPipelineBarrier</code> is called within a render pass instance started with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and the <code>image</code> member of any image memory barrier is used as an attachment in the current render pass instance, it <strong class=\"purple\">must</strong> be in the <code>VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code> layout",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-09556",
          "text": "If <code>vkCmdPipelineBarrier</code> is called within a render pass instance started with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, this command <strong class=\"purple\">must</strong> only specify <a href=\"#synchronization-framebuffer-regions\">framebuffer-space stages</a> in <code>srcStageMask</code> and <code>dstStageMask</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-06461",
          "text": "Any pipeline stage included in <code>srcStageMask</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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-06462",
          "text": "Any pipeline stage included in <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-09633",
          "text": "If either <code>srcStageMask</code> or <code>dstStageMask</code> includes <code>VK_PIPELINE_STAGE_HOST_BIT</code>, for any element of <code>pImageMemoryBarriers</code>, <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> be equal",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-09634",
          "text": "If either <code>srcStageMask</code> or <code>dstStageMask</code> includes <code>VK_PIPELINE_STAGE_HOST_BIT</code>, for any element of <code>pBufferMemoryBarriers</code>, <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> be equal",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-parameter",
          "text": "<code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-parameter",
          "text": "<code>dstStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-dependencyFlags-parameter",
          "text": "<code>dependencyFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDependencyFlagBits\">VkDependencyFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-pMemoryBarriers-parameter",
          "text": "If <code>memoryBarrierCount</code> is not <code>0</code>, <code>pMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>memoryBarrierCount</code> valid <a href=\"#VkMemoryBarrier\">VkMemoryBarrier</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-parameter",
          "text": "If <code>bufferMemoryBarrierCount</code> is not <code>0</code>, <code>pBufferMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bufferMemoryBarrierCount</code> valid <a href=\"#VkBufferMemoryBarrier\">VkBufferMemoryBarrier</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-parameter",
          "text": "If <code>imageMemoryBarrierCount</code> is not <code>0</code>, <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>imageMemoryBarrierCount</code> valid <a href=\"#VkImageMemoryBarrier\">VkImageMemoryBarrier</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPipelineBarrier-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, compute, decode, or encode operations",
          "page": "vkspec"
        }
      ]
    },
    "VkMemoryBarrier2": {
      "core": [
        {
          "vuid": "VUID-VkMemoryBarrier2-srcStageMask-03929",
          "text": "If the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcStageMask-03930",
          "text": "If the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcStageMask-03931",
          "text": "If the <a href=\"#features-conditionalRendering\"><code>conditionalRendering</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcStageMask-03932",
          "text": "If the <a href=\"#features-fragmentDensityMap\"><code>fragmentDensityMap</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcStageMask-03933",
          "text": "If the <a href=\"#features-transformFeedback\"><code>transformFeedback</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcStageMask-03934",
          "text": "If the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcStageMask-03935",
          "text": "If the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcStageMask-07316",
          "text": "If neither the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> or <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> are enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcStageMask-04957",
          "text": "If the <a href=\"#features-subpassShading\"><code>subpassShading</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcStageMask-04995",
          "text": "If the <a href=\"#features-invocationMask\"><code>invocationMask</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcStageMask-07946",
          "text": "If neither the <a href=\"#VK_NV_ray_tracing\">VK_NV_ray_tracing</a> extension or <a href=\"#features-rayTracingPipeline\"><code>rayTracingPipeline</code> feature</a> are enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03900",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03901",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_INDEX_READ_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT</code>, <code>VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03902",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT</code>, <code>VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03903",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT</code>, <code>VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03904",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_UNIFORM_READ_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03905",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_SHADER_SAMPLED_READ_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03906",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_SHADER_STORAGE_READ_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03907",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-07454",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_SHADER_READ_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03909",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_SHADER_WRITE_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03910",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT</code> <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03911",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT</code> <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03912",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT</code>, <code>VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03913",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT</code>, <code>VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03914",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_TRANSFER_READ_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COPY_BIT</code>, <code>VK_PIPELINE_STAGE_2_BLIT_BIT</code>, <code>VK_PIPELINE_STAGE_2_RESOLVE_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03915",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_TRANSFER_WRITE_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COPY_BIT</code>, <code>VK_PIPELINE_STAGE_2_BLIT_BIT</code>, <code>VK_PIPELINE_STAGE_2_RESOLVE_BIT</code>, <code>VK_PIPELINE_STAGE_2_CLEAR_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code>, or <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03916",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_HOST_READ_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_HOST_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03917",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_HOST_WRITE_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_HOST_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03918",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03919",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03920",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-04747",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT</code>, <code>VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03922",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03923",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-04994",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03924",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV</code> or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03925",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV</code> or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03926",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT</code> <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03927",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03928",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code> or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-06256",
          "text": "If the <a href=\"#features-rayQuery\"><code>rayQuery</code></a> feature is not enabled and <code>srcAccessMask</code> includes <code>VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not include any of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages except <code>VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-07272",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code> or <code>VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-04858",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-04859",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-04860",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-04861",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-07455",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_OPTICAL_FLOW_READ_BIT_NV</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-07456",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-07457",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_MICROMAP_WRITE_BIT_EXT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-07458",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_MICROMAP_READ_BIT_EXT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT</code> or <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-08118",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstStageMask-03929",
          "text": "If the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstStageMask-03930",
          "text": "If the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstStageMask-03931",
          "text": "If the <a href=\"#features-conditionalRendering\"><code>conditionalRendering</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstStageMask-03932",
          "text": "If the <a href=\"#features-fragmentDensityMap\"><code>fragmentDensityMap</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstStageMask-03933",
          "text": "If the <a href=\"#features-transformFeedback\"><code>transformFeedback</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstStageMask-03934",
          "text": "If the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstStageMask-03935",
          "text": "If the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstStageMask-07316",
          "text": "If neither the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> or <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> are enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstStageMask-04957",
          "text": "If the <a href=\"#features-subpassShading\"><code>subpassShading</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstStageMask-04995",
          "text": "If the <a href=\"#features-invocationMask\"><code>invocationMask</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstStageMask-07946",
          "text": "If neither the <a href=\"#VK_NV_ray_tracing\">VK_NV_ray_tracing</a> extension or <a href=\"#features-rayTracingPipeline\"><code>rayTracingPipeline</code> feature</a> are enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03900",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03901",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_INDEX_READ_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT</code>, <code>VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03902",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT</code>, <code>VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03903",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT</code>, <code>VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03904",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_UNIFORM_READ_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03905",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_SHADER_SAMPLED_READ_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03906",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_SHADER_STORAGE_READ_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03907",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-07454",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_SHADER_READ_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03909",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_SHADER_WRITE_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03910",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT</code> <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03911",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT</code> <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03912",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT</code>, <code>VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03913",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT</code>, <code>VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03914",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_TRANSFER_READ_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COPY_BIT</code>, <code>VK_PIPELINE_STAGE_2_BLIT_BIT</code>, <code>VK_PIPELINE_STAGE_2_RESOLVE_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03915",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_TRANSFER_WRITE_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COPY_BIT</code>, <code>VK_PIPELINE_STAGE_2_BLIT_BIT</code>, <code>VK_PIPELINE_STAGE_2_RESOLVE_BIT</code>, <code>VK_PIPELINE_STAGE_2_CLEAR_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code>, or <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03916",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_HOST_READ_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_HOST_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03917",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_HOST_WRITE_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_HOST_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03918",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03919",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03920",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-04747",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT</code>, <code>VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03922",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03923",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-04994",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03924",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV</code> or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03925",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV</code> or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03926",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT</code> <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03927",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03928",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code> or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-06256",
          "text": "If the <a href=\"#features-rayQuery\"><code>rayQuery</code></a> feature is not enabled and <code>dstAccessMask</code> includes <code>VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not include any of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages except <code>VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-07272",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code> or <code>VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-04858",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-04859",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-04860",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-04861",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-07455",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_OPTICAL_FLOW_READ_BIT_NV</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-07456",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-07457",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_MICROMAP_WRITE_BIT_EXT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-07458",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_MICROMAP_READ_BIT_EXT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT</code> or <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-08118",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_BARRIER_2</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcStageMask-parameter",
          "text": "<code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits2\">VkPipelineStageFlagBits2</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-srcAccessMask-parameter",
          "text": "<code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits2\">VkAccessFlagBits2</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstStageMask-parameter",
          "text": "<code>dstStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits2\">VkPipelineStageFlagBits2</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier2-dstAccessMask-parameter",
          "text": "<code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits2\">VkAccessFlagBits2</a> values",
          "page": "vkspec"
        }
      ]
    },
    "VkMemoryBarrier": {
      "core": [
        {
          "vuid": "VUID-VkMemoryBarrier-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_BARRIER</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier-srcAccessMask-parameter",
          "text": "<code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryBarrier-dstAccessMask-parameter",
          "text": "<code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values",
          "page": "vkspec"
        }
      ]
    },
    "VkBufferMemoryBarrier2": {
      "core": [
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcStageMask-03929",
          "text": "If the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcStageMask-03930",
          "text": "If the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcStageMask-03931",
          "text": "If the <a href=\"#features-conditionalRendering\"><code>conditionalRendering</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcStageMask-03932",
          "text": "If the <a href=\"#features-fragmentDensityMap\"><code>fragmentDensityMap</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcStageMask-03933",
          "text": "If the <a href=\"#features-transformFeedback\"><code>transformFeedback</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcStageMask-03934",
          "text": "If the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcStageMask-03935",
          "text": "If the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcStageMask-07316",
          "text": "If neither the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> or <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> are enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcStageMask-04957",
          "text": "If the <a href=\"#features-subpassShading\"><code>subpassShading</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcStageMask-04995",
          "text": "If the <a href=\"#features-invocationMask\"><code>invocationMask</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcStageMask-07946",
          "text": "If neither the <a href=\"#VK_NV_ray_tracing\">VK_NV_ray_tracing</a> extension or <a href=\"#features-rayTracingPipeline\"><code>rayTracingPipeline</code> feature</a> are enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03900",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03901",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_INDEX_READ_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT</code>, <code>VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03902",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT</code>, <code>VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03903",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT</code>, <code>VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03904",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_UNIFORM_READ_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03905",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_SHADER_SAMPLED_READ_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03906",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_SHADER_STORAGE_READ_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03907",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-07454",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_SHADER_READ_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03909",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_SHADER_WRITE_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03910",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT</code> <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03911",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT</code> <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03912",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT</code>, <code>VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03913",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT</code>, <code>VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03914",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_TRANSFER_READ_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COPY_BIT</code>, <code>VK_PIPELINE_STAGE_2_BLIT_BIT</code>, <code>VK_PIPELINE_STAGE_2_RESOLVE_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03915",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_TRANSFER_WRITE_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COPY_BIT</code>, <code>VK_PIPELINE_STAGE_2_BLIT_BIT</code>, <code>VK_PIPELINE_STAGE_2_RESOLVE_BIT</code>, <code>VK_PIPELINE_STAGE_2_CLEAR_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code>, or <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03916",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_HOST_READ_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_HOST_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03917",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_HOST_WRITE_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_HOST_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03918",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03919",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03920",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-04747",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT</code>, <code>VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03922",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03923",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-04994",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03924",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV</code> or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03925",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV</code> or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03926",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT</code> <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03927",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03928",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code> or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-06256",
          "text": "If the <a href=\"#features-rayQuery\"><code>rayQuery</code></a> feature is not enabled and <code>srcAccessMask</code> includes <code>VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not include any of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages except <code>VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-07272",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code> or <code>VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-04858",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-04859",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-04860",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-04861",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-07455",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_OPTICAL_FLOW_READ_BIT_NV</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-07456",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-07457",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_MICROMAP_WRITE_BIT_EXT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-07458",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_MICROMAP_READ_BIT_EXT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT</code> or <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-08118",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstStageMask-03929",
          "text": "If the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstStageMask-03930",
          "text": "If the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstStageMask-03931",
          "text": "If the <a href=\"#features-conditionalRendering\"><code>conditionalRendering</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstStageMask-03932",
          "text": "If the <a href=\"#features-fragmentDensityMap\"><code>fragmentDensityMap</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstStageMask-03933",
          "text": "If the <a href=\"#features-transformFeedback\"><code>transformFeedback</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstStageMask-03934",
          "text": "If the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstStageMask-03935",
          "text": "If the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstStageMask-07316",
          "text": "If neither the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> or <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> are enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstStageMask-04957",
          "text": "If the <a href=\"#features-subpassShading\"><code>subpassShading</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstStageMask-04995",
          "text": "If the <a href=\"#features-invocationMask\"><code>invocationMask</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstStageMask-07946",
          "text": "If neither the <a href=\"#VK_NV_ray_tracing\">VK_NV_ray_tracing</a> extension or <a href=\"#features-rayTracingPipeline\"><code>rayTracingPipeline</code> feature</a> are enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03900",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03901",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_INDEX_READ_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT</code>, <code>VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03902",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT</code>, <code>VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03903",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT</code>, <code>VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03904",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_UNIFORM_READ_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03905",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_SHADER_SAMPLED_READ_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03906",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_SHADER_STORAGE_READ_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03907",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-07454",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_SHADER_READ_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03909",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_SHADER_WRITE_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03910",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT</code> <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03911",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT</code> <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03912",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT</code>, <code>VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03913",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT</code>, <code>VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03914",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_TRANSFER_READ_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COPY_BIT</code>, <code>VK_PIPELINE_STAGE_2_BLIT_BIT</code>, <code>VK_PIPELINE_STAGE_2_RESOLVE_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03915",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_TRANSFER_WRITE_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COPY_BIT</code>, <code>VK_PIPELINE_STAGE_2_BLIT_BIT</code>, <code>VK_PIPELINE_STAGE_2_RESOLVE_BIT</code>, <code>VK_PIPELINE_STAGE_2_CLEAR_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code>, or <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03916",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_HOST_READ_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_HOST_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03917",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_HOST_WRITE_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_HOST_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03918",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03919",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03920",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-04747",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT</code>, <code>VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03922",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03923",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-04994",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03924",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV</code> or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03925",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV</code> or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03926",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT</code> <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03927",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03928",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code> or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-06256",
          "text": "If the <a href=\"#features-rayQuery\"><code>rayQuery</code></a> feature is not enabled and <code>dstAccessMask</code> includes <code>VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not include any of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages except <code>VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-07272",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code> or <code>VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-04858",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-04859",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-04860",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-04861",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-07455",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_OPTICAL_FLOW_READ_BIT_NV</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-07456",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-07457",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_MICROMAP_WRITE_BIT_EXT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-07458",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_MICROMAP_READ_BIT_EXT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT</code> or <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-08118",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-offset-01187",
          "text": "<code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-size-01188",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-size-01189",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-buffer-01931",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-buffer-09095",
          "text": "If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code>, and <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> are not equal, <code>srcQueueFamilyIndex</code> <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_EXTERNAL</code>, <code>VK_QUEUE_FAMILY_FOREIGN_EXT</code>, or a valid queue family",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-buffer-09096",
          "text": "If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code>, and <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> are not equal, <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_EXTERNAL</code>, <code>VK_QUEUE_FAMILY_FOREIGN_EXT</code>, or a valid queue family",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcQueueFamilyIndex-04087",
          "text": "If <code>srcQueueFamilyIndex</code> is not equal to <code>dstQueueFamilyIndex</code>, at least one of <code>srcQueueFamilyIndex</code> or <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> not be <code>VK_QUEUE_FAMILY_EXTERNAL</code> or <code>VK_QUEUE_FAMILY_FOREIGN_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-None-09097",
          "text": "If     the <a href=\"#VK_KHR_external_memory\">VK_KHR_external_memory</a> extension is not enabled, and     the value of <a href=\"#VkApplicationInfo\">VkApplicationInfo</a>::<code>apiVersion</code> used to create     the <a href=\"#VkInstance\">VkInstance</a> is not greater than or equal to Version 1.1,     <code>srcQueueFamilyIndex</code> <strong class=\"purple\">must</strong> not be <code>VK_QUEUE_FAMILY_EXTERNAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-None-09098",
          "text": "If     the <a href=\"#VK_KHR_external_memory\">VK_KHR_external_memory</a> extension is not enabled, and     the value of <a href=\"#VkApplicationInfo\">VkApplicationInfo</a>::<code>apiVersion</code> used to create     the <a href=\"#VkInstance\">VkInstance</a> is not greater than or equal to Version 1.1,     <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> not be <code>VK_QUEUE_FAMILY_EXTERNAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcQueueFamilyIndex-09099",
          "text": "If the <a href=\"#VK_EXT_queue_family_foreign\">VK_EXT_queue_family_foreign</a> extension is not enabled <code>srcQueueFamilyIndex</code> <strong class=\"purple\">must</strong> not be <code>VK_QUEUE_FAMILY_FOREIGN_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstQueueFamilyIndex-09100",
          "text": "If the <a href=\"#VK_EXT_queue_family_foreign\">VK_EXT_queue_family_foreign</a> extension is not enabled <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> not be <code>VK_QUEUE_FAMILY_FOREIGN_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcStageMask-03851",
          "text": "If either <code>srcStageMask</code> or <code>dstStageMask</code> includes <code>VK_PIPELINE_STAGE_2_HOST_BIT</code>, <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> be equal",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkExternalMemoryAcquireUnmodifiedEXT\">VkExternalMemoryAcquireUnmodifiedEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcStageMask-parameter",
          "text": "<code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits2\">VkPipelineStageFlagBits2</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-parameter",
          "text": "<code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits2\">VkAccessFlagBits2</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstStageMask-parameter",
          "text": "<code>dstStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits2\">VkPipelineStageFlagBits2</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-parameter",
          "text": "<code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits2\">VkAccessFlagBits2</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier2-buffer-parameter",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkBufferMemoryBarrier": {
      "core": [
        {
          "vuid": "VUID-VkBufferMemoryBarrier-offset-01187",
          "text": "<code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier-size-01188",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier-size-01189",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier-buffer-01931",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier-buffer-09095",
          "text": "If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code>, and <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> are not equal, <code>srcQueueFamilyIndex</code> <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_EXTERNAL</code>, <code>VK_QUEUE_FAMILY_FOREIGN_EXT</code>, or a valid queue family",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier-buffer-09096",
          "text": "If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code>, and <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> are not equal, <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_EXTERNAL</code>, <code>VK_QUEUE_FAMILY_FOREIGN_EXT</code>, or a valid queue family",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier-srcQueueFamilyIndex-04087",
          "text": "If <code>srcQueueFamilyIndex</code> is not equal to <code>dstQueueFamilyIndex</code>, at least one of <code>srcQueueFamilyIndex</code> or <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> not be <code>VK_QUEUE_FAMILY_EXTERNAL</code> or <code>VK_QUEUE_FAMILY_FOREIGN_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier-None-09097",
          "text": "If     the <a href=\"#VK_KHR_external_memory\">VK_KHR_external_memory</a> extension is not enabled, and     the value of <a href=\"#VkApplicationInfo\">VkApplicationInfo</a>::<code>apiVersion</code> used to create     the <a href=\"#VkInstance\">VkInstance</a> is not greater than or equal to Version 1.1,     <code>srcQueueFamilyIndex</code> <strong class=\"purple\">must</strong> not be <code>VK_QUEUE_FAMILY_EXTERNAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier-None-09098",
          "text": "If     the <a href=\"#VK_KHR_external_memory\">VK_KHR_external_memory</a> extension is not enabled, and     the value of <a href=\"#VkApplicationInfo\">VkApplicationInfo</a>::<code>apiVersion</code> used to create     the <a href=\"#VkInstance\">VkInstance</a> is not greater than or equal to Version 1.1,     <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> not be <code>VK_QUEUE_FAMILY_EXTERNAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier-srcQueueFamilyIndex-09099",
          "text": "If the <a href=\"#VK_EXT_queue_family_foreign\">VK_EXT_queue_family_foreign</a> extension is not enabled <code>srcQueueFamilyIndex</code> <strong class=\"purple\">must</strong> not be <code>VK_QUEUE_FAMILY_FOREIGN_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier-dstQueueFamilyIndex-09100",
          "text": "If the <a href=\"#VK_EXT_queue_family_foreign\">VK_EXT_queue_family_foreign</a> extension is not enabled <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> not be <code>VK_QUEUE_FAMILY_FOREIGN_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier-None-09049",
          "text": "If the <a href=\"#features-synchronization2\"><code>synchronization2</code></a> feature is not enabled, and <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier-None-09050",
          "text": "If the <a href=\"#features-synchronization2\"><code>synchronization2</code></a> feature is not enabled, and <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, <code>srcQueueFamilyIndex</code> <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_IGNORED</code> or <code>VK_QUEUE_FAMILY_EXTERNAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier-None-09051",
          "text": "If the <a href=\"#features-synchronization2\"><code>synchronization2</code></a> feature is not enabled, and <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_IGNORED</code> or <code>VK_QUEUE_FAMILY_EXTERNAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkExternalMemoryAcquireUnmodifiedEXT\">VkExternalMemoryAcquireUnmodifiedEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryBarrier-buffer-parameter",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkImageMemoryBarrier2": {
      "core": [
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcStageMask-03929",
          "text": "If the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcStageMask-03930",
          "text": "If the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcStageMask-03931",
          "text": "If the <a href=\"#features-conditionalRendering\"><code>conditionalRendering</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcStageMask-03932",
          "text": "If the <a href=\"#features-fragmentDensityMap\"><code>fragmentDensityMap</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcStageMask-03933",
          "text": "If the <a href=\"#features-transformFeedback\"><code>transformFeedback</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcStageMask-03934",
          "text": "If the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcStageMask-03935",
          "text": "If the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcStageMask-07316",
          "text": "If neither the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> or <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> are enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcStageMask-04957",
          "text": "If the <a href=\"#features-subpassShading\"><code>subpassShading</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcStageMask-04995",
          "text": "If the <a href=\"#features-invocationMask\"><code>invocationMask</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcStageMask-07946",
          "text": "If neither the <a href=\"#VK_NV_ray_tracing\">VK_NV_ray_tracing</a> extension or <a href=\"#features-rayTracingPipeline\"><code>rayTracingPipeline</code> feature</a> are enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03900",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03901",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_INDEX_READ_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT</code>, <code>VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03902",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT</code>, <code>VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03903",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT</code>, <code>VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03904",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_UNIFORM_READ_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03905",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_SHADER_SAMPLED_READ_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03906",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_SHADER_STORAGE_READ_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03907",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-07454",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_SHADER_READ_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03909",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_SHADER_WRITE_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03910",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT</code> <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03911",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT</code> <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03912",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT</code>, <code>VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03913",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT</code>, <code>VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03914",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_TRANSFER_READ_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COPY_BIT</code>, <code>VK_PIPELINE_STAGE_2_BLIT_BIT</code>, <code>VK_PIPELINE_STAGE_2_RESOLVE_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03915",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_TRANSFER_WRITE_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COPY_BIT</code>, <code>VK_PIPELINE_STAGE_2_BLIT_BIT</code>, <code>VK_PIPELINE_STAGE_2_RESOLVE_BIT</code>, <code>VK_PIPELINE_STAGE_2_CLEAR_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code>, or <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03916",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_HOST_READ_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_HOST_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03917",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_HOST_WRITE_BIT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_HOST_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03918",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03919",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03920",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-04747",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT</code>, <code>VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03922",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03923",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-04994",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03924",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV</code> or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03925",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV</code> or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03926",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT</code> <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03927",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03928",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code> or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-06256",
          "text": "If the <a href=\"#features-rayQuery\"><code>rayQuery</code></a> feature is not enabled and <code>srcAccessMask</code> includes <code>VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not include any of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages except <code>VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-07272",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code> or <code>VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-04858",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-04859",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-04860",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-04861",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-07455",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_OPTICAL_FLOW_READ_BIT_NV</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-07456",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-07457",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_MICROMAP_WRITE_BIT_EXT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-07458",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_MICROMAP_READ_BIT_EXT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT</code> or <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-08118",
          "text": "If <code>srcAccessMask</code> includes <code>VK_ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstStageMask-03929",
          "text": "If the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstStageMask-03930",
          "text": "If the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstStageMask-03931",
          "text": "If the <a href=\"#features-conditionalRendering\"><code>conditionalRendering</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstStageMask-03932",
          "text": "If the <a href=\"#features-fragmentDensityMap\"><code>fragmentDensityMap</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstStageMask-03933",
          "text": "If the <a href=\"#features-transformFeedback\"><code>transformFeedback</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstStageMask-03934",
          "text": "If the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstStageMask-03935",
          "text": "If the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstStageMask-07316",
          "text": "If neither the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> or <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> are enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstStageMask-04957",
          "text": "If the <a href=\"#features-subpassShading\"><code>subpassShading</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstStageMask-04995",
          "text": "If the <a href=\"#features-invocationMask\"><code>invocationMask</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstStageMask-07946",
          "text": "If neither the <a href=\"#VK_NV_ray_tracing\">VK_NV_ray_tracing</a> extension or <a href=\"#features-rayTracingPipeline\"><code>rayTracingPipeline</code> feature</a> are enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03900",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03901",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_INDEX_READ_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT</code>, <code>VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03902",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT</code>, <code>VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03903",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT</code>, <code>VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03904",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_UNIFORM_READ_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03905",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_SHADER_SAMPLED_READ_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03906",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_SHADER_STORAGE_READ_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03907",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-07454",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_SHADER_READ_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03909",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_SHADER_WRITE_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03910",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT</code> <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03911",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT</code> <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03912",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT</code>, <code>VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03913",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT</code>, <code>VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03914",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_TRANSFER_READ_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COPY_BIT</code>, <code>VK_PIPELINE_STAGE_2_BLIT_BIT</code>, <code>VK_PIPELINE_STAGE_2_RESOLVE_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03915",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_TRANSFER_WRITE_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COPY_BIT</code>, <code>VK_PIPELINE_STAGE_2_BLIT_BIT</code>, <code>VK_PIPELINE_STAGE_2_RESOLVE_BIT</code>, <code>VK_PIPELINE_STAGE_2_CLEAR_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code>, or <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03916",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_HOST_READ_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_HOST_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03917",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_HOST_WRITE_BIT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_HOST_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03918",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03919",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03920",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-04747",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT</code>, <code>VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03922",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03923",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV</code>, <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-04994",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03924",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV</code> or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03925",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV</code> or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03926",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT</code> <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03927",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03928",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR</code>, <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code> or <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-06256",
          "text": "If the <a href=\"#features-rayQuery\"><code>rayQuery</code></a> feature is not enabled and <code>dstAccessMask</code> includes <code>VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not include any of the <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages except <code>VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-07272",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code> or <code>VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-04858",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-04859",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-04860",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-04861",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-07455",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_OPTICAL_FLOW_READ_BIT_NV</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-07456",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-07457",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_MICROMAP_WRITE_BIT_EXT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-07458",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_MICROMAP_READ_BIT_EXT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT</code> or <code>VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-08118",
          "text": "If <code>dstAccessMask</code> includes <code>VK_ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT</code>, <code>VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT</code>, or one of <code>VK_PIPELINE_STAGE_*_SHADER_BIT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-oldLayout-01208",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-oldLayout-01209",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-oldLayout-01210",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-oldLayout-01211",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_SAMPLED_BIT</code> or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-oldLayout-01212",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-oldLayout-01213",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-oldLayout-01197",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, <code>oldLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or the current layout of the image subresources affected by the barrier",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-newLayout-01198",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, <code>newLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-oldLayout-01658",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-oldLayout-01659",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-04065",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with at least one of <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-04066",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-04067",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with at least one of <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-04068",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-synchronization2-07793",
          "text": "If the <a href=\"#features-synchronization2\"><code>synchronization2</code></a> feature is not enabled, <code>oldLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR</code> or <code>VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-synchronization2-07794",
          "text": "If the <a href=\"#features-synchronization2\"><code>synchronization2</code></a> feature is not enabled, <code>newLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR</code> or <code>VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-03938",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL</code>, <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code> or <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-03939",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL</code>, <code>image</code> <strong class=\"purple\">must</strong> have been created with at least one of <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-oldLayout-02088",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code> set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-image-09117",
          "text": "If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code>, and <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> are not equal, <code>srcQueueFamilyIndex</code> <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_EXTERNAL</code>, <code>VK_QUEUE_FAMILY_FOREIGN_EXT</code>, or a valid queue family",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-image-09118",
          "text": "If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code>, and <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> are not equal, <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_EXTERNAL</code>, <code>VK_QUEUE_FAMILY_FOREIGN_EXT</code>, or a valid queue family",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-04070",
          "text": "If <code>srcQueueFamilyIndex</code> is not equal to <code>dstQueueFamilyIndex</code>, at least one of <code>srcQueueFamilyIndex</code> or <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> not be <code>VK_QUEUE_FAMILY_EXTERNAL</code> or <code>VK_QUEUE_FAMILY_FOREIGN_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-None-09119",
          "text": "If     the <a href=\"#VK_KHR_external_memory\">VK_KHR_external_memory</a> extension is not enabled, and     the value of <a href=\"#VkApplicationInfo\">VkApplicationInfo</a>::<code>apiVersion</code> used to create     the <a href=\"#VkInstance\">VkInstance</a> is not greater than or equal to Version 1.1,     <code>srcQueueFamilyIndex</code> <strong class=\"purple\">must</strong> not be <code>VK_QUEUE_FAMILY_EXTERNAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-None-09120",
          "text": "If     the <a href=\"#VK_KHR_external_memory\">VK_KHR_external_memory</a> extension is not enabled, and     the value of <a href=\"#VkApplicationInfo\">VkApplicationInfo</a>::<code>apiVersion</code> used to create     the <a href=\"#VkInstance\">VkInstance</a> is not greater than or equal to Version 1.1,     <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> not be <code>VK_QUEUE_FAMILY_EXTERNAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-09121",
          "text": "If the <a href=\"#VK_EXT_queue_family_foreign\">VK_EXT_queue_family_foreign</a> extension is not enabled <code>srcQueueFamilyIndex</code> <strong class=\"purple\">must</strong> not be <code>VK_QUEUE_FAMILY_FOREIGN_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstQueueFamilyIndex-09122",
          "text": "If the <a href=\"#VK_EXT_queue_family_foreign\">VK_EXT_queue_family_foreign</a> extension is not enabled <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> not be <code>VK_QUEUE_FAMILY_FOREIGN_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-07120",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-07121",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-07122",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-07123",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-07124",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-07125",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-07006",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with either the <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code> or <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> usage bits, and the <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code> or <code>VK_IMAGE_USAGE_SAMPLED_BIT</code> usage bits, and the <code>VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code> usage bit",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-attachmentFeedbackLoopLayout-07313",
          "text": "If the <a href=\"#features-attachmentFeedbackLoopLayout\"><code>attachmentFeedbackLoopLayout</code></a> feature is not enabled, <code>newLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-09550",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with either <code>VK_IMAGE_USAGE_STORAGE_BIT</code>, or with both <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code> and either of <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code> or <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dynamicRenderingLocalRead-09551",
          "text": "If the <a href=\"#features-dynamicRenderingLocalRead\"><code>dynamicRenderingLocalRead</code></a> feature is not enabled, <code>oldLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dynamicRenderingLocalRead-09552",
          "text": "If the <a href=\"#features-dynamicRenderingLocalRead\"><code>dynamicRenderingLocalRead</code></a> feature is not enabled, <code>newLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-subresourceRange-01486",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-subresourceRange-01724",
          "text": "If <code>subresourceRange.levelCount</code> is not <code>VK_REMAINING_MIP_LEVELS</code>, <span class=\"eq\"><code>subresourceRange.baseMipLevel</code> +  <code>subresourceRange.levelCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-subresourceRange-01488",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-subresourceRange-01725",
          "text": "If <code>subresourceRange.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <span class=\"eq\"><code>subresourceRange.baseArrayLayer</code> +  <code>subresourceRange.layerCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-image-01932",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-image-09241",
          "text": "If <code>image</code> has a color format that is single-plane, then the <code>aspectMask</code> member of <code>subresourceRange</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-image-09242",
          "text": "If <code>image</code> has a color format and 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-image-01672",
          "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 at least one <a href=\"#formats-planes-image-aspect\">multi-planar aspect mask</a> bit or <code>VK_IMAGE_ASPECT_COLOR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-image-03320",
          "text": "If <code>image</code> has a depth/stencil format with both depth and stencil and the <a href=\"#features-separateDepthStencilLayouts\"><code>separateDepthStencilLayouts</code></a> feature is not enabled, then the <code>aspectMask</code> member of <code>subresourceRange</code> <strong class=\"purple\">must</strong> include both <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> and <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-image-03319",
          "text": "If <code>image</code> has a depth/stencil format with both depth and stencil and the <a href=\"#features-separateDepthStencilLayouts\"><code>separateDepthStencilLayouts</code></a> feature is enabled, then the <code>aspectMask</code> member of <code>subresourceRange</code> <strong class=\"purple\">must</strong> include either or both <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> and <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-aspectMask-08702",
          "text": "If the <code>aspectMask</code> member of <code>subresourceRange</code> includes <code>VK_IMAGE_ASPECT_DEPTH_BIT</code>, <code>oldLayout</code> and <code>newLayout</code> <strong class=\"purple\">must</strong> not be one of <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-aspectMask-08703",
          "text": "If the <code>aspectMask</code> member of <code>subresourceRange</code> includes <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>, <code>oldLayout</code> and <code>newLayout</code> <strong class=\"purple\">must</strong> not be one of <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-subresourceRange-09601",
          "text": "<code>subresourceRange.aspectMask</code> <strong class=\"purple\">must</strong> be valid for the <code>format</code> the <code>image</code> was created with",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcStageMask-03854",
          "text": "If either <code>srcStageMask</code> or <code>dstStageMask</code> includes <code>VK_PIPELINE_STAGE_2_HOST_BIT</code>, <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> be equal",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcStageMask-03855",
          "text": "If <code>srcStageMask</code> includes <code>VK_PIPELINE_STAGE_2_HOST_BIT</code>, and <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, <code>oldLayout</code> <strong class=\"purple\">must</strong> be one of <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>, <code>VK_IMAGE_LAYOUT_UNDEFINED</code>, or <code>VK_IMAGE_LAYOUT_GENERAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-pNext-pNext",
          "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=\"#VkExternalMemoryAcquireUnmodifiedEXT\">VkExternalMemoryAcquireUnmodifiedEXT</a> or <a href=\"#VkSampleLocationsInfoEXT\">VkSampleLocationsInfoEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcStageMask-parameter",
          "text": "<code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits2\">VkPipelineStageFlagBits2</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-parameter",
          "text": "<code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits2\">VkAccessFlagBits2</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstStageMask-parameter",
          "text": "<code>dstStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits2\">VkPipelineStageFlagBits2</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-parameter",
          "text": "<code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits2\">VkAccessFlagBits2</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-oldLayout-parameter",
          "text": "<code>oldLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-newLayout-parameter",
          "text": "<code>newLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-image-parameter",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier2-subresourceRange-parameter",
          "text": "<code>subresourceRange</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkImageMemoryBarrier": {
      "core": [
        {
          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01208",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01209",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01210",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01211",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_SAMPLED_BIT</code> or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01212",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01213",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01197",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, <code>oldLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or the current layout of the image subresources affected by the barrier",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-newLayout-01198",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, <code>newLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01658",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01659",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04065",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with at least one of <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04066",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04067",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with at least one of <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04068",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-synchronization2-07793",
          "text": "If the <a href=\"#features-synchronization2\"><code>synchronization2</code></a> feature is not enabled, <code>oldLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR</code> or <code>VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-synchronization2-07794",
          "text": "If the <a href=\"#features-synchronization2\"><code>synchronization2</code></a> feature is not enabled, <code>newLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR</code> or <code>VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-03938",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL</code>, <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code> or <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-03939",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL</code>, <code>image</code> <strong class=\"purple\">must</strong> have been created with at least one of <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-02088",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code> set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-image-09117",
          "text": "If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code>, and <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> are not equal, <code>srcQueueFamilyIndex</code> <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_EXTERNAL</code>, <code>VK_QUEUE_FAMILY_FOREIGN_EXT</code>, or a valid queue family",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-image-09118",
          "text": "If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code>, and <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> are not equal, <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_EXTERNAL</code>, <code>VK_QUEUE_FAMILY_FOREIGN_EXT</code>, or a valid queue family",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04070",
          "text": "If <code>srcQueueFamilyIndex</code> is not equal to <code>dstQueueFamilyIndex</code>, at least one of <code>srcQueueFamilyIndex</code> or <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> not be <code>VK_QUEUE_FAMILY_EXTERNAL</code> or <code>VK_QUEUE_FAMILY_FOREIGN_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-None-09119",
          "text": "If     the <a href=\"#VK_KHR_external_memory\">VK_KHR_external_memory</a> extension is not enabled, and     the value of <a href=\"#VkApplicationInfo\">VkApplicationInfo</a>::<code>apiVersion</code> used to create     the <a href=\"#VkInstance\">VkInstance</a> is not greater than or equal to Version 1.1,     <code>srcQueueFamilyIndex</code> <strong class=\"purple\">must</strong> not be <code>VK_QUEUE_FAMILY_EXTERNAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-None-09120",
          "text": "If     the <a href=\"#VK_KHR_external_memory\">VK_KHR_external_memory</a> extension is not enabled, and     the value of <a href=\"#VkApplicationInfo\">VkApplicationInfo</a>::<code>apiVersion</code> used to create     the <a href=\"#VkInstance\">VkInstance</a> is not greater than or equal to Version 1.1,     <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> not be <code>VK_QUEUE_FAMILY_EXTERNAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-09121",
          "text": "If the <a href=\"#VK_EXT_queue_family_foreign\">VK_EXT_queue_family_foreign</a> extension is not enabled <code>srcQueueFamilyIndex</code> <strong class=\"purple\">must</strong> not be <code>VK_QUEUE_FAMILY_FOREIGN_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-dstQueueFamilyIndex-09122",
          "text": "If the <a href=\"#VK_EXT_queue_family_foreign\">VK_EXT_queue_family_foreign</a> extension is not enabled <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> not be <code>VK_QUEUE_FAMILY_FOREIGN_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-07120",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-07121",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-07122",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-07123",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-07124",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-07125",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-07006",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with either the <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code> or <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> usage bits, and the <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code> or <code>VK_IMAGE_USAGE_SAMPLED_BIT</code> usage bits, and the <code>VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code> usage bit",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-attachmentFeedbackLoopLayout-07313",
          "text": "If the <a href=\"#features-attachmentFeedbackLoopLayout\"><code>attachmentFeedbackLoopLayout</code></a> feature is not enabled, <code>newLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-09550",
          "text": "If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define an <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with either <code>VK_IMAGE_USAGE_STORAGE_BIT</code>, or with both <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code> and either of <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code> or <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-dynamicRenderingLocalRead-09551",
          "text": "If the <a href=\"#features-dynamicRenderingLocalRead\"><code>dynamicRenderingLocalRead</code></a> feature is not enabled, <code>oldLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-dynamicRenderingLocalRead-09552",
          "text": "If the <a href=\"#features-dynamicRenderingLocalRead\"><code>dynamicRenderingLocalRead</code></a> feature is not enabled, <code>newLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01486",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01724",
          "text": "If <code>subresourceRange.levelCount</code> is not <code>VK_REMAINING_MIP_LEVELS</code>, <span class=\"eq\"><code>subresourceRange.baseMipLevel</code> +  <code>subresourceRange.levelCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01488",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01725",
          "text": "If <code>subresourceRange.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <span class=\"eq\"><code>subresourceRange.baseArrayLayer</code> +  <code>subresourceRange.layerCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-image-01932",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-image-09241",
          "text": "If <code>image</code> has a color format that is single-plane, then the <code>aspectMask</code> member of <code>subresourceRange</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-image-09242",
          "text": "If <code>image</code> has a color format and 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-image-01672",
          "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 at least one <a href=\"#formats-planes-image-aspect\">multi-planar aspect mask</a> bit or <code>VK_IMAGE_ASPECT_COLOR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-image-03320",
          "text": "If <code>image</code> has a depth/stencil format with both depth and stencil and the <a href=\"#features-separateDepthStencilLayouts\"><code>separateDepthStencilLayouts</code></a> feature is not enabled, then the <code>aspectMask</code> member of <code>subresourceRange</code> <strong class=\"purple\">must</strong> include both <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> and <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-image-03319",
          "text": "If <code>image</code> has a depth/stencil format with both depth and stencil and the <a href=\"#features-separateDepthStencilLayouts\"><code>separateDepthStencilLayouts</code></a> feature is enabled, then the <code>aspectMask</code> member of <code>subresourceRange</code> <strong class=\"purple\">must</strong> include either or both <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> and <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-aspectMask-08702",
          "text": "If the <code>aspectMask</code> member of <code>subresourceRange</code> includes <code>VK_IMAGE_ASPECT_DEPTH_BIT</code>, <code>oldLayout</code> and <code>newLayout</code> <strong class=\"purple\">must</strong> not be one of <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-aspectMask-08703",
          "text": "If the <code>aspectMask</code> member of <code>subresourceRange</code> includes <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>, <code>oldLayout</code> and <code>newLayout</code> <strong class=\"purple\">must</strong> not be one of <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-09601",
          "text": "<code>subresourceRange.aspectMask</code> <strong class=\"purple\">must</strong> be valid for the <code>format</code> the <code>image</code> was created with",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-None-09052",
          "text": "If the <a href=\"#features-synchronization2\"><code>synchronization2</code></a> feature is not enabled, and <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-None-09053",
          "text": "If the <a href=\"#features-synchronization2\"><code>synchronization2</code></a> feature is not enabled, and <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, <code>srcQueueFamilyIndex</code> <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_IGNORED</code> or <code>VK_QUEUE_FAMILY_EXTERNAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-None-09054",
          "text": "If the <a href=\"#features-synchronization2\"><code>synchronization2</code></a> feature is not enabled, and <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_IGNORED</code> or <code>VK_QUEUE_FAMILY_EXTERNAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-pNext-pNext",
          "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=\"#VkExternalMemoryAcquireUnmodifiedEXT\">VkExternalMemoryAcquireUnmodifiedEXT</a> or <a href=\"#VkSampleLocationsInfoEXT\">VkSampleLocationsInfoEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-parameter",
          "text": "<code>oldLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-newLayout-parameter",
          "text": "<code>newLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-image-parameter",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-parameter",
          "text": "<code>subresourceRange</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "vkTransitionImageLayoutEXT": {
      "core": [
        {
          "vuid": "VUID-vkTransitionImageLayoutEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkTransitionImageLayoutEXT-pTransitions-parameter",
          "text": "<code>pTransitions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>transitionCount</code> valid <a href=\"#VkHostImageLayoutTransitionInfoEXT\">VkHostImageLayoutTransitionInfoEXT</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkTransitionImageLayoutEXT-transitionCount-arraylength",
          "text": "<code>transitionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkHostImageLayoutTransitionInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkHostImageLayoutTransitionInfoEXT-image-09055",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkHostImageLayoutTransitionInfoEXT-subresourceRange-01486",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkHostImageLayoutTransitionInfoEXT-subresourceRange-01724",
          "text": "If <code>subresourceRange.levelCount</code> is not <code>VK_REMAINING_MIP_LEVELS</code>, <span class=\"eq\"><code>subresourceRange.baseMipLevel</code> +  <code>subresourceRange.levelCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkHostImageLayoutTransitionInfoEXT-subresourceRange-01488",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkHostImageLayoutTransitionInfoEXT-subresourceRange-01725",
          "text": "If <code>subresourceRange.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <span class=\"eq\"><code>subresourceRange.baseArrayLayer</code> +  <code>subresourceRange.layerCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkHostImageLayoutTransitionInfoEXT-image-01932",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkHostImageLayoutTransitionInfoEXT-image-09241",
          "text": "If <code>image</code> has a color format that is single-plane, then the <code>aspectMask</code> member of <code>subresourceRange</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkHostImageLayoutTransitionInfoEXT-image-09242",
          "text": "If <code>image</code> has a color format and 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkHostImageLayoutTransitionInfoEXT-image-01672",
          "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 at least one <a href=\"#formats-planes-image-aspect\">multi-planar aspect mask</a> bit or <code>VK_IMAGE_ASPECT_COLOR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkHostImageLayoutTransitionInfoEXT-image-03320",
          "text": "If <code>image</code> has a depth/stencil format with both depth and stencil and the <a href=\"#features-separateDepthStencilLayouts\"><code>separateDepthStencilLayouts</code></a> feature is not enabled, then the <code>aspectMask</code> member of <code>subresourceRange</code> <strong class=\"purple\">must</strong> include both <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> and <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkHostImageLayoutTransitionInfoEXT-image-03319",
          "text": "If <code>image</code> has a depth/stencil format with both depth and stencil and the <a href=\"#features-separateDepthStencilLayouts\"><code>separateDepthStencilLayouts</code></a> feature is enabled, then the <code>aspectMask</code> member of <code>subresourceRange</code> <strong class=\"purple\">must</strong> include either or both <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> and <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkHostImageLayoutTransitionInfoEXT-aspectMask-08702",
          "text": "If the <code>aspectMask</code> member of <code>subresourceRange</code> includes <code>VK_IMAGE_ASPECT_DEPTH_BIT</code>, <code>oldLayout</code> and <code>newLayout</code> <strong class=\"purple\">must</strong> not be one of <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkHostImageLayoutTransitionInfoEXT-aspectMask-08703",
          "text": "If the <code>aspectMask</code> member of <code>subresourceRange</code> includes <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>, <code>oldLayout</code> and <code>newLayout</code> <strong class=\"purple\">must</strong> not be one of <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkHostImageLayoutTransitionInfoEXT-subresourceRange-09601",
          "text": "<code>subresourceRange.aspectMask</code> <strong class=\"purple\">must</strong> be valid for the <code>format</code> the <code>image</code> was created with",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkHostImageLayoutTransitionInfoEXT-oldLayout-09229",
          "text": "<code>oldLayout</code> <strong class=\"purple\">must</strong> be either <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or the current layout of the image subresources as specified in <code>subresourceRange</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkHostImageLayoutTransitionInfoEXT-oldLayout-09230",
          "text": "If <code>oldLayout</code> is not <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>, it <strong class=\"purple\">must</strong> be one of the layouts in <a href=\"#VkPhysicalDeviceHostImageCopyPropertiesEXT\">VkPhysicalDeviceHostImageCopyPropertiesEXT</a>::<code>pCopySrcLayouts</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkHostImageLayoutTransitionInfoEXT-newLayout-09057",
          "text": "<code>newLayout</code> <strong class=\"purple\">must</strong> be one of the layouts in <a href=\"#VkPhysicalDeviceHostImageCopyPropertiesEXT\">VkPhysicalDeviceHostImageCopyPropertiesEXT</a>::<code>pCopyDstLayouts</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkHostImageLayoutTransitionInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkHostImageLayoutTransitionInfoEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkHostImageLayoutTransitionInfoEXT-image-parameter",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkHostImageLayoutTransitionInfoEXT-oldLayout-parameter",
          "text": "<code>oldLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkHostImageLayoutTransitionInfoEXT-newLayout-parameter",
          "text": "<code>newLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkHostImageLayoutTransitionInfoEXT-subresourceRange-parameter",
          "text": "<code>subresourceRange</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkExternalMemoryAcquireUnmodifiedEXT": {
      "core": [
        {
          "vuid": "VUID-VkExternalMemoryAcquireUnmodifiedEXT-acquireUnmodifiedMemory-08922",
          "text": "If <code>acquireUnmodifiedMemory</code> is <code>VK_TRUE</code>, and the memory barrier&#8217;s <code>srcQueueFamilyIndex</code> is a special queue family reserved for external memory ownership transfers (as described in <a href=\"#synchronization-queue-transfers\">Queue Family Ownership Transfer</a>), then each range of <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> bound to the resource <strong class=\"purple\">must</strong> have remained unmodified during all time since the resource&#8217;s most recent release of ownership to the queue family",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExternalMemoryAcquireUnmodifiedEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkQueueWaitIdle": {
      "core": [
        {
          "vuid": "VUID-vkQueueWaitIdle-queue-parameter",
          "text": "<code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "vkDeviceWaitIdle": {
      "core": [
        {
          "vuid": "VUID-vkDeviceWaitIdle-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "vkGetCalibratedTimestampsKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetCalibratedTimestampsEXT-timeDomain-09246",
          "text": "The <code>timeDomain</code> value of each <a href=\"#VkCalibratedTimestampInfoKHR\">VkCalibratedTimestampInfoKHR</a> in <code>pTimestampInfos</code> <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetCalibratedTimestampsKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetCalibratedTimestampsKHR-pTimestampInfos-parameter",
          "text": "<code>pTimestampInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>timestampCount</code> valid <a href=\"#VkCalibratedTimestampInfoKHR\">VkCalibratedTimestampInfoKHR</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetCalibratedTimestampsKHR-pTimestamps-parameter",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetCalibratedTimestampsKHR-pMaxDeviation-parameter",
          "text": "<code>pMaxDeviation</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint64_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetCalibratedTimestampsKHR-timestampCount-arraylength",
          "text": "<code>timestampCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkCalibratedTimestampInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkCalibratedTimestampInfoEXT-timeDomain-02354",
          "text": "<code>timeDomain</code> <strong class=\"purple\">must</strong> be one of the <a href=\"#VkTimeDomainKHR\">VkTimeDomainKHR</a> values returned by <a href=\"#vkGetPhysicalDeviceCalibrateableTimeDomainsKHR\">vkGetPhysicalDeviceCalibrateableTimeDomainsKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCalibratedTimestampInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCalibratedTimestampInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCalibratedTimestampInfoKHR-timeDomain-parameter",
          "text": "<code>timeDomain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkTimeDomainKHR\">VkTimeDomainKHR</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdBeginRendering": {
      "core": [
        {
          "vuid": "VUID-vkCmdBeginRendering-dynamicRendering-06446",
          "text": "The <a href=\"#features-dynamicRendering\"><code>dynamicRendering</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRendering-commandBuffer-06068",
          "text": "If <code>commandBuffer</code> is a secondary command buffer, and the <a href=\"#features-nestedCommandBuffer\"><code>nestedCommandBuffer</code></a> feature is not enabled, <code>pRenderingInfo-&gt;flags</code> <strong class=\"purple\">must</strong> not include <code>VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRendering-pRenderingInfo-09588",
          "text": "If <code>pRenderingInfo-&gt;pDepthAttachment</code> is not <code>NULL</code> and <code>pRenderingInfo-&gt;pDepthAttachment-&gt;imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pRenderingInfo-&gt;pDepthAttachment-&gt;imageView</code> <strong class=\"purple\">must</strong> be in the layout specified by <code>pRenderingInfo-&gt;pDepthAttachment-&gt;imageLayout</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRendering-pRenderingInfo-09589",
          "text": "If <code>pRenderingInfo-&gt;pDepthAttachment</code> is not <code>NULL</code>, <code>pRenderingInfo-&gt;pDepthAttachment-&gt;imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pRenderingInfo-&gt;pDepthAttachment-&gt;imageResolveMode</code> is not <code>VK_RESOLVE_MODE_NONE</code>, and <code>pRenderingInfo-&gt;pDepthAttachment-&gt;resolveImageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pRenderingInfo-&gt;pDepthAttachment-&gt;resolveImageView</code> <strong class=\"purple\">must</strong> be in the layout specified by <code>pRenderingInfo-&gt;pDepthAttachment-&gt;resolveImageLayout</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRendering-pRenderingInfo-09590",
          "text": "If <code>pRenderingInfo-&gt;pStencilAttachment</code> is not <code>NULL</code> and <code>pRenderingInfo-&gt;pStencilAttachment-&gt;imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pRenderingInfo-&gt;pStencilAttachment-&gt;imageView</code> <strong class=\"purple\">must</strong> be in the layout specified by <code>pRenderingInfo-&gt;pStencilAttachment-&gt;imageLayout</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRendering-pRenderingInfo-09591",
          "text": "If <code>pRenderingInfo-&gt;pStencilAttachment</code> is not <code>NULL</code>, <code>pRenderingInfo-&gt;pStencilAttachment-&gt;imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pRenderingInfo-&gt;pStencilAttachment-&gt;imageResolveMode</code> is not <code>VK_RESOLVE_MODE_NONE</code>, and <code>pRenderingInfo-&gt;pStencilAttachment-&gt;resolveImageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pRenderingInfo-&gt;pStencilAttachment-&gt;resolveImageView</code> <strong class=\"purple\">must</strong> be in the layout specified by <code>pRenderingInfo-&gt;pStencilAttachment-&gt;resolveImageLayout</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRendering-pRenderingInfo-09592",
          "text": "For any element of <code>pRenderingInfo-&gt;pColorAttachments</code>, if <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, that image view <strong class=\"purple\">must</strong> be in the layout specified by <code>imageLayout</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRendering-pRenderingInfo-09593",
          "text": "For any element of <code>pRenderingInfo-&gt;pColorAttachments</code>, if either <code>imageResolveMode</code> is <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, or <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <code>resolveMode</code> is not <code>VK_RESOLVE_MODE_NONE</code>, and <code>resolveImageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>resolveImageView</code> <strong class=\"purple\">must</strong> be in the layout specified by <code>resolveImageLayout</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRendering-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRendering-pRenderingInfo-parameter",
          "text": "<code>pRenderingInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkRenderingInfo\">VkRenderingInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRendering-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRendering-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRendering-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRendering-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkRenderingInfo": {
      "core": [
        {
          "vuid": "VUID-VkRenderingInfo-viewMask-06069",
          "text": "If <code>viewMask</code> is <code>0</code>, <code>layerCount</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-multisampledRenderToSingleSampled-06857",
          "text": "<code>imageView</code> members of <code>pDepthAttachment</code>, <code>pStencilAttachment</code>, and elements of <code>pColorAttachments</code> that are not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with the same <code>sampleCount</code> , if none of the following are enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>The <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>The <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>The <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature,</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-imageView-09429",
          "text": "<code>imageView</code> members of elements of <code>pColorAttachments</code> that are not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with the same <code>sampleCount</code> , if the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-None-08994",
          "text": "If <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a>::<code>deviceRenderAreaCount</code> is 0, <code>renderArea.extent.width</code> <strong class=\"purple\">must</strong> be greater than 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-None-08995",
          "text": "If <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a>::<code>deviceRenderAreaCount</code> is 0, <code>renderArea.extent.height</code> <strong class=\"purple\">must</strong> be greater than 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-imageView-06858",
          "text": "If <a href=\"#subpass-multisampledrendertosinglesampled\">multisampled-render-to-single-sampled</a> is enabled, then all attachments referenced by <code>imageView</code> members of <code>pDepthAttachment</code>, <code>pStencilAttachment</code>, and elements of <code>pColorAttachments</code> that are not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have a sample count that is either <code>VK_SAMPLE_COUNT_1_BIT</code> or equal to <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a>::<code>rasterizationSamples</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-imageView-06859",
          "text": "If <a href=\"#subpass-multisampledrendertosinglesampled\">multisampled-render-to-single-sampled</a> is enabled, then all attachments referenced by <code>imageView</code> members of <code>pDepthAttachment</code>, <code>pStencilAttachment</code>, and elements of <code>pColorAttachments</code> that are not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and have a sample count of <code>VK_SAMPLE_COUNT_1_BIT</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT</code> in their <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pNext-06077",
          "text": "If the <code>pNext</code> chain does not contain <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a> or its <code>deviceRenderAreaCount</code> member is equal to 0, <code>renderArea.offset.x</code> <strong class=\"purple\">must</strong> be greater than or equal to 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pNext-06078",
          "text": "If the <code>pNext</code> chain does not contain <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a> or its <code>deviceRenderAreaCount</code> member is equal to 0, <code>renderArea.offset.y</code> <strong class=\"purple\">must</strong> be greater than or equal to 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pNext-07815",
          "text": "If the <code>pNext</code> chain does not contain <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a> or its <code>deviceRenderAreaCount</code> member is equal to 0, the sum of <code>renderArea.extent.width</code> and <code>renderArea.offset.x</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxFramebufferWidth\"><code>maxFramebufferWidth</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pNext-07816",
          "text": "If the <code>pNext</code> chain does not contain <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a> or its <code>deviceRenderAreaCount</code> member is equal to 0, the sum of <code>renderArea.extent.height</code> and <code>renderArea.offset.y</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxFramebufferWidth\"><code>maxFramebufferHeight</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pNext-06079",
          "text": "If the <code>pNext</code> chain does not contain <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a> or its <code>deviceRenderAreaCount</code> member is equal to 0, the width of the <code>imageView</code> member of any element of <code>pColorAttachments</code>, <code>pDepthAttachment</code>, or <code>pStencilAttachment</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> be greater than or equal to <span class=\"eq\"><code>renderArea.offset.x</code> +  <code>renderArea.extent.width</code></span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pNext-06080",
          "text": "If the <code>pNext</code> chain does not contain <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a> or its <code>deviceRenderAreaCount</code> member is equal to 0, the height of the <code>imageView</code> member of any element of <code>pColorAttachments</code>, <code>pDepthAttachment</code>, or <code>pStencilAttachment</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> be greater than or equal to <span class=\"eq\"><code>renderArea.offset.y</code> +  <code>renderArea.extent.height</code></span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pNext-06083",
          "text": "If the <code>pNext</code> chain contains <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a>, the width of the <code>imageView</code> member of any element of <code>pColorAttachments</code>, <code>pDepthAttachment</code>, or <code>pStencilAttachment</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> be greater than or equal to the sum of the <code>offset.x</code> and <code>extent.width</code> members of each element of <code>pDeviceRenderAreas</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pNext-06084",
          "text": "If the <code>pNext</code> chain contains <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a>, the height of the <code>imageView</code> member of any element of <code>pColorAttachments</code>, <code>pDepthAttachment</code>, or <code>pStencilAttachment</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> be greater than or equal to the sum of the <code>offset.y</code> and <code>extent.height</code> members of each element of <code>pDeviceRenderAreas</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pDepthAttachment-06085",
          "text": "If neither <code>pDepthAttachment</code> or <code>pStencilAttachment</code> are <code>NULL</code> and the <code>imageView</code> member of either structure is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the <code>imageView</code> member of each structure <strong class=\"purple\">must</strong> be the same",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pDepthAttachment-06086",
          "text": "If neither <code>pDepthAttachment</code> or <code>pStencilAttachment</code> are <code>NULL</code>, and the <code>resolveMode</code> member of each is not <code>VK_RESOLVE_MODE_NONE</code>, the <code>resolveImageView</code> member of each structure <strong class=\"purple\">must</strong> be the same",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-colorAttachmentCount-06087",
          "text": "If <code>colorAttachmentCount</code> is not <code>0</code> and the <code>imageView</code> member of an element of <code>pColorAttachments</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, that <code>imageView</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-colorAttachmentCount-09476",
          "text": "If <code>colorAttachmentCount</code> is not <code>0</code> and there is an element of <code>pColorAttachments</code> with either its <code>resolveMode</code> member set to <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, or its <code>imageView</code> member not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and its <code>resolveMode</code> member not set to <code>VK_RESOLVE_MODE_NONE</code>, the <code>resolveImageView</code> member of that element of <code>pColorAttachments</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pDepthAttachment-06547",
          "text": "If <code>pDepthAttachment</code> is not <code>NULL</code> and <code>pDepthAttachment-&gt;imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pDepthAttachment-&gt;imageView</code> <strong class=\"purple\">must</strong> have been created with a format that includes a depth component",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pDepthAttachment-06088",
          "text": "If <code>pDepthAttachment</code> is not <code>NULL</code> and <code>pDepthAttachment-&gt;imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pDepthAttachment-&gt;imageView</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pDepthAttachment-09477",
          "text": "If <code>pDepthAttachment</code> is not <code>NULL</code> and <code>pDepthAttachment-&gt;resolveMode</code> is not <code>VK_RESOLVE_MODE_NONE</code>, <code>pDepthAttachment-&gt;resolveImageView</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pStencilAttachment-06548",
          "text": "If <code>pStencilAttachment</code> is not <code>NULL</code> and <code>pStencilAttachment-&gt;imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pStencilAttachment-&gt;imageView</code> <strong class=\"purple\">must</strong> have been created with a format that includes a stencil aspect",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pStencilAttachment-06089",
          "text": "If <code>pStencilAttachment</code> is not <code>NULL</code> and <code>pStencilAttachment-&gt;imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pStencilAttachment-&gt;imageView</code> <strong class=\"purple\">must</strong> have been created with a stencil usage including <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pStencilAttachment-09478",
          "text": "If <code>pStencilAttachment</code> is not <code>NULL</code> and <code>pStencilAttachment-&gt;resolveMode</code> is not <code>VK_RESOLVE_MODE_NONE</code>, <code>pStencilAttachment-&gt;resolveImageView</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-colorAttachmentCount-06090",
          "text": "If <code>colorAttachmentCount</code> is not <code>0</code> and the <code>imageView</code> member of an element of <code>pColorAttachments</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the <code>layout</code> member of that element of <code>pColorAttachments</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-colorAttachmentCount-06091",
          "text": "If <code>colorAttachmentCount</code> is not <code>0</code> and the <code>imageView</code> member of an element of <code>pColorAttachments</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, if the <code>resolveMode</code> member of that element of <code>pColorAttachments</code> is not <code>VK_RESOLVE_MODE_NONE</code>, its <code>resolveImageLayout</code> member <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pDepthAttachment-06092",
          "text": "If <code>pDepthAttachment</code> is not <code>NULL</code> and <code>pDepthAttachment-&gt;imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pDepthAttachment-&gt;layout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pDepthAttachment-06093",
          "text": "If <code>pDepthAttachment</code> is not <code>NULL</code>, <code>pDepthAttachment-&gt;imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and <code>pDepthAttachment-&gt;resolveMode</code> is not <code>VK_RESOLVE_MODE_NONE</code>, <code>pDepthAttachment-&gt;resolveImageLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pStencilAttachment-06094",
          "text": "If <code>pStencilAttachment</code> is not <code>NULL</code> and <code>pStencilAttachment-&gt;imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pStencilAttachment-&gt;layout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pStencilAttachment-06095",
          "text": "If <code>pStencilAttachment</code> is not <code>NULL</code>, <code>pStencilAttachment-&gt;imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and <code>pStencilAttachment-&gt;resolveMode</code> is not <code>VK_RESOLVE_MODE_NONE</code>, <code>pStencilAttachment-&gt;resolveImageLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-colorAttachmentCount-06096",
          "text": "If <code>colorAttachmentCount</code> is not <code>0</code> and the <code>imageView</code> member of an element of <code>pColorAttachments</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the <code>layout</code> member of that element of <code>pColorAttachments</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-colorAttachmentCount-06097",
          "text": "If <code>colorAttachmentCount</code> is not <code>0</code> and the <code>imageView</code> member of an element of <code>pColorAttachments</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, if the <code>resolveMode</code> member of that element of <code>pColorAttachments</code> is not <code>VK_RESOLVE_MODE_NONE</code>, its <code>resolveImageLayout</code> member <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pDepthAttachment-06098",
          "text": "If <code>pDepthAttachment</code> is not <code>NULL</code>, <code>pDepthAttachment-&gt;imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and <code>pDepthAttachment-&gt;resolveMode</code> is not <code>VK_RESOLVE_MODE_NONE</code>, <code>pDepthAttachment-&gt;resolveImageLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pStencilAttachment-06099",
          "text": "If <code>pStencilAttachment</code> is not <code>NULL</code>, <code>pStencilAttachment-&gt;imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and <code>pStencilAttachment-&gt;resolveMode</code> is not <code>VK_RESOLVE_MODE_NONE</code>, <code>pStencilAttachment-&gt;resolveImageLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-colorAttachmentCount-06100",
          "text": "If <code>colorAttachmentCount</code> is not <code>0</code> and the <code>imageView</code> member of an element of <code>pColorAttachments</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the <code>layout</code> member of that element of <code>pColorAttachments</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-colorAttachmentCount-06101",
          "text": "If <code>colorAttachmentCount</code> is not <code>0</code> and the <code>imageView</code> member of an element of <code>pColorAttachments</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, if the <code>resolveMode</code> member of that element of <code>pColorAttachments</code> is not <code>VK_RESOLVE_MODE_NONE</code>, its <code>resolveImageLayout</code> member <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pDepthAttachment-07732",
          "text": "If <code>pDepthAttachment</code> is not <code>NULL</code> and <code>pDepthAttachment-&gt;imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pDepthAttachment-&gt;layout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pDepthAttachment-07733",
          "text": "If <code>pDepthAttachment</code> is not <code>NULL</code>, <code>pDepthAttachment-&gt;imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and <code>pDepthAttachment-&gt;resolveMode</code> is not <code>VK_RESOLVE_MODE_NONE</code>, <code>pDepthAttachment-&gt;resolveImageLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pStencilAttachment-07734",
          "text": "If <code>pStencilAttachment</code> is not <code>NULL</code> and <code>pStencilAttachment-&gt;imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pStencilAttachment-&gt;layout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pStencilAttachment-07735",
          "text": "If <code>pStencilAttachment</code> is not <code>NULL</code>, <code>pStencilAttachment-&gt;imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and <code>pStencilAttachment-&gt;resolveMode</code> is not <code>VK_RESOLVE_MODE_NONE</code>, <code>pStencilAttachment-&gt;resolveImageLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pDepthAttachment-06102",
          "text": "If <code>pDepthAttachment</code> is not <code>NULL</code> and <code>pDepthAttachment-&gt;imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pDepthAttachment-&gt;resolveMode</code> <strong class=\"purple\">must</strong> be one of the bits set in <a href=\"#VkPhysicalDeviceDepthStencilResolveProperties\">VkPhysicalDeviceDepthStencilResolveProperties</a>::<code>supportedDepthResolveModes</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pStencilAttachment-06103",
          "text": "If <code>pStencilAttachment</code> is not <code>NULL</code> and <code>pStencilAttachment-&gt;imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pStencilAttachment-&gt;resolveMode</code> <strong class=\"purple\">must</strong> be one of the bits set in <a href=\"#VkPhysicalDeviceDepthStencilResolveProperties\">VkPhysicalDeviceDepthStencilResolveProperties</a>::<code>supportedStencilResolveModes</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pDepthAttachment-06104",
          "text": "If <code>pDepthAttachment</code> or <code>pStencilAttachment</code> are both not <code>NULL</code>, <code>pDepthAttachment-&gt;imageView</code> and <code>pStencilAttachment-&gt;imageView</code> are both not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and <a href=\"#VkPhysicalDeviceDepthStencilResolveProperties\">VkPhysicalDeviceDepthStencilResolveProperties</a>::<code>independentResolveNone</code> is <code>VK_FALSE</code>, the <code>resolveMode</code> of both structures <strong class=\"purple\">must</strong> be the same value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pDepthAttachment-06105",
          "text": "If <code>pDepthAttachment</code> or <code>pStencilAttachment</code> are both not <code>NULL</code>, <code>pDepthAttachment-&gt;imageView</code> and <code>pStencilAttachment-&gt;imageView</code> are both not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <a href=\"#VkPhysicalDeviceDepthStencilResolveProperties\">VkPhysicalDeviceDepthStencilResolveProperties</a>::<code>independentResolve</code> is <code>VK_FALSE</code>, and the <code>resolveMode</code> of neither structure is <code>VK_RESOLVE_MODE_NONE</code>, the <code>resolveMode</code> of both structures <strong class=\"purple\">must</strong> be the same value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-colorAttachmentCount-06106",
          "text": "<code>colorAttachmentCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxColorAttachments</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-imageView-06107",
          "text": "If the <code>imageView</code> member of a <a href=\"#VkRenderingFragmentDensityMapAttachmentInfoEXT\">VkRenderingFragmentDensityMapAttachmentInfoEXT</a> structure included in the <code>pNext</code> chain is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <a href=\"#features-fragmentDensityMapNonSubsampledImages\"><code>fragmentDensityMapNonSubsampledImages</code></a> feature is not enabled, valid <code>imageView</code> and <code>resolveImageView</code> members of <code>pDepthAttachment</code>, <code>pStencilAttachment</code>, and each element of <code>pColorAttachments</code> <strong class=\"purple\">must</strong> be a <a href=\"#VkImageView\">VkImageView</a> created with <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-imageView-06108",
          "text": "If the <code>imageView</code> member of a <a href=\"#VkRenderingFragmentDensityMapAttachmentInfoEXT\">VkRenderingFragmentDensityMapAttachmentInfoEXT</a> structure included in the <code>pNext</code> chain is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and <code>viewMask</code> is not <code>0</code>, <code>imageView</code> <strong class=\"purple\">must</strong> have a <code>layerCount</code> greater than or equal to the index of the most significant bit in <code>viewMask</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-imageView-06109",
          "text": "If the <code>imageView</code> member of a <a href=\"#VkRenderingFragmentDensityMapAttachmentInfoEXT\">VkRenderingFragmentDensityMapAttachmentInfoEXT</a> structure included in the <code>pNext</code> chain is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and <code>viewMask</code> is <code>0</code>, <code>imageView</code> <strong class=\"purple\">must</strong> have a <code>layerCount</code> equal to <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pNext-06112",
          "text": "If the <code>pNext</code> chain does not contain <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a> or its <code>deviceRenderAreaCount</code> member is equal to 0 and the <code>imageView</code> member of a <a href=\"#VkRenderingFragmentDensityMapAttachmentInfoEXT\">VkRenderingFragmentDensityMapAttachmentInfoEXT</a> structure included in the <code>pNext</code> chain is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>imageView</code> <strong class=\"purple\">must</strong> have a width greater than or equal to \\(\\left\\lceil{\\frac{renderArea_{x}+renderArea_{width}}{maxFragmentDensityTexelSize_{width}}}\\right\\rceil\\)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pNext-06114",
          "text": "If the <code>pNext</code> chain does not contain <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a> or its <code>deviceRenderAreaCount</code> member is equal to 0 and the <code>imageView</code> member of a <a href=\"#VkRenderingFragmentDensityMapAttachmentInfoEXT\">VkRenderingFragmentDensityMapAttachmentInfoEXT</a> structure included in the <code>pNext</code> chain is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>imageView</code> <strong class=\"purple\">must</strong> have a height greater than or equal to \\(\\left\\lceil{\\frac{renderArea_{y}+renderArea_{height}}{maxFragmentDensityTexelSize_{height}}}\\right\\rceil\\)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pNext-06113",
          "text": "If the <code>pNext</code> chain contains a <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a> structure, its <code>deviceRenderAreaCount</code> member is not 0, and the <code>imageView</code> member of a <a href=\"#VkRenderingFragmentDensityMapAttachmentInfoEXT\">VkRenderingFragmentDensityMapAttachmentInfoEXT</a> structure included in the <code>pNext</code> chain is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>imageView</code> <strong class=\"purple\">must</strong> have a width greater than or equal to \\(\\left\\lceil{\\frac{pDeviceRenderAreas_{x}+pDeviceRenderAreas_{width}}{maxFragmentDensityTexelSize_{width}}}\\right\\rceil\\) for each element of <code>pDeviceRenderAreas</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pNext-06115",
          "text": "If the <code>pNext</code> chain contains a <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a> structure, its <code>deviceRenderAreaCount</code> member is not 0, and the <code>imageView</code> member of a <a href=\"#VkRenderingFragmentDensityMapAttachmentInfoEXT\">VkRenderingFragmentDensityMapAttachmentInfoEXT</a> structure included in the <code>pNext</code> chain is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>imageView</code> <strong class=\"purple\">must</strong> have a height greater than or equal to \\(\\left\\lceil{\\frac{pDeviceRenderAreas_{y}+pDeviceRenderAreas_{height}}{maxFragmentDensityTexelSize_{height}}}\\right\\rceil\\) for each element of <code>pDeviceRenderAreas</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-imageView-06116",
          "text": "If the <code>imageView</code> member of a <a href=\"#VkRenderingFragmentDensityMapAttachmentInfoEXT\">VkRenderingFragmentDensityMapAttachmentInfoEXT</a> structure included in the <code>pNext</code> chain is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, it <strong class=\"purple\">must</strong> not be equal to the <code>imageView</code> or <code>resolveImageView</code> member of <code>pDepthAttachment</code>, <code>pStencilAttachment</code>, or any element of <code>pColorAttachments</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pNext-06119",
          "text": "If <a href=\"#features-maintenance7\"><code>maintenance7</code></a> is not enabled or the <a href=\"#limits-robustFragmentShadingRateAttachmentAccess\"><code>robustFragmentShadingRateAttachmentAccess</code></a> limit is <code>VK_FALSE</code> or the <code>imageView</code> member of a <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a> structure was created with <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>baseMipLevel</code> greater than 0, the <code>pNext</code> chain does not contain <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a> or its <code>deviceRenderAreaCount</code> member is equal to 0, and the <code>imageView</code> member of a <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a> structure included in the <code>pNext</code> chain is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>imageView</code> <strong class=\"purple\">must</strong> have a width greater than or equal to \\(\\left\\lceil{\\frac{renderArea_{x}+renderArea_{width}}{shadingRateAttachmentTexelSize_{width}}}\\right\\rceil\\)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pNext-06121",
          "text": "If <a href=\"#features-maintenance7\"><code>maintenance7</code></a> is not enabled or the <a href=\"#limits-robustFragmentShadingRateAttachmentAccess\"><code>robustFragmentShadingRateAttachmentAccess</code></a> limit is <code>VK_FALSE</code> or the <code>imageView</code> member of a <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a> structure was created with <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>baseMipLevel</code> greater than 0, the <code>pNext</code> chain does not contain <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a> or its <code>deviceRenderAreaCount</code> member is equal to 0 and the <code>imageView</code> member of a <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a> structure included in the <code>pNext</code> chain is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>imageView</code> <strong class=\"purple\">must</strong> have a height greater than or equal to \\(\\left\\lceil{\\frac{renderArea_{y}+renderArea_{height}}{shadingRateAttachmentTexelSize_{height}}}\\right\\rceil\\)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pNext-06120",
          "text": "If <a href=\"#features-maintenance7\"><code>maintenance7</code></a> is not enabled or the <a href=\"#limits-robustFragmentShadingRateAttachmentAccess\"><code>robustFragmentShadingRateAttachmentAccess</code></a> limit is <code>VK_FALSE</code> or the <code>imageView</code> member of a <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a> structure was created with <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>baseMipLevel</code> greater than 0, the <code>pNext</code> chain contains a <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a> structure, its <code>deviceRenderAreaCount</code> member is not 0, and the <code>imageView</code> member of a <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a> structure included in the <code>pNext</code> chain is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>imageView</code> <strong class=\"purple\">must</strong> have a width greater than or equal to \\(\\left\\lceil{\\frac{pDeviceRenderAreas_{x}+pDeviceRenderAreas_{width}}{shadingRateAttachmentTexelSize_{width}}}\\right\\rceil\\) for each element of <code>pDeviceRenderAreas</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pNext-06122",
          "text": "If <a href=\"#features-maintenance7\"><code>maintenance7</code></a> is not enabled or the <a href=\"#limits-robustFragmentShadingRateAttachmentAccess\"><code>robustFragmentShadingRateAttachmentAccess</code></a> limit is <code>VK_FALSE</code> or the <code>imageView</code> member of a <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a> structure was created with <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>baseMipLevel</code> greater than 0, the <code>pNext</code> chain contains a <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a> structure, its <code>deviceRenderAreaCount</code> member is not 0, and the <code>imageView</code> member of a <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a> structure included in the <code>pNext</code> chain is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>imageView</code> <strong class=\"purple\">must</strong> have a height greater than or equal to \\(\\left\\lceil{\\frac{pDeviceRenderAreas_{y}+pDeviceRenderAreas_{height}}{shadingRateAttachmentTexelSize_{height}}}\\right\\rceil\\) for each element of <code>pDeviceRenderAreas</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-layerCount-07817",
          "text": "<code>layerCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxFramebufferLayers\"><code>maxFramebufferLayers</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-imageView-06123",
          "text": "If the <code>imageView</code> member of a <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a> structure included in the <code>pNext</code> chain is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and <code>viewMask</code> is <code>0</code>, <code>imageView</code> <strong class=\"purple\">must</strong> have a <code>layerCount</code> that is either equal to <code>1</code> or greater than or equal to <code>layerCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-imageView-06124",
          "text": "If the <code>imageView</code> member of a <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a> structure included in the <code>pNext</code> chain is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and <code>viewMask</code> is not <code>0</code>, <code>imageView</code> <strong class=\"purple\">must</strong> have a <code>layerCount</code> that either equal to <code>1</code> or greater than or equal to the index of the most significant bit in <code>viewMask</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-imageView-06125",
          "text": "If the <code>imageView</code> member of a <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a> structure included in the <code>pNext</code> chain is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, it <strong class=\"purple\">must</strong> not be equal to the <code>imageView</code> or <code>resolveImageView</code> member of <code>pDepthAttachment</code>, <code>pStencilAttachment</code>, or any element of <code>pColorAttachments</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-imageView-06126",
          "text": "If the <code>imageView</code> member of a <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a> structure included in the <code>pNext</code> chain is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, it <strong class=\"purple\">must</strong> not be equal to the <code>imageView</code> member of a <a href=\"#VkRenderingFragmentDensityMapAttachmentInfoEXT\">VkRenderingFragmentDensityMapAttachmentInfoEXT</a> structure included in the <code>pNext</code> chain",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-multiview-06127",
          "text": "If the <a href=\"#features-multiview\"><code>multiview</code></a> feature is not enabled, <code>viewMask</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-viewMask-06128",
          "text": "The index of the most significant bit in <code>viewMask</code> <strong class=\"purple\">must</strong> be less than <a href=\"#limits-maxMultiviewViewCount\"><code>maxMultiviewViewCount</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-perViewRenderAreaCount-07857",
          "text": "If the <code>perViewRenderAreaCount</code> member of a <a href=\"#VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM\">VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM</a> structure included in the <code>pNext</code> chain is not <code>0</code>, then the <a href=\"#features-multiview-per-view-render-areas\"><code>multiviewPerViewRenderAreas</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-perViewRenderAreaCount-07858",
          "text": "If the <code>perViewRenderAreaCount</code> member of a <a href=\"#VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM\">VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM</a> structure included in the <code>pNext</code> chain is not <code>0</code>, then <code>renderArea</code> <strong class=\"purple\">must</strong> specify a render area that includes the union of all per view render areas",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-None-09044",
          "text": "Valid attachments specified by this structure <strong class=\"purple\">must</strong> not be bound to memory locations that are bound to any other valid attachments specified by this structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-flags-10012",
          "text": "If <code>flags</code> includes <code>VK_RENDERING_CONTENTS_INLINE_BIT_KHR</code> then at least one of the following features <strong class=\"purple\">must</strong> be enabled<div class=\"ulist\">\n<ul>\n<li>\n<p><a href=\"#features-maintenance7\"><code>maintenance7</code></a></p>\n</li>\n<li>\n<p><a href=\"#features-nestedCommandBuffer\"><code>nestedCommandBuffer</code></a></p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pDepthAttachment-09318",
          "text": "<code>pDepthAttachment-&gt;resolveMode</code> <strong class=\"purple\">must</strong> not be <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pStencilAttachment-09319",
          "text": "<code>pStencilAttachment-&gt;resolveMode</code> <strong class=\"purple\">must</strong> not be <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-colorAttachmentCount-09320",
          "text": "If <code>colorAttachmentCount</code> is not <code>1</code>, the <code>resolveMode</code> member of any element of <code>pColorAttachments</code> <strong class=\"purple\">must</strong> not be <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-resolveMode-09321",
          "text": "If the <code>resolveMode</code> of any element of <code>pColorAttachments</code> is <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, <a href=\"#VkRenderingFragmentDensityMapAttachmentInfoEXT\">VkRenderingFragmentDensityMapAttachmentInfoEXT</a>::<code>imageView</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-resolveMode-09322",
          "text": "If the <code>resolveMode</code> of any element of <code>pColorAttachments</code> is <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a>::<code>imageView</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pNext-09535",
          "text": "If the <code>pNext</code> chain contains a <a href=\"#VkRenderPassStripeBeginInfoARM\">VkRenderPassStripeBeginInfoARM</a> structure, the union of stripe areas defined by the elements of <a href=\"#VkRenderPassStripeInfoARM\">VkRenderPassStripeInfoARM</a>::<code>pStripeInfos</code> <strong class=\"purple\">must</strong> cover the <code>renderArea</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-colorAttachmentCount-09479",
          "text": "If <code>colorAttachmentCount</code> is not <code>0</code> and the <code>imageView</code> member of an element of <code>pColorAttachments</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, that <code>imageView</code> <strong class=\"purple\">must</strong> have been created with the <a href=\"#resources-image-views-identity-mappings\">identity swizzle</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-colorAttachmentCount-09480",
          "text": "If <code>colorAttachmentCount</code> is not <code>0</code>, and there is an element of <code>pColorAttachments</code> with either its <code>resolveMode</code> member set to <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, or its <code>imageView</code> member not set to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and its <code>resolveMode</code> member not set to <code>VK_RESOLVE_MODE_NONE</code>, the <code>resolveImageView</code> member of that element of <code>pColorAttachments</code> <strong class=\"purple\">must</strong> have been created with the <a href=\"#resources-image-views-identity-mappings\">identity swizzle</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pDepthAttachment-09481",
          "text": "If <code>pDepthAttachment</code> is not <code>NULL</code> and <code>pDepthAttachment-&gt;imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pDepthAttachment-&gt;imageView</code> <strong class=\"purple\">must</strong> have been created with the <a href=\"#resources-image-views-identity-mappings\">identity swizzle</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pDepthAttachment-09482",
          "text": "If <code>pDepthAttachment</code> is not <code>NULL</code>, <code>pDepthAttachment-&gt;imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and <code>pDepthAttachment-&gt;resolveMode</code> is not <code>VK_RESOLVE_MODE_NONE</code>, <code>pDepthAttachment-&gt;resolveImageView</code> <strong class=\"purple\">must</strong> have been created with the <a href=\"#resources-image-views-identity-mappings\">identity swizzle</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pStencilAttachment-09483",
          "text": "If <code>pStencilAttachment</code> is not <code>NULL</code> and <code>pStencilAttachment-&gt;imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pStencilAttachment-&gt;imageView</code> <strong class=\"purple\">must</strong> have been created with the <a href=\"#resources-image-views-identity-mappings\">identity swizzle</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pStencilAttachment-09484",
          "text": "If <code>pStencilAttachment</code> is not <code>NULL</code>, <code>pStencilAttachment-&gt;imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and <code>pStencilAttachment-&gt;resolveMode</code> is not <code>VK_RESOLVE_MODE_NONE</code>, <code>pStencilAttachment-&gt;resolveImageView</code> <strong class=\"purple\">must</strong> have been created with the <a href=\"#resources-image-views-identity-mappings\">identity swizzle</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-imageView-09485",
          "text": "If the <code>imageView</code> member of a <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a> structure included in the <code>pNext</code> chain is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, it <strong class=\"purple\">must</strong> have been created with the <a href=\"#resources-image-views-identity-mappings\">identity swizzle</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-imageView-09486",
          "text": "If the <code>imageView</code> member of a <a href=\"#VkRenderingFragmentDensityMapAttachmentInfoEXT\">VkRenderingFragmentDensityMapAttachmentInfoEXT</a> structure included in the <code>pNext</code> chain is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, it <strong class=\"purple\">must</strong> have been created with the <a href=\"#resources-image-views-identity-mappings\">identity swizzle</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDERING_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pNext-pNext",
          "text": "Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a>, <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a>, <a href=\"#VkMultiviewPerViewAttributesInfoNVX\">VkMultiviewPerViewAttributesInfoNVX</a>, <a href=\"#VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM\">VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM</a>, <a href=\"#VkRenderPassStripeBeginInfoARM\">VkRenderPassStripeBeginInfoARM</a>, <a href=\"#VkRenderingFragmentDensityMapAttachmentInfoEXT\">VkRenderingFragmentDensityMapAttachmentInfoEXT</a>, or <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkRenderingFlagBits\">VkRenderingFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pColorAttachments-parameter",
          "text": "If <code>colorAttachmentCount</code> is not <code>0</code>, <code>pColorAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>colorAttachmentCount</code> valid <a href=\"#VkRenderingAttachmentInfo\">VkRenderingAttachmentInfo</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pDepthAttachment-parameter",
          "text": "If <code>pDepthAttachment</code> is not <code>NULL</code>, <code>pDepthAttachment</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkRenderingAttachmentInfo\">VkRenderingAttachmentInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInfo-pStencilAttachment-parameter",
          "text": "If <code>pStencilAttachment</code> is not <code>NULL</code>, <code>pStencilAttachment</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkRenderingAttachmentInfo\">VkRenderingAttachmentInfo</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkRenderingAttachmentInfo": {
      "core": [
        {
          "vuid": "VUID-VkRenderingAttachmentInfo-imageView-06129",
          "text": "If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and has a non-integer color format, <code>resolveMode</code> <strong class=\"purple\">must</strong> be <code>VK_RESOLVE_MODE_NONE</code> or <code>VK_RESOLVE_MODE_AVERAGE_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentInfo-imageView-06130",
          "text": "If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and has an integer color format, <code>resolveMode</code> <strong class=\"purple\">must</strong> be <code>VK_RESOLVE_MODE_NONE</code> or <code>VK_RESOLVE_MODE_SAMPLE_ZERO_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentInfo-imageView-06861",
          "text": "<code>imageView</code> <strong class=\"purple\">must</strong> not have a sample count of <code>VK_SAMPLE_COUNT_1_BIT</code> if all of the following hold:<div class=\"ulist\">\n<ul>\n<li>\n<p><code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a></p>\n</li>\n<li>\n<p><code>resolveMode</code> is not <code>VK_RESOLVE_MODE_NONE</code></p>\n</li>\n<li>\n<p>the <code>pNext</code> chain of <a href=\"#VkRenderingInfo\">VkRenderingInfo</a> does not include a\n<a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with the\n<code>multisampledRenderToSingleSampledEnable</code> field equal to\n<code>VK_TRUE</code></p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentInfo-imageView-06862",
          "text": "<code>resolveImageView</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> if all of the following hold:<div class=\"ulist\">\n<ul>\n<li>\n<p><code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a></p>\n</li>\n<li>\n<p><code>resolveMode</code> is not <code>VK_RESOLVE_MODE_NONE</code></p>\n</li>\n<li>\n<p>the <code>pNext</code> chain of <a href=\"#VkRenderingInfo\">VkRenderingInfo</a> does not include a\n<a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with the\n<code>multisampledRenderToSingleSampledEnable</code> field equal to\n<code>VK_TRUE</code></p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentInfo-imageView-06863",
          "text": "If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>resolveMode</code> is not <code>VK_RESOLVE_MODE_NONE</code>, the <code>pNext</code> chain of <a href=\"#VkRenderingInfo\">VkRenderingInfo</a> includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with the <code>multisampledRenderToSingleSampledEnable</code> field equal to <code>VK_TRUE</code>, and <code>imageView</code> has a sample count of <code>VK_SAMPLE_COUNT_1_BIT</code>, <code>resolveImageView</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentInfo-imageView-06864",
          "text": "If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>resolveImageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and <code>resolveMode</code> is not <code>VK_RESOLVE_MODE_NONE</code>, <code>resolveImageView</code> <strong class=\"purple\">must</strong> have a sample count of <code>VK_SAMPLE_COUNT_1_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentInfo-imageView-06865",
          "text": "If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>resolveImageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and <code>resolveMode</code> is not <code>VK_RESOLVE_MODE_NONE</code>, <code>imageView</code> and <code>resolveImageView</code> <strong class=\"purple\">must</strong> have the same <a href=\"#VkFormat\">VkFormat</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentInfo-imageView-06135",
          "text": "If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>imageLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code>, <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentInfo-imageView-06136",
          "text": "If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <code>resolveMode</code> is not <code>VK_RESOLVE_MODE_NONE</code>, <code>resolveImageLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentInfo-imageView-06137",
          "text": "If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <code>resolveMode</code> is not <code>VK_RESOLVE_MODE_NONE</code>, <code>resolveImageLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentInfo-imageView-06138",
          "text": "If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>imageLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentInfo-imageView-06139",
          "text": "If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <code>resolveMode</code> is not <code>VK_RESOLVE_MODE_NONE</code>, <code>resolveImageLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentInfo-imageView-06140",
          "text": "If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>imageLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentInfo-imageView-06141",
          "text": "If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <code>resolveMode</code> is not <code>VK_RESOLVE_MODE_NONE</code>, <code>resolveImageLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentInfo-imageView-06142",
          "text": "If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <code>resolveMode</code> is not <code>VK_RESOLVE_MODE_NONE</code>, <code>resolveImageLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentInfo-imageView-06143",
          "text": "If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>imageLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentInfo-imageView-06144",
          "text": "If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <code>resolveMode</code> is not <code>VK_RESOLVE_MODE_NONE</code>, <code>resolveImageLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentInfo-imageView-06145",
          "text": "If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>imageLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_PRESENT_SRC_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentInfo-imageView-06146",
          "text": "If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <code>resolveMode</code> is not <code>VK_RESOLVE_MODE_NONE</code>, <code>resolveImageLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_PRESENT_SRC_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentInfo-externalFormatResolve-09323",
          "text": "If <a href=\"#features-externalFormatResolve\"><code>externalFormatResolve</code></a> is not enabled, <code>resolveMode</code> <strong class=\"purple\">must</strong> not be <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentInfo-resolveMode-09324",
          "text": "If <code>resolveMode</code> is <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, <code>resolveImageView</code> <strong class=\"purple\">must</strong> be a valid image view",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentInfo-nullColorAttachmentWithExternalFormatResolve-09325",
          "text": "If the <a href=\"#limits-nullColorAttachmentWithExternalFormatResolve\"><code>nullColorAttachmentWithExternalFormatResolve</code></a> property is <code>VK_TRUE</code> and <code>resolveMode</code> is <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, <code>resolveImageView</code> <strong class=\"purple\">must</strong> have been created with an image with a <code>samples</code> value of <code>VK_SAMPLE_COUNT_1_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentInfo-resolveMode-09326",
          "text": "If <code>resolveMode</code> is <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, <code>resolveImageView</code> <strong class=\"purple\">must</strong> have been created with an external format specified by <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentInfo-resolveMode-09327",
          "text": "If <code>resolveMode</code> is <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, <code>resolveImageView</code> <strong class=\"purple\">must</strong> have been created with a <code>subresourceRange.layerCount</code> of <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentInfo-resolveMode-09328",
          "text": "If <code>resolveMode</code> is <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> and <a href=\"#limits-nullColorAttachmentWithExternalFormatResolve\"><code>nullColorAttachmentWithExternalFormatResolve</code></a> is <code>VK_TRUE</code>, <code>imageView</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentInfo-resolveMode-09329",
          "text": "If <code>resolveMode</code> is <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> and <a href=\"#limits-nullColorAttachmentWithExternalFormatResolve\"><code>nullColorAttachmentWithExternalFormatResolve</code></a> is <code>VK_FALSE</code>, <code>imageView</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageView\">VkImageView</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentInfo-resolveMode-09330",
          "text": "If <code>resolveMode</code> is <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> and <a href=\"#limits-nullColorAttachmentWithExternalFormatResolve\"><code>nullColorAttachmentWithExternalFormatResolve</code></a> is <code>VK_FALSE</code>, <code>imageView</code> <strong class=\"purple\">must</strong> have a format equal to the value of <a href=\"#VkAndroidHardwareBufferFormatResolvePropertiesANDROID\">VkAndroidHardwareBufferFormatResolvePropertiesANDROID</a>::<code>colorAttachmentFormat</code> as returned by a call to <a href=\"#vkGetAndroidHardwareBufferPropertiesANDROID\">vkGetAndroidHardwareBufferPropertiesANDROID</a> for the Android hardware buffer that was used to create <code>resolveImageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentInfo-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentInfo-imageView-parameter",
          "text": "If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>imageView</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageView\">VkImageView</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentInfo-imageLayout-parameter",
          "text": "<code>imageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentInfo-resolveMode-parameter",
          "text": "If <code>resolveMode</code> is not <code>0</code>, <code>resolveMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkResolveModeFlagBits\">VkResolveModeFlagBits</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentInfo-resolveImageView-parameter",
          "text": "If <code>resolveImageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>resolveImageView</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageView\">VkImageView</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentInfo-resolveImageLayout-parameter",
          "text": "<code>resolveImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentInfo-loadOp-parameter",
          "text": "<code>loadOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentLoadOp\">VkAttachmentLoadOp</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentInfo-storeOp-parameter",
          "text": "<code>storeOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentStoreOp\">VkAttachmentStoreOp</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentInfo-clearValue-parameter",
          "text": "<code>clearValue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkClearValue\">VkClearValue</a> union",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentInfo-commonparent",
          "text": "Both of <code>imageView</code>, and <code>resolveImageView</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkRenderingFragmentShadingRateAttachmentInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06147",
          "text": "If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>layout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_GENERAL</code> or <code>VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06148",
          "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 <code>VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06149",
          "text": "If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>shadingRateAttachmentTexelSize.width</code> <strong class=\"purple\">must</strong> be a power of two value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06150",
          "text": "If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>shadingRateAttachmentTexelSize.width</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxFragmentShadingRateAttachmentTexelSize\"><code>maxFragmentShadingRateAttachmentTexelSize.width</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06151",
          "text": "If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>shadingRateAttachmentTexelSize.width</code> <strong class=\"purple\">must</strong> be greater than or equal to <a href=\"#limits-minFragmentShadingRateAttachmentTexelSize\"><code>minFragmentShadingRateAttachmentTexelSize.width</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06152",
          "text": "If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>shadingRateAttachmentTexelSize.height</code> <strong class=\"purple\">must</strong> be a power of two value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06153",
          "text": "If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>shadingRateAttachmentTexelSize.height</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxFragmentShadingRateAttachmentTexelSize\"><code>maxFragmentShadingRateAttachmentTexelSize.height</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06154",
          "text": "If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>shadingRateAttachmentTexelSize.height</code> <strong class=\"purple\">must</strong> be greater than or equal to <a href=\"#limits-minFragmentShadingRateAttachmentTexelSize\"><code>minFragmentShadingRateAttachmentTexelSize.height</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06155",
          "text": "If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the quotient of <code>shadingRateAttachmentTexelSize.width</code> and <code>shadingRateAttachmentTexelSize.height</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxFragmentShadingRateAttachmentTexelSizeAspectRatio\"><code>maxFragmentShadingRateAttachmentTexelSizeAspectRatio</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06156",
          "text": "If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the quotient of <code>shadingRateAttachmentTexelSize.height</code> and <code>shadingRateAttachmentTexelSize.width</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxFragmentShadingRateAttachmentTexelSizeAspectRatio\"><code>maxFragmentShadingRateAttachmentTexelSizeAspectRatio</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-parameter",
          "text": "If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>imageView</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageView\">VkImageView</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageLayout-parameter",
          "text": "<code>imageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkRenderingFragmentDensityMapAttachmentInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-imageView-06157",
          "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_GENERAL</code> or <code>VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-imageView-06158",
          "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 <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-imageView-06159",
          "text": "If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, it <strong class=\"purple\">must</strong> not have been created with <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-apiVersion-07908",
          "text": "If the <a href=\"#features-multiview\"><code>multiview</code></a> feature is not enabled, <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan 1.1, and <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, it <strong class=\"purple\">must</strong> have a <code>layerCount</code> equal to <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-imageView-parameter",
          "text": "<code>imageView</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageView\">VkImageView</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-imageLayout-parameter",
          "text": "<code>imageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkGetRenderingAreaGranularityKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetRenderingAreaGranularityKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetRenderingAreaGranularityKHR-pRenderingAreaInfo-parameter",
          "text": "<code>pRenderingAreaInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkRenderingAreaInfoKHR\">VkRenderingAreaInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetRenderingAreaGranularityKHR-pGranularity-parameter",
          "text": "<code>pGranularity</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkExtent2D\">VkExtent2D</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkRenderingAreaInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkRenderingAreaInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAreaInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkRenderPassStripeBeginInfoARM": {
      "core": [
        {
          "vuid": "VUID-VkRenderPassStripeBeginInfoARM-stripeInfoCount-09450",
          "text": "<code>stripeInfoCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRenderPassStripedPropertiesARM</code>::<code>maxRenderPassStripes</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassStripeBeginInfoARM-stripeArea-09451",
          "text": "The <code>stripeArea</code> defined by each element of <code>pStripeInfos</code> <strong class=\"purple\">must</strong> not overlap the <code>stripeArea</code> of any other element",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassStripeBeginInfoARM-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_BEGIN_INFO_ARM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassStripeBeginInfoARM-pStripeInfos-parameter",
          "text": "<code>pStripeInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stripeInfoCount</code> valid <a href=\"#VkRenderPassStripeInfoARM\">VkRenderPassStripeInfoARM</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassStripeBeginInfoARM-stripeInfoCount-arraylength",
          "text": "<code>stripeInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkRenderPassStripeInfoARM": {
      "core": [
        {
          "vuid": "VUID-VkRenderPassStripeInfoARM-stripeArea-09452",
          "text": "<code>stripeArea.offset.x</code> <strong class=\"purple\">must</strong> be a multiple of <a href=\"#VkPhysicalDeviceRenderPassStripedPropertiesARM\">VkPhysicalDeviceRenderPassStripedPropertiesARM</a>::<code>renderPassStripeGranularity.width</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassStripeInfoARM-stripeArea-09453",
          "text": "<code>stripeArea.extent.width</code> <strong class=\"purple\">must</strong> be a multiple of <a href=\"#VkPhysicalDeviceRenderPassStripedPropertiesARM\">VkPhysicalDeviceRenderPassStripedPropertiesARM</a>::<code>renderPassStripeGranularity.width</code>, or the sum of <code>stripeArea.offset.x</code> and <code>stripeArea.extent.width</code> <strong class=\"purple\">must</strong> be equal to the <code>renderArea.extent.width</code> of the render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassStripeInfoARM-stripeArea-09454",
          "text": "<code>stripeArea.offset.y</code> <strong class=\"purple\">must</strong> be a multiple of <a href=\"#VkPhysicalDeviceRenderPassStripedPropertiesARM\">VkPhysicalDeviceRenderPassStripedPropertiesARM</a>::<code>renderPassStripeGranularity.height</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassStripeInfoARM-stripeArea-09455",
          "text": "<code>stripeArea.extent.height</code> <strong class=\"purple\">must</strong> be a multiple of <a href=\"#VkPhysicalDeviceRenderPassStripedPropertiesARM\">VkPhysicalDeviceRenderPassStripedPropertiesARM</a>::<code>renderPassStripeGranularity.height</code>, or the sum of <code>stripeArea.offset.y</code> and <code>stripeArea.extent.height</code> <strong class=\"purple\">must</strong> be equal to the <code>renderArea.extent.height</code> of the render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassStripeInfoARM-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_INFO_ARM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassStripeInfoARM-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdEndRendering": {
      "core": [
        {
          "vuid": "VUID-vkCmdEndRendering-None-06161",
          "text": "The current render pass instance <strong class=\"purple\">must</strong> have been begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndRendering-commandBuffer-06162",
          "text": "The current render pass instance <strong class=\"purple\">must</strong> have been begun in <code>commandBuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndRendering-None-06781",
          "text": "This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndRendering-None-06999",
          "text": "If <code>vkCmdBeginQuery</code>* was called within the render pass, the corresponding <code>vkCmdEndQuery</code>* <strong class=\"purple\">must</strong> have been called subsequently within the same subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndRendering-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndRendering-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndRendering-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndRendering-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndRendering-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkTilePropertiesQCOM": {
      "core": [
        {
          "vuid": "VUID-VkTilePropertiesQCOM-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkTilePropertiesQCOM-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetDynamicRenderingTilePropertiesQCOM": {
      "core": [
        {
          "vuid": "VUID-vkGetDynamicRenderingTilePropertiesQCOM-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDynamicRenderingTilePropertiesQCOM-pRenderingInfo-parameter",
          "text": "<code>pRenderingInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkRenderingInfo\">VkRenderingInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDynamicRenderingTilePropertiesQCOM-pProperties-parameter",
          "text": "<code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkTilePropertiesQCOM\">VkTilePropertiesQCOM</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateRenderPass": {
      "core": [
        {
          "vuid": "VUID-vkCreateRenderPass-device-10000",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> support at least one queue family with the <code>VK_QUEUE_GRAPHICS_BIT</code> capability",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRenderPass-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRenderPass-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkRenderPassCreateInfo\">VkRenderPassCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRenderPass-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRenderPass-pRenderPass-parameter",
          "text": "<code>pRenderPass</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkRenderPass\">VkRenderPass</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkRenderPassCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkRenderPassCreateInfo-attachment-00834",
          "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>, then it <strong class=\"purple\">must</strong> be less than <code>attachmentCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo-fragmentDensityMapAttachment-06471",
          "text": "If the pNext chain includes a <a href=\"#VkRenderPassFragmentDensityMapCreateInfoEXT\">VkRenderPassFragmentDensityMapCreateInfoEXT</a> structure and the <code>fragmentDensityMapAttachment</code> member is not <code>VK_ATTACHMENT_UNUSED</code>, then <code>attachment</code> <strong class=\"purple\">must</strong> be less than <code>attachmentCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-00836",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-02511",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-01566",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-01567",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo-pNext-01926",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a> structure, the <code>subpass</code> member of each element of its <code>pAspectReferences</code> member <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo-pNext-01927",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a> structure, the <code>inputAttachmentIndex</code> member of each element of its <code>pAspectReferences</code> member <strong class=\"purple\">must</strong> be less than the value of <code>inputAttachmentCount</code> in the element of <code>pSubpasses</code> identified by its <code>subpass</code> member",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo-pNext-01963",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a> structure, for any element of the <code>pInputAttachments</code> member of any element of <code>pSubpasses</code> where the <code>attachment</code> member is not <code>VK_ATTACHMENT_UNUSED</code>, the <code>aspectMask</code> member of the corresponding element of <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a>::<code>pAspectReferences</code> <strong class=\"purple\">must</strong> only include aspects that are present in images of the format specified by the element of <code>pAttachments</code> at <code>attachment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo-pNext-01928",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a> structure, and its <code>subpassCount</code> member is not zero, that member <strong class=\"purple\">must</strong> be equal to the value of <code>subpassCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo-pNext-01929",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a> structure, if its <code>dependencyCount</code> member is not zero, it <strong class=\"purple\">must</strong> be equal to <code>dependencyCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo-pNext-01930",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a> structure, for each non-zero element of <code>pViewOffsets</code>, the <code>srcSubpass</code> and <code>dstSubpass</code> members of <code>pDependencies</code> at the same index <strong class=\"purple\">must</strong> not be equal",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo-pNext-02512",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a> structure, for any element of <code>pDependencies</code> with a <code>dependencyFlags</code> member that does not include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>, the corresponding element of the <code>pViewOffsets</code> member of that <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a> instance <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo-pNext-02513",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a> structure, elements of its <code>pViewMasks</code> member <strong class=\"purple\">must</strong> either all be <code>0</code>, or all not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo-pNext-02514",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a> structure, and each element of its <code>pViewMasks</code> member is <code>0</code>, the <code>dependencyFlags</code> member of each element of <code>pDependencies</code> <strong class=\"purple\">must</strong> not include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo-pNext-02515",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a> structure, and each element of its <code>pViewMasks</code> member is <code>0</code>, its <code>correlationMaskCount</code> member <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo-pDependencies-00837",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo-pDependencies-00838",
          "text": "For any element of <code>pDependencies</code>, if the <code>dstSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, all stage flags included in the <code>dstStageMask</code> member of that dependency <strong class=\"purple\">must</strong> be a pipeline stage supported by the <a href=\"#synchronization-pipeline-stages-types\">pipeline</a> identified by the <code>pipelineBindPoint</code> member of the destination subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo-pDependencies-06866",
          "text": "For any element of <code>pDependencies</code>, if its <code>srcSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, it <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo-pDependencies-06867",
          "text": "For any element of <code>pDependencies</code>, if its <code>dstSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, it <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo-pNext-pNext",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkRenderPassCreateFlagBits\">VkRenderPassCreateFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-parameter",
          "text": "If <code>attachmentCount</code> is not <code>0</code>, <code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <a href=\"#VkAttachmentDescription\">VkAttachmentDescription</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo-pSubpasses-parameter",
          "text": "<code>pSubpasses</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>subpassCount</code> valid <a href=\"#VkSubpassDescription\">VkSubpassDescription</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo-pDependencies-parameter",
          "text": "If <code>dependencyCount</code> is not <code>0</code>, <code>pDependencies</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dependencyCount</code> valid <a href=\"#VkSubpassDependency\">VkSubpassDependency</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo-subpassCount-arraylength",
          "text": "<code>subpassCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkRenderPassMultiviewCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkRenderPassMultiviewCreateInfo-pCorrelationMasks-00841",
          "text": "Each view index <strong class=\"purple\">must</strong> not be set in more than one element of <code>pCorrelationMasks</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassMultiviewCreateInfo-multiview-06555",
          "text": "If the <a href=\"#features-multiview\"><code>multiview</code></a> feature is not enabled, each element of <code>pViewMasks</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassMultiviewCreateInfo-pViewMasks-06697",
          "text": "The index of the most significant bit in each element of <code>pViewMasks</code> <strong class=\"purple\">must</strong> be less than <a href=\"#limits-maxMultiviewViewCount\"><code>maxMultiviewViewCount</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassMultiviewCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassMultiviewCreateInfo-pViewMasks-parameter",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassMultiviewCreateInfo-pViewOffsets-parameter",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassMultiviewCreateInfo-pCorrelationMasks-parameter",
          "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",
          "page": "vkspec"
        }
      ]
    },
    "VkMultiviewPerViewAttributesInfoNVX": {
      "core": [
        {
          "vuid": "VUID-VkMultiviewPerViewAttributesInfoNVX-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkRenderPassFragmentDensityMapCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02548",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02549",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02550",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02551",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-parameter",
          "text": "<code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentReference\">VkAttachmentReference</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkAttachmentDescription": {
      "core": [
        {
          "vuid": "VUID-VkAttachmentDescription-format-06699",
          "text": "If <code>format</code> includes a color or depth component and <code>loadOp</code> is <code>VK_ATTACHMENT_LOAD_OP_LOAD</code>, then <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription-finalLayout-00843",
          "text": "<code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription-format-03280",
          "text": "If <code>format</code> is a color format, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription-format-03281",
          "text": "If <code>format</code> is a depth/stencil format, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription-format-03282",
          "text": "If <code>format</code> is a color format, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription-format-03283",
          "text": "If <code>format</code> is a depth/stencil format, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription-format-06487",
          "text": "If <code>format</code> is a color format, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription-format-06488",
          "text": "If <code>format</code> is a color format, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription-separateDepthStencilLayouts-03284",
          "text": "If the <a href=\"#features-separateDepthStencilLayouts\"><code>separateDepthStencilLayouts</code></a> feature is not enabled, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>,",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription-separateDepthStencilLayouts-03285",
          "text": "If the <a href=\"#features-separateDepthStencilLayouts\"><code>separateDepthStencilLayouts</code></a> feature is not enabled, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>,",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription-format-03286",
          "text": "If <code>format</code> is a color format, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription-format-03287",
          "text": "If <code>format</code> is a color format, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription-format-06906",
          "text": "If <code>format</code> is a depth/stencil format which includes both depth and stencil components, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription-format-06907",
          "text": "If <code>format</code> is a depth/stencil format which includes both depth and stencil components, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription-format-03290",
          "text": "If <code>format</code> is a depth/stencil format which includes only the depth component, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription-format-03291",
          "text": "If <code>format</code> is a depth/stencil format which includes only the depth component, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription-synchronization2-06908",
          "text": "If the <a href=\"#features-synchronization2\"><code>synchronization2</code></a> feature is not enabled, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR</code> or <code>VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription-synchronization2-06909",
          "text": "If the <a href=\"#features-synchronization2\"><code>synchronization2</code></a> feature is not enabled, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR</code> or <code>VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription-attachmentFeedbackLoopLayout-07309",
          "text": "If the <a href=\"#features-attachmentFeedbackLoopLayout\"><code>attachmentFeedbackLoopLayout</code></a> feature is not enabled, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription-attachmentFeedbackLoopLayout-07310",
          "text": "If the <a href=\"#features-attachmentFeedbackLoopLayout\"><code>attachmentFeedbackLoopLayout</code></a> feature is not enabled, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription-samples-08745",
          "text": "<code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value that is set in <code>imageCreateSampleCounts</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>) for the given <code>format</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription-dynamicRenderingLocalRead-09544",
          "text": "If the <a href=\"#features-dynamicRenderingLocalRead\"><code>dynamicRenderingLocalRead</code></a> feature is not enabled, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription-dynamicRenderingLocalRead-09545",
          "text": "If the <a href=\"#features-dynamicRenderingLocalRead\"><code>dynamicRenderingLocalRead</code></a> feature is not enabled, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription-format-06698",
          "text": "<code>format</code> <strong class=\"purple\">must</strong> not be VK_FORMAT_UNDEFINED",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription-format-06700",
          "text": "If <code>format</code> includes a stencil component and <code>stencilLoadOp</code> is <code>VK_ATTACHMENT_LOAD_OP_LOAD</code>, then <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription-format-03292",
          "text": "If <code>format</code> is a depth/stencil format which includes only the stencil component, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription-format-03293",
          "text": "If <code>format</code> is a depth/stencil format which includes only the stencil component, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription-format-06242",
          "text": "If <code>format</code> is a depth/stencil format which includes both depth and stencil components, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription-format-06243",
          "text": "If <code>format</code> is a depth/stencil format which includes both depth and stencil components, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAttachmentDescriptionFlagBits\">VkAttachmentDescriptionFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription-format-parameter",
          "text": "<code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription-samples-parameter",
          "text": "<code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription-loadOp-parameter",
          "text": "<code>loadOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentLoadOp\">VkAttachmentLoadOp</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription-storeOp-parameter",
          "text": "<code>storeOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentStoreOp\">VkAttachmentStoreOp</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription-stencilLoadOp-parameter",
          "text": "<code>stencilLoadOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentLoadOp\">VkAttachmentLoadOp</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription-stencilStoreOp-parameter",
          "text": "<code>stencilStoreOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentStoreOp\">VkAttachmentStoreOp</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription-initialLayout-parameter",
          "text": "<code>initialLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription-finalLayout-parameter",
          "text": "<code>finalLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkRenderPassInputAttachmentAspectCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkRenderPassInputAttachmentAspectCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassInputAttachmentAspectCreateInfo-pAspectReferences-parameter",
          "text": "<code>pAspectReferences</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>aspectReferenceCount</code> valid <a href=\"#VkInputAttachmentAspectReference\">VkInputAttachmentAspectReference</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassInputAttachmentAspectCreateInfo-aspectReferenceCount-arraylength",
          "text": "<code>aspectReferenceCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkInputAttachmentAspectReference": {
      "core": [
        {
          "vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-01964",
          "text": "<code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_METADATA_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-02250",
          "text": "<code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_MEMORY_PLANE<em>_i_</em>BIT_EXT</code> for any index <em>i</em>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-parameter",
          "text": "<code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-requiredbitmask",
          "text": "<code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkSubpassDescription": {
      "core": [
        {
          "vuid": "VUID-VkSubpassDescription-attachment-06912",
          "text": "If the <code>attachment</code> member of an element of <code>pInputAttachments</code> is not <code>VK_ATTACHMENT_UNUSED</code>, its <code>layout</code> member <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-attachment-06913",
          "text": "If the <code>attachment</code> member of an element of <code>pColorAttachments</code> is not <code>VK_ATTACHMENT_UNUSED</code>, its <code>layout</code> member <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-attachment-06914",
          "text": "If the <code>attachment</code> member of an element of <code>pResolveAttachments</code> is not <code>VK_ATTACHMENT_UNUSED</code>, its <code>layout</code> member <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-attachment-06915",
          "text": "If the <code>attachment</code> member of <code>pDepthStencilAttachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, ts <code>layout</code> member <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-attachment-06916",
          "text": "If the <code>attachment</code> member of an element of <code>pColorAttachments</code> is not <code>VK_ATTACHMENT_UNUSED</code>, its <code>layout</code> member <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-attachment-06917",
          "text": "If the <code>attachment</code> member of an element of <code>pResolveAttachments</code> is not <code>VK_ATTACHMENT_UNUSED</code>, its <code>layout</code> member <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-attachment-06918",
          "text": "If the <code>attachment</code> member of an element of <code>pInputAttachments</code> is not <code>VK_ATTACHMENT_UNUSED</code>, its <code>layout</code> member <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-attachment-06919",
          "text": "If the <code>attachment</code> member of an element of <code>pColorAttachments</code> is not <code>VK_ATTACHMENT_UNUSED</code>, its <code>layout</code> member <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-attachment-06920",
          "text": "If the <code>attachment</code> member of an element of <code>pResolveAttachments</code> is not <code>VK_ATTACHMENT_UNUSED</code>, its <code>layout</code> member <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-attachment-06921",
          "text": "If the <code>attachment</code> member of an element of <code>pInputAttachments</code> is not <code>VK_ATTACHMENT_UNUSED</code>, its <code>layout</code> member <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-attachment-06922",
          "text": "If the <code>attachment</code> member of an element of <code>pColorAttachments</code> is not <code>VK_ATTACHMENT_UNUSED</code>, its <code>layout</code> member <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-attachment-06923",
          "text": "If the <code>attachment</code> member of an element of <code>pResolveAttachments</code> is not <code>VK_ATTACHMENT_UNUSED</code>, its <code>layout</code> member <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-pipelineBindPoint-04952",
          "text": "<code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> or <code>VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-colorAttachmentCount-00845",
          "text": "<code>colorAttachmentCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxColorAttachments</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-loadOp-00846",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-pResolveAttachments-00847",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-pResolveAttachments-00848",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-pResolveAttachments-00849",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-pResolveAttachments-00850",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-pColorAttachments-09430",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-pInputAttachments-02647",
          "text": "All attachments in <code>pInputAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have image formats whose <a href=\"#potential-format-features\">potential format features</a> contain at least <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code> or <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-pColorAttachments-02648",
          "text": "All attachments in <code>pColorAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have image formats whose <a href=\"#potential-format-features\">potential format features</a> contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-pResolveAttachments-02649",
          "text": "All attachments in <code>pResolveAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have image formats whose <a href=\"#potential-format-features\">potential format features</a> contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-pDepthStencilAttachment-02650",
          "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 an image format whose <a href=\"#potential-format-features\">potential format features</a> contain <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-linearColorAttachment-06496",
          "text": "If the <a href=\"#features-linearColorAttachment\"><code>linearColorAttachment</code></a> feature is enabled and the image is created with <code>VK_IMAGE_TILING_LINEAR</code>, all attachments in <code>pInputAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have image formats whose <a href=\"#potential-format-features\">potential format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-linearColorAttachment-06497",
          "text": "If the <a href=\"#features-linearColorAttachment\"><code>linearColorAttachment</code></a> feature is enabled and the image is created with <code>VK_IMAGE_TILING_LINEAR</code>, all attachments in <code>pColorAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have image formats whose <a href=\"#potential-format-features\">potential format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-linearColorAttachment-06498",
          "text": "If the <a href=\"#features-linearColorAttachment\"><code>linearColorAttachment</code></a> feature is enabled and the image is created with <code>VK_IMAGE_TILING_LINEAR</code>, all attachments in <code>pResolveAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have image formats whose <a href=\"#potential-format-features\">potential format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-None-09431",
          "text": "If either of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>The <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>The <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>all attachments in <code>pColorAttachments</code> that are not\n<code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have a sample count that is smaller than or\nequal to the sample count of <code>pDepthStencilAttachment</code> if it is not\n<code>VK_ATTACHMENT_UNUSED</code></p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-pDepthStencilAttachment-01418",
          "text": "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 , if none of the following are enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>The <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>The <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-attachment-00853",
          "text": "Each element of <code>pPreserveAttachments</code> <strong class=\"purple\">must</strong> not be <code>VK_ATTACHMENT_UNUSED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-pPreserveAttachments-00854",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-layout-02519",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-flags-00856",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-flags-03341",
          "text": "If <code>flags</code> includes <code>VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM</code>, and if <code>pResolveAttachments</code> is not <code>NULL</code>, then each resolve attachment <strong class=\"purple\">must</strong> be <code>VK_ATTACHMENT_UNUSED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-flags-03343",
          "text": "If <code>flags</code> includes <code>VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM</code>, then the subpass <strong class=\"purple\">must</strong> be the last subpass in a subpass dependency chain",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-pInputAttachments-02868",
          "text": "If the render pass is created with <code>VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM</code> each of the elements of <code>pInputAttachments</code> <strong class=\"purple\">must</strong> be <code>VK_ATTACHMENT_UNUSED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-pDepthStencilAttachment-04438",
          "text": "<code>pDepthStencilAttachment</code> and <code>pColorAttachments</code> <strong class=\"purple\">must</strong> not contain references to the same attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSubpassDescriptionFlagBits\">VkSubpassDescriptionFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-pipelineBindPoint-parameter",
          "text": "<code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-pInputAttachments-parameter",
          "text": "If <code>inputAttachmentCount</code> is not <code>0</code>, <code>pInputAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>inputAttachmentCount</code> valid <a href=\"#VkAttachmentReference\">VkAttachmentReference</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-pColorAttachments-parameter",
          "text": "If <code>colorAttachmentCount</code> is not <code>0</code>, <code>pColorAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>colorAttachmentCount</code> valid <a href=\"#VkAttachmentReference\">VkAttachmentReference</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-pResolveAttachments-parameter",
          "text": "If <code>colorAttachmentCount</code> is not <code>0</code>, and <code>pResolveAttachments</code> is not <code>NULL</code>, <code>pResolveAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>colorAttachmentCount</code> valid <a href=\"#VkAttachmentReference\">VkAttachmentReference</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-pDepthStencilAttachment-parameter",
          "text": "If <code>pDepthStencilAttachment</code> is not <code>NULL</code>, <code>pDepthStencilAttachment</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAttachmentReference\">VkAttachmentReference</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription-pPreserveAttachments-parameter",
          "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",
          "page": "vkspec"
        }
      ]
    },
    "VkAttachmentReference": {
      "core": [
        {
          "vuid": "VUID-VkAttachmentReference-layout-03077",
          "text": "If <code>attachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>layout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code>, <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>, or <code>VK_IMAGE_LAYOUT_PRESENT_SRC_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentReference-separateDepthStencilLayouts-03313",
          "text": "If the <a href=\"#features-separateDepthStencilLayouts\"><code>separateDepthStencilLayouts</code></a> feature is not enabled, and <code>attachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>layout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>,",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentReference-synchronization2-06910",
          "text": "If the <a href=\"#features-synchronization2\"><code>synchronization2</code></a> feature is not enabled, <code>layout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR</code> or <code>VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentReference-attachmentFeedbackLoopLayout-07311",
          "text": "If the <a href=\"#features-attachmentFeedbackLoopLayout\"><code>attachmentFeedbackLoopLayout</code></a> feature is not enabled, <code>layout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentReference-dynamicRenderingLocalRead-09546",
          "text": "If the <a href=\"#features-dynamicRenderingLocalRead\"><code>dynamicRenderingLocalRead</code></a> feature is not enabled, <code>layout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentReference-layout-parameter",
          "text": "<code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkSubpassDependency": {
      "core": [
        {
          "vuid": "VUID-VkSubpassDependency-srcStageMask-04090",
          "text": "If the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency-srcStageMask-04091",
          "text": "If the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency-srcStageMask-04092",
          "text": "If the <a href=\"#features-conditionalRendering\"><code>conditionalRendering</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency-srcStageMask-04093",
          "text": "If the <a href=\"#features-fragmentDensityMap\"><code>fragmentDensityMap</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency-srcStageMask-04094",
          "text": "If the <a href=\"#features-transformFeedback\"><code>transformFeedback</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency-srcStageMask-04095",
          "text": "If the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency-srcStageMask-04096",
          "text": "If the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency-srcStageMask-07318",
          "text": "If neither the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> or <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> are enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency-srcStageMask-03937",
          "text": "If the <a href=\"#features-synchronization2\"><code>synchronization2</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency-srcStageMask-07949",
          "text": "If neither the <a href=\"#VK_NV_ray_tracing\">VK_NV_ray_tracing</a> extension or <a href=\"#features-rayTracingPipeline\"><code>rayTracingPipeline</code> feature</a> are enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency-dstStageMask-04090",
          "text": "If the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency-dstStageMask-04091",
          "text": "If the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency-dstStageMask-04092",
          "text": "If the <a href=\"#features-conditionalRendering\"><code>conditionalRendering</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency-dstStageMask-04093",
          "text": "If the <a href=\"#features-fragmentDensityMap\"><code>fragmentDensityMap</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency-dstStageMask-04094",
          "text": "If the <a href=\"#features-transformFeedback\"><code>transformFeedback</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency-dstStageMask-04095",
          "text": "If the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency-dstStageMask-04096",
          "text": "If the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency-dstStageMask-07318",
          "text": "If neither the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> or <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> are enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency-dstStageMask-03937",
          "text": "If the <a href=\"#features-synchronization2\"><code>synchronization2</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency-dstStageMask-07949",
          "text": "If neither the <a href=\"#VK_NV_ray_tracing\">VK_NV_ray_tracing</a> extension or <a href=\"#features-rayTracingPipeline\"><code>rayTracingPipeline</code> feature</a> are enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency-srcSubpass-00864",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency-srcSubpass-00865",
          "text": "<code>srcSubpass</code> and <code>dstSubpass</code> <strong class=\"purple\">must</strong> not both be equal to <code>VK_SUBPASS_EXTERNAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency-srcSubpass-06809",
          "text": "If <code>srcSubpass</code> is equal to <code>dstSubpass</code> and <code>srcStageMask</code> includes a <a href=\"#synchronization-framebuffer-regions\">framebuffer-space stage</a>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> only contain <a href=\"#synchronization-framebuffer-regions\">framebuffer-space stages</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency-srcAccessMask-00868",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency-dstAccessMask-00869",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency-srcSubpass-02243",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency-dependencyFlags-02520",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency-dependencyFlags-02521",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency-srcSubpass-00872",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency-srcStageMask-parameter",
          "text": "<code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency-dstStageMask-parameter",
          "text": "<code>dstStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency-srcAccessMask-parameter",
          "text": "<code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency-dstAccessMask-parameter",
          "text": "<code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency-dependencyFlags-parameter",
          "text": "<code>dependencyFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDependencyFlagBits\">VkDependencyFlagBits</a> values",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetAttachmentFeedbackLoopEnableEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetAttachmentFeedbackLoopEnableEXT-attachmentFeedbackLoopDynamicState-08862",
          "text": "The <a href=\"#features-attachmentFeedbackLoopDynamicState\"><code>attachmentFeedbackLoopDynamicState</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetAttachmentFeedbackLoopEnableEXT-aspectMask-08863",
          "text": "<code>aspectMask</code> <strong class=\"purple\">must</strong> only include <code>VK_IMAGE_ASPECT_NONE</code>, <code>VK_IMAGE_ASPECT_COLOR_BIT</code>, <code>VK_IMAGE_ASPECT_DEPTH_BIT</code>, and <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetAttachmentFeedbackLoopEnableEXT-attachmentFeedbackLoopLayout-08864",
          "text": "If the <a href=\"#features-attachmentFeedbackLoopLayout\"><code>attachmentFeedbackLoopLayout</code></a> feature is not enabled, <code>aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_NONE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetAttachmentFeedbackLoopEnableEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetAttachmentFeedbackLoopEnableEXT-aspectMask-parameter",
          "text": "<code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetAttachmentFeedbackLoopEnableEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetAttachmentFeedbackLoopEnableEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetAttachmentFeedbackLoopEnableEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateRenderPass2": {
      "core": [
        {
          "vuid": "VUID-vkCreateRenderPass2-device-10001",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> support at least one queue family with the <code>VK_QUEUE_GRAPHICS_BIT</code> capability",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRenderPass2-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRenderPass2-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkRenderPassCreateInfo2\">VkRenderPassCreateInfo2</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRenderPass2-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRenderPass2-pRenderPass-parameter",
          "text": "<code>pRenderPass</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkRenderPass\">VkRenderPass</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkRenderPassCreateInfo2": {
      "core": [
        {
          "vuid": "VUID-VkRenderPassCreateInfo2-None-03049",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo2-attachment-03050",
          "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 element of <code>pSubpasses</code> is bound to a range of a <code>VkDeviceMemory</code> object that overlaps with any other attachment in any subpass (including the same subpass), the <code>VkAttachmentDescription2</code> structures describing them <strong class=\"purple\">must</strong> include <code>VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT</code> in <code>flags</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo2-attachment-03051",
          "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>, then it <strong class=\"purple\">must</strong> be less than <code>attachmentCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo2-fragmentDensityMapAttachment-06472",
          "text": "If the pNext chain includes a <a href=\"#VkRenderPassFragmentDensityMapCreateInfoEXT\">VkRenderPassFragmentDensityMapCreateInfoEXT</a> structure and the <code>fragmentDensityMapAttachment</code> member is not <code>VK_ATTACHMENT_UNUSED</code>, then <code>attachment</code> <strong class=\"purple\">must</strong> be less than <code>attachmentCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo2-pSubpasses-06473",
          "text": "If the <code>pSubpasses</code> pNext chain includes a <a href=\"#VkSubpassDescriptionDepthStencilResolve\">VkSubpassDescriptionDepthStencilResolve</a> structure and the <code>pDepthStencilResolveAttachment</code> member is not <code>NULL</code> and does not have the value <code>VK_ATTACHMENT_UNUSED</code>, then <code>attachment</code> <strong class=\"purple\">must</strong> be less than <code>attachmentCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo2-pAttachments-02522",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo2-pAttachments-02523",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo2-pDependencies-03054",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo2-pDependencies-03055",
          "text": "For any element of <code>pDependencies</code>, if the <code>dstSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, all stage flags included in the <code>dstStageMask</code> member of that dependency <strong class=\"purple\">must</strong> be a pipeline stage supported by the <a href=\"#synchronization-pipeline-stages-types\">pipeline</a> identified by the <code>pipelineBindPoint</code> member of the destination subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo2-pCorrelatedViewMasks-03056",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo2-viewMask-03057",
          "text": "If the <a href=\"#VkSubpassDescription2\">VkSubpassDescription2</a>::<code>viewMask</code> member of all elements of <code>pSubpasses</code> is <code>0</code>, <code>correlatedViewMaskCount</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo2-viewMask-03058",
          "text": "The <a href=\"#VkSubpassDescription2\">VkSubpassDescription2</a>::<code>viewMask</code> member of all elements of <code>pSubpasses</code> <strong class=\"purple\">must</strong> either all be <code>0</code>, or all not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo2-viewMask-03059",
          "text": "If the <a href=\"#VkSubpassDescription2\">VkSubpassDescription2</a>::<code>viewMask</code> member of all elements of <code>pSubpasses</code> is <code>0</code>, the <code>dependencyFlags</code> member of any element of <code>pDependencies</code> <strong class=\"purple\">must</strong> not include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo2-pDependencies-03060",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo2-attachment-02525",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo2-srcSubpass-02526",
          "text": "The <code>srcSubpass</code> member of each element of <code>pDependencies</code> <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo2-dstSubpass-02527",
          "text": "The <code>dstSubpass</code> member of each element of <code>pDependencies</code> <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo2-pAttachments-04585",
          "text": "If any element of <code>pAttachments</code> is used as a fragment shading rate attachment in any subpass, it <strong class=\"purple\">must</strong> not be used as any other attachment in the render pass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo2-pAttachments-09387",
          "text": "If any element of <code>pAttachments</code> is used as a fragment shading rate attachment, the <code>loadOp</code> for that attachment <strong class=\"purple\">must</strong> not be <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo2-flags-04521",
          "text": "If <code>flags</code> includes <code>VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM</code>, an element of <code>pSubpasses</code> includes an instance of <a href=\"#VkFragmentShadingRateAttachmentInfoKHR\">VkFragmentShadingRateAttachmentInfoKHR</a> in its <code>pNext</code> chain, and the <code>pFragmentShadingRateAttachment</code> member of that structure is not equal to <code>NULL</code>, the <code>attachment</code> member of <code>pFragmentShadingRateAttachment</code> <strong class=\"purple\">must</strong> be <code>VK_ATTACHMENT_UNUSED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo2-pAttachments-04586",
          "text": "If any element of <code>pAttachments</code> is used as a fragment shading rate attachment in any subpass, it <strong class=\"purple\">must</strong> have an image format whose <a href=\"#potential-format-features\">potential format features</a> contain <code>VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo2-rasterizationSamples-04905",
          "text": "If the pipeline is being created with fragment shader state, and the <code><a href=\"#VK_QCOM_render_pass_shader_resolve\">VK_QCOM_render_pass_shader_resolve</a> extension</code> is enabled, and if subpass has any input attachments, and if the subpass description contains <code>VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM</code>, then the sample count of the input attachments <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo2-sampleShadingEnable-04906",
          "text": "If the pipeline is being created with fragment shader state, and the <code><a href=\"#VK_QCOM_render_pass_shader_resolve\">VK_QCOM_render_pass_shader_resolve</a></code> extension is enabled, and if the subpass description contains <code>VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM</code>, then <code>sampleShadingEnable</code> <strong class=\"purple\">must</strong> be false",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo2-flags-04907",
          "text": "If <code>flags</code> includes <code>VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM</code>, and if <code>pResolveAttachments</code> is not <code>NULL</code>, then each resolve attachment <strong class=\"purple\">must</strong> be <code>VK_ATTACHMENT_UNUSED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo2-flags-04908",
          "text": "If <code>flags</code> includes <code>VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM</code>, and if <code>pDepthStencilResolveAttachment</code> is not <code>NULL</code>, then the depth/stencil resolve attachment <strong class=\"purple\">must</strong> be <code>VK_ATTACHMENT_UNUSED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo2-flags-04909",
          "text": "If <code>flags</code> includes <code>VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM</code>, then the subpass <strong class=\"purple\">must</strong> be the last subpass in a subpass dependency chain",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo2-attachment-06244",
          "text": "If the <code>attachment</code> member of the <code>pDepthStencilAttachment</code> member of an element of <code>pSubpasses</code> is not <code>VK_ATTACHMENT_UNUSED</code>, the <code>layout</code> member of that same structure is either <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, and the <code>pNext</code> chain of that structure does not include a <a href=\"#VkAttachmentReferenceStencilLayout\">VkAttachmentReferenceStencilLayout</a> structure, then the element of <code>pAttachments</code> with an index equal to <code>attachment</code> <strong class=\"purple\">must</strong> not have a <code>format</code> that includes both depth and stencil components",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo2-attachment-06245",
          "text": "If the <code>attachment</code> member of the <code>pDepthStencilAttachment</code> member of an element of <code>pSubpasses</code> is not <code>VK_ATTACHMENT_UNUSED</code> and the <code>layout</code> member of that same structure is either <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>, then the element of <code>pAttachments</code> with an index equal to <code>attachment</code> <strong class=\"purple\">must</strong> have a <code>format</code> that includes only a stencil component",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo2-attachment-06246",
          "text": "If the <code>attachment</code> member of the <code>pDepthStencilAttachment</code> member of an element of <code>pSubpasses</code> is not <code>VK_ATTACHMENT_UNUSED</code> and the <code>layout</code> member of that same structure is either <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, then the element of <code>pAttachments</code> with an index equal to <code>attachment</code> <strong class=\"purple\">must</strong> not have a <code>format</code> that includes only a stencil component",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo2-pResolveAttachments-09331",
          "text": "If any element of <code>pResolveAttachments</code> of any element of <code>pSubpasses</code> references an attachment description with a format of <code>VK_FORMAT_UNDEFINED</code>, <a href=\"#VkRenderPassFragmentDensityMapCreateInfoEXT\">VkRenderPassFragmentDensityMapCreateInfoEXT</a>::<code>fragmentDensityMapAttachment-&gt;attachment</code> <strong class=\"purple\">must</strong> be <code>VK_ATTACHMENT_UNUSED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo2-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo2-pNext-pNext",
          "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=\"#VkRenderPassCreationControlEXT\">VkRenderPassCreationControlEXT</a>, <a href=\"#VkRenderPassCreationFeedbackCreateInfoEXT\">VkRenderPassCreationFeedbackCreateInfoEXT</a>, or <a href=\"#VkRenderPassFragmentDensityMapCreateInfoEXT\">VkRenderPassFragmentDensityMapCreateInfoEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo2-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo2-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkRenderPassCreateFlagBits\">VkRenderPassCreateFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo2-pAttachments-parameter",
          "text": "If <code>attachmentCount</code> is not <code>0</code>, <code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <a href=\"#VkAttachmentDescription2\">VkAttachmentDescription2</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo2-pSubpasses-parameter",
          "text": "<code>pSubpasses</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>subpassCount</code> valid <a href=\"#VkSubpassDescription2\">VkSubpassDescription2</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo2-pDependencies-parameter",
          "text": "If <code>dependencyCount</code> is not <code>0</code>, <code>pDependencies</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dependencyCount</code> valid <a href=\"#VkSubpassDependency2\">VkSubpassDependency2</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo2-pCorrelatedViewMasks-parameter",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreateInfo2-subpassCount-arraylength",
          "text": "<code>subpassCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkAttachmentDescription2": {
      "core": [
        {
          "vuid": "VUID-VkAttachmentDescription2-format-06699",
          "text": "If <code>format</code> includes a color or depth component and <code>loadOp</code> is <code>VK_ATTACHMENT_LOAD_OP_LOAD</code>, then <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-finalLayout-00843",
          "text": "<code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-format-03280",
          "text": "If <code>format</code> is a color format, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-format-03281",
          "text": "If <code>format</code> is a depth/stencil format, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-format-03282",
          "text": "If <code>format</code> is a color format, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-format-03283",
          "text": "If <code>format</code> is a depth/stencil format, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-format-06487",
          "text": "If <code>format</code> is a color format, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-format-06488",
          "text": "If <code>format</code> is a color format, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-separateDepthStencilLayouts-03284",
          "text": "If the <a href=\"#features-separateDepthStencilLayouts\"><code>separateDepthStencilLayouts</code></a> feature is not enabled, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>,",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-separateDepthStencilLayouts-03285",
          "text": "If the <a href=\"#features-separateDepthStencilLayouts\"><code>separateDepthStencilLayouts</code></a> feature is not enabled, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>,",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-format-03286",
          "text": "If <code>format</code> is a color format, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-format-03287",
          "text": "If <code>format</code> is a color format, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-format-06906",
          "text": "If <code>format</code> is a depth/stencil format which includes both depth and stencil components, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-format-06907",
          "text": "If <code>format</code> is a depth/stencil format which includes both depth and stencil components, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-format-03290",
          "text": "If <code>format</code> is a depth/stencil format which includes only the depth component, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-format-03291",
          "text": "If <code>format</code> is a depth/stencil format which includes only the depth component, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-synchronization2-06908",
          "text": "If the <a href=\"#features-synchronization2\"><code>synchronization2</code></a> feature is not enabled, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR</code> or <code>VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-synchronization2-06909",
          "text": "If the <a href=\"#features-synchronization2\"><code>synchronization2</code></a> feature is not enabled, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR</code> or <code>VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-attachmentFeedbackLoopLayout-07309",
          "text": "If the <a href=\"#features-attachmentFeedbackLoopLayout\"><code>attachmentFeedbackLoopLayout</code></a> feature is not enabled, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-attachmentFeedbackLoopLayout-07310",
          "text": "If the <a href=\"#features-attachmentFeedbackLoopLayout\"><code>attachmentFeedbackLoopLayout</code></a> feature is not enabled, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-samples-08745",
          "text": "<code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value that is set in <code>imageCreateSampleCounts</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>) for the given <code>format</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-dynamicRenderingLocalRead-09544",
          "text": "If the <a href=\"#features-dynamicRenderingLocalRead\"><code>dynamicRenderingLocalRead</code></a> feature is not enabled, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-dynamicRenderingLocalRead-09545",
          "text": "If the <a href=\"#features-dynamicRenderingLocalRead\"><code>dynamicRenderingLocalRead</code></a> feature is not enabled, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-pNext-06704",
          "text": "If the <code>pNext</code> chain does not include a <a href=\"#VkAttachmentDescriptionStencilLayout\">VkAttachmentDescriptionStencilLayout</a> structure, <code>format</code> includes a stencil component, and <code>stencilLoadOp</code> is <code>VK_ATTACHMENT_LOAD_OP_LOAD</code>, then <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-pNext-06705",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkAttachmentDescriptionStencilLayout\">VkAttachmentDescriptionStencilLayout</a> structure, <code>format</code> includes a stencil component, and <code>stencilLoadOp</code> is <code>VK_ATTACHMENT_LOAD_OP_LOAD</code>, then <a href=\"#VkAttachmentDescriptionStencilLayout\">VkAttachmentDescriptionStencilLayout</a>::<code>stencilInitialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-format-06249",
          "text": "If <code>format</code> is a depth/stencil format which includes both depth and stencil components, and <code>initialLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkAttachmentDescriptionStencilLayout\">VkAttachmentDescriptionStencilLayout</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-format-06250",
          "text": "If <code>format</code> is a depth/stencil format which includes both depth and stencil components, and <code>finalLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkAttachmentDescriptionStencilLayout\">VkAttachmentDescriptionStencilLayout</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-format-06247",
          "text": "If the <code>pNext</code> chain does not include a <a href=\"#VkAttachmentDescriptionStencilLayout\">VkAttachmentDescriptionStencilLayout</a> structure and <code>format</code> only includes a stencil component, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-format-06248",
          "text": "If the <code>pNext</code> chain does not include a <a href=\"#VkAttachmentDescriptionStencilLayout\">VkAttachmentDescriptionStencilLayout</a> structure and <code>format</code> only includes a stencil component, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-format-09332",
          "text": "If <a href=\"#features-externalFormatResolve\"><code>externalFormatResolve</code></a> is not enabled, <code>format</code> <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-format-09334",
          "text": "If <code>format</code> is <code>VK_FORMAT_UNDEFINED</code>, there <strong class=\"purple\">must</strong> be a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a> structure in the <code>pNext</code> chain with a <code>externalFormat</code> that is not equal to <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-pNext-pNext",
          "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=\"#VkAttachmentDescriptionStencilLayout\">VkAttachmentDescriptionStencilLayout</a> or <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAttachmentDescriptionFlagBits\">VkAttachmentDescriptionFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-format-parameter",
          "text": "<code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-samples-parameter",
          "text": "<code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-loadOp-parameter",
          "text": "<code>loadOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentLoadOp\">VkAttachmentLoadOp</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-storeOp-parameter",
          "text": "<code>storeOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentStoreOp\">VkAttachmentStoreOp</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-stencilLoadOp-parameter",
          "text": "<code>stencilLoadOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentLoadOp\">VkAttachmentLoadOp</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-stencilStoreOp-parameter",
          "text": "<code>stencilStoreOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentStoreOp\">VkAttachmentStoreOp</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-initialLayout-parameter",
          "text": "<code>initialLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescription2-finalLayout-parameter",
          "text": "<code>finalLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkAttachmentDescriptionStencilLayout": {
      "core": [
        {
          "vuid": "VUID-VkAttachmentDescriptionStencilLayout-stencilInitialLayout-03308",
          "text": "<code>stencilInitialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescriptionStencilLayout-stencilFinalLayout-03309",
          "text": "<code>stencilFinalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescriptionStencilLayout-stencilFinalLayout-03310",
          "text": "<code>stencilFinalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescriptionStencilLayout-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescriptionStencilLayout-stencilInitialLayout-parameter",
          "text": "<code>stencilInitialLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentDescriptionStencilLayout-stencilFinalLayout-parameter",
          "text": "<code>stencilFinalLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkSubpassDescription2": {
      "core": [
        {
          "vuid": "VUID-VkSubpassDescription2-attachment-06912",
          "text": "If the <code>attachment</code> member of an element of <code>pInputAttachments</code> is not <code>VK_ATTACHMENT_UNUSED</code>, its <code>layout</code> member <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-attachment-06913",
          "text": "If the <code>attachment</code> member of an element of <code>pColorAttachments</code> is not <code>VK_ATTACHMENT_UNUSED</code>, its <code>layout</code> member <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-attachment-06914",
          "text": "If the <code>attachment</code> member of an element of <code>pResolveAttachments</code> is not <code>VK_ATTACHMENT_UNUSED</code>, its <code>layout</code> member <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-attachment-06915",
          "text": "If the <code>attachment</code> member of <code>pDepthStencilAttachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, ts <code>layout</code> member <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-attachment-06916",
          "text": "If the <code>attachment</code> member of an element of <code>pColorAttachments</code> is not <code>VK_ATTACHMENT_UNUSED</code>, its <code>layout</code> member <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-attachment-06917",
          "text": "If the <code>attachment</code> member of an element of <code>pResolveAttachments</code> is not <code>VK_ATTACHMENT_UNUSED</code>, its <code>layout</code> member <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-attachment-06918",
          "text": "If the <code>attachment</code> member of an element of <code>pInputAttachments</code> is not <code>VK_ATTACHMENT_UNUSED</code>, its <code>layout</code> member <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-attachment-06919",
          "text": "If the <code>attachment</code> member of an element of <code>pColorAttachments</code> is not <code>VK_ATTACHMENT_UNUSED</code>, its <code>layout</code> member <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-attachment-06920",
          "text": "If the <code>attachment</code> member of an element of <code>pResolveAttachments</code> is not <code>VK_ATTACHMENT_UNUSED</code>, its <code>layout</code> member <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-attachment-06921",
          "text": "If the <code>attachment</code> member of an element of <code>pInputAttachments</code> is not <code>VK_ATTACHMENT_UNUSED</code>, its <code>layout</code> member <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-attachment-06922",
          "text": "If the <code>attachment</code> member of an element of <code>pColorAttachments</code> is not <code>VK_ATTACHMENT_UNUSED</code>, its <code>layout</code> member <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-attachment-06923",
          "text": "If the <code>attachment</code> member of an element of <code>pResolveAttachments</code> is not <code>VK_ATTACHMENT_UNUSED</code>, its <code>layout</code> member <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-attachment-06251",
          "text": "If the <code>attachment</code> member of <code>pDepthStencilAttachment</code> is not <code>VK_ATTACHMENT_UNUSED</code> and its <code>pNext</code> chain includes a <a href=\"#VkAttachmentReferenceStencilLayout\">VkAttachmentReferenceStencilLayout</a> structure, the <code>layout</code> member of <code>pDepthStencilAttachment</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-pipelineBindPoint-04953",
          "text": "<code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> or <code>VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-colorAttachmentCount-03063",
          "text": "<code>colorAttachmentCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxColorAttachments</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-loadOp-03064",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-pResolveAttachments-03067",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-externalFormatResolve-09335",
          "text": "If <a href=\"#features-externalFormatResolve\"><code>externalFormatResolve</code></a> is not enabled and <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-nullColorAttachmentWithExternalFormatResolve-09336",
          "text": "If the <a href=\"#limits-nullColorAttachmentWithExternalFormatResolve\"><code>nullColorAttachmentWithExternalFormatResolve</code></a> property is <code>VK_FALSE</code> and <code>pResolveAttachments</code> is not <code>NULL</code>, for each resolve attachment that has a format of <code>VK_FORMAT_UNDEFINED</code>, the corresponding color attachment <strong class=\"purple\">must</strong> not have the value <code>VK_ATTACHMENT_UNUSED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-nullColorAttachmentWithExternalFormatResolve-09337",
          "text": "If the <a href=\"#limits-nullColorAttachmentWithExternalFormatResolve\"><code>nullColorAttachmentWithExternalFormatResolve</code></a> property is <code>VK_TRUE</code> and <code>pResolveAttachments</code> is not <code>NULL</code>, for each resolve attachment that has a format of <code>VK_FORMAT_UNDEFINED</code>, the corresponding color attachment <strong class=\"purple\">must</strong> have the value <code>VK_ATTACHMENT_UNUSED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-externalFormatResolve-09338",
          "text": "If <a href=\"#features-externalFormatResolve\"><code>externalFormatResolve</code></a> is not enabled and <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-externalFormatResolve-09339",
          "text": "If <a href=\"#features-externalFormatResolve\"><code>externalFormatResolve</code></a> is not enabled, each element of <code>pResolveAttachments</code> <strong class=\"purple\">must</strong> have the same <a href=\"#VkFormat\">VkFormat</a> as its corresponding color attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-multisampledRenderToSingleSampled-06869",
          "text": "If the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, all attachments in <code>pColorAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have the same sample count",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-pInputAttachments-02897",
          "text": "All attachments in <code>pInputAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> and any of the following is true:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <a href=\"#features-externalFormatResolve\"><code>externalFormatResolve</code></a>\nfeature is not enabled</p>\n</li>\n<li>\n<p>the <a href=\"#limits-nullColorAttachmentWithExternalFormatResolve\"><code>nullColorAttachmentWithExternalFormatResolve</code></a> property is\n<code>VK_FALSE</code></p>\n</li>\n<li>\n<p>does not have a non-zero value of\n<a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code></p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p><strong class=\"purple\">must</strong> have image formats whose <a href=\"#potential-format-features\">potential format\nfeatures</a> contain at least <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code> or\n<code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code></p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-pColorAttachments-02898",
          "text": "All attachments in <code>pColorAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have image formats whose <a href=\"#potential-format-features\">potential format features</a> contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-pResolveAttachments-09343",
          "text": "All attachments in <code>pResolveAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> and do not have an image format of <code>VK_FORMAT_UNDEFINED</code> <strong class=\"purple\">must</strong> have image formats whose <a href=\"#potential-format-features\">potential format features</a> contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-pDepthStencilAttachment-02900",
          "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 an image format whose <a href=\"#potential-format-features\">potential format features</a> contain <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-linearColorAttachment-06499",
          "text": "If the <a href=\"#features-linearColorAttachment\"><code>linearColorAttachment</code></a> feature is enabled and the image is created with <code>VK_IMAGE_TILING_LINEAR</code>, all attachments in <code>pInputAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have image formats whose <a href=\"#potential-format-features\">potential format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-linearColorAttachment-06500",
          "text": "If the <a href=\"#features-linearColorAttachment\"><code>linearColorAttachment</code></a> feature is enabled and the image is created with <code>VK_IMAGE_TILING_LINEAR</code>, all attachments in <code>pColorAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have image formats whose <a href=\"#potential-format-features\">potential format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-linearColorAttachment-06501",
          "text": "If the <a href=\"#features-linearColorAttachment\"><code>linearColorAttachment</code></a> feature is enabled and the image is created with <code>VK_IMAGE_TILING_LINEAR</code>, all attachments in <code>pResolveAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have image formats whose <a href=\"#potential-format-features\">potential format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-None-09456",
          "text": "If either of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>The <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>The <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>all attachments in <code>pColorAttachments</code> that are not\n<code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have a sample count that is smaller than or\nequal to the sample count of <code>pDepthStencilAttachment</code> if it is not\n<code>VK_ATTACHMENT_UNUSED</code></p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-pNext-06870",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then all attachments in <code>pColorAttachments</code> and <code>pDepthStencilAttachment</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have a sample count that is either <code>VK_SAMPLE_COUNT_1_BIT</code> or equal to <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a>::<code>rasterizationSamples</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-pNext-06871",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, and <code>pDepthStencilAttachment</code> is not <code>NULL</code>, does not have the value <code>VK_ATTACHMENT_UNUSED</code>, and has a sample count of <code>VK_SAMPLE_COUNT_1_BIT</code>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> also include a <a href=\"#VkSubpassDescriptionDepthStencilResolve\">VkSubpassDescriptionDepthStencilResolve</a> structure with <code>pDepthStencilResolveAttachment</code> that is either <code>NULL</code> or has the value <code>VK_ATTACHMENT_UNUSED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-multisampledRenderToSingleSampled-06872",
          "text": "All attachments in <code>pDepthStencilAttachment</code> or <code>pColorAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have the same sample count , if none of the following are enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>The <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>The <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>The <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature,</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-attachment-03073",
          "text": "Each element of <code>pPreserveAttachments</code> <strong class=\"purple\">must</strong> not be <code>VK_ATTACHMENT_UNUSED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-pPreserveAttachments-03074",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-layout-02528",
          "text": "If any attachment is used by more than one <a href=\"#VkAttachmentReference2\">VkAttachmentReference2</a> member, then each use <strong class=\"purple\">must</strong> use the same <code>layout</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-flags-03076",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-attachment-02799",
          "text": "If the <code>attachment</code> member of any element of <code>pInputAttachments</code> is not <code>VK_ATTACHMENT_UNUSED</code>, then the <code>aspectMask</code> member <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-attachment-02800",
          "text": "If the <code>attachment</code> member of any element of <code>pInputAttachments</code> is not <code>VK_ATTACHMENT_UNUSED</code>, then the <code>aspectMask</code> member <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-attachment-02801",
          "text": "If the <code>attachment</code> member of any element of <code>pInputAttachments</code> is not <code>VK_ATTACHMENT_UNUSED</code>, then the <code>aspectMask</code> member <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_METADATA_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-attachment-04563",
          "text": "If the <code>attachment</code> member of any element of <code>pInputAttachments</code> is not <code>VK_ATTACHMENT_UNUSED</code>, then the <code>aspectMask</code> member <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_MEMORY_PLANE<em>_i_</em>BIT_EXT</code> for any index <em>i</em>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-pDepthStencilAttachment-04440",
          "text": "An attachment <strong class=\"purple\">must</strong> not be used in both <code>pDepthStencilAttachment</code> and <code>pColorAttachments</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-multiview-06558",
          "text": "If the <a href=\"#features-multiview\"><code>multiview</code></a> feature is not enabled, <code>viewMask</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-viewMask-06706",
          "text": "The index of the most significant bit in <code>viewMask</code> <strong class=\"purple\">must</strong> be less than <a href=\"#limits-maxMultiviewViewCount\"><code>maxMultiviewViewCount</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-externalFormatResolve-09344",
          "text": "If <a href=\"#features-externalFormatResolve\"><code>externalFormatResolve</code></a> is enabled, <code>pResolveAttachments</code> is not <code>NULL</code>, and <code>colorAttachmentCount</code> is not <code>1</code>, any element of <code>pResolveAttachments</code> that is not <code>VK_ATTACHMENT_UNUSED</code>, <strong class=\"purple\">must</strong> not have a format of <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-externalFormatResolve-09345",
          "text": "If <a href=\"#features-externalFormatResolve\"><code>externalFormatResolve</code></a> is enabled, <code>pResolveAttachments</code> is not <code>NULL</code>, any element of <code>pResolveAttachments</code> is not <code>VK_ATTACHMENT_UNUSED</code> and has a format of <code>VK_FORMAT_UNDEFINED</code>, and the corresponding element of <code>pColorAttachments</code> is not <code>VK_ATTACHMENT_UNUSED</code>, the color attachment <strong class=\"purple\">must</strong> have a <code>samples</code> value of <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-externalFormatResolve-09346",
          "text": "If <a href=\"#features-externalFormatResolve\"><code>externalFormatResolve</code></a> is enabled, <code>pResolveAttachments</code> is not <code>NULL</code>, and any element of <code>pResolveAttachments</code> is not <code>VK_ATTACHMENT_UNUSED</code> and has a format of <code>VK_FORMAT_UNDEFINED</code>, <code>viewMask</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-externalFormatResolve-09347",
          "text": "If <a href=\"#features-externalFormatResolve\"><code>externalFormatResolve</code></a> is enabled, <code>pResolveAttachments</code> is not <code>NULL</code>, and any element of <code>pResolveAttachments</code> is not <code>VK_ATTACHMENT_UNUSED</code> and has a format of <code>VK_FORMAT_UNDEFINED</code>, <a href=\"#VkFragmentShadingRateAttachmentInfoKHR\">VkFragmentShadingRateAttachmentInfoKHR</a>::<code>pFragmentShadingRateAttachment</code> <strong class=\"purple\">must</strong> either be <code>NULL</code> or a <a href=\"#VkAttachmentReference2\">VkAttachmentReference2</a> structure with an <code>attachment</code> value of <code>VK_ATTACHMENT_UNUSED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-externalFormatResolve-09348",
          "text": "If <a href=\"#features-externalFormatResolve\"><code>externalFormatResolve</code></a> is enabled, <code>pResolveAttachments</code> is not <code>NULL</code>, and any element of <code>pResolveAttachments</code> is not <code>VK_ATTACHMENT_UNUSED</code> and has a format of <code>VK_FORMAT_UNDEFINED</code>, elements of <code>pInputAttachments</code> referencing either a color attachment or resolve attachment used in this subpass <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_PLANE<em>_i_</em>BIT</code> for any index <em>i</em> in its <code>aspectMask</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-pNext-pNext",
          "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=\"#VkFragmentShadingRateAttachmentInfoKHR\">VkFragmentShadingRateAttachmentInfoKHR</a>, <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a>, <a href=\"#VkRenderPassCreationControlEXT\">VkRenderPassCreationControlEXT</a>, <a href=\"#VkRenderPassSubpassFeedbackCreateInfoEXT\">VkRenderPassSubpassFeedbackCreateInfoEXT</a>, or <a href=\"#VkSubpassDescriptionDepthStencilResolve\">VkSubpassDescriptionDepthStencilResolve</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSubpassDescriptionFlagBits\">VkSubpassDescriptionFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-pipelineBindPoint-parameter",
          "text": "<code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-pInputAttachments-parameter",
          "text": "If <code>inputAttachmentCount</code> is not <code>0</code>, <code>pInputAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>inputAttachmentCount</code> valid <a href=\"#VkAttachmentReference2\">VkAttachmentReference2</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-pColorAttachments-parameter",
          "text": "If <code>colorAttachmentCount</code> is not <code>0</code>, <code>pColorAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>colorAttachmentCount</code> valid <a href=\"#VkAttachmentReference2\">VkAttachmentReference2</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-pResolveAttachments-parameter",
          "text": "If <code>colorAttachmentCount</code> is not <code>0</code>, and <code>pResolveAttachments</code> is not <code>NULL</code>, <code>pResolveAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>colorAttachmentCount</code> valid <a href=\"#VkAttachmentReference2\">VkAttachmentReference2</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-pDepthStencilAttachment-parameter",
          "text": "If <code>pDepthStencilAttachment</code> is not <code>NULL</code>, <code>pDepthStencilAttachment</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAttachmentReference2\">VkAttachmentReference2</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescription2-pPreserveAttachments-parameter",
          "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",
          "page": "vkspec"
        }
      ]
    },
    "VkSubpassDescriptionDepthStencilResolve": {
      "core": [
        {
          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03177",
          "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 be <code>NULL</code> or have the value <code>VK_ATTACHMENT_UNUSED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03179",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03180",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-02651",
          "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 an image format whose <a href=\"#potential-format-features\">potential format features</a> contain <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03181",
          "text": "If <code>pDepthStencilResolveAttachment</code> is not <code>NULL</code> and does not have the value <code>VK_ATTACHMENT_UNUSED</code> and <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 <a href=\"#formats-numericformat\">numeric format</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03182",
          "text": "If <code>pDepthStencilResolveAttachment</code> is not <code>NULL</code> and does not have the value <code>VK_ATTACHMENT_UNUSED</code>, and <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 <a href=\"#formats-numericformat\">numeric format</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03178",
          "text": "If <code>pDepthStencilResolveAttachment</code> is not <code>NULL</code> and does not have the value <code>VK_ATTACHMENT_UNUSED</code>, <code>depthResolveMode</code> and <code>stencilResolveMode</code> <strong class=\"purple\">must</strong> not both be <code>VK_RESOLVE_MODE_NONE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-depthResolveMode-03183",
          "text": "If <code>pDepthStencilResolveAttachment</code> is not <code>NULL</code> and does not have the value <code>VK_ATTACHMENT_UNUSED</code> and the <a href=\"#VkFormat\">VkFormat</a> of <code>pDepthStencilResolveAttachment</code> has a depth component, then the value of <code>depthResolveMode</code> <strong class=\"purple\">must</strong> be one of the bits set in <a href=\"#VkPhysicalDeviceDepthStencilResolveProperties\">VkPhysicalDeviceDepthStencilResolveProperties</a>::<code>supportedDepthResolveModes</code> or <code>VK_RESOLVE_MODE_NONE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-stencilResolveMode-03184",
          "text": "If <code>pDepthStencilResolveAttachment</code> is not <code>NULL</code> and does not have the value <code>VK_ATTACHMENT_UNUSED</code> and the <a href=\"#VkFormat\">VkFormat</a> of <code>pDepthStencilResolveAttachment</code> has a stencil component, then the value of <code>stencilResolveMode</code> <strong class=\"purple\">must</strong> be one of the bits set in <a href=\"#VkPhysicalDeviceDepthStencilResolveProperties\">VkPhysicalDeviceDepthStencilResolveProperties</a>::<code>supportedStencilResolveModes</code> or <code>VK_RESOLVE_MODE_NONE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03185",
          "text": "If <code>pDepthStencilResolveAttachment</code> is not <code>NULL</code> and does not have the value <code>VK_ATTACHMENT_UNUSED</code>, the <a href=\"#VkFormat\">VkFormat</a> of <code>pDepthStencilResolveAttachment</code> has both depth and stencil components, <a href=\"#VkPhysicalDeviceDepthStencilResolveProperties\">VkPhysicalDeviceDepthStencilResolveProperties</a>::<code>independentResolve</code> is <code>VK_FALSE</code>, and <a href=\"#VkPhysicalDeviceDepthStencilResolveProperties\">VkPhysicalDeviceDepthStencilResolveProperties</a>::<code>independentResolveNone</code> is <code>VK_FALSE</code>, then the values of <code>depthResolveMode</code> and <code>stencilResolveMode</code> <strong class=\"purple\">must</strong> be identical",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03186",
          "text": "If <code>pDepthStencilResolveAttachment</code> is not <code>NULL</code> and does not have the value <code>VK_ATTACHMENT_UNUSED</code>, the <a href=\"#VkFormat\">VkFormat</a> of <code>pDepthStencilResolveAttachment</code> has both depth and stencil components, <a href=\"#VkPhysicalDeviceDepthStencilResolveProperties\">VkPhysicalDeviceDepthStencilResolveProperties</a>::<code>independentResolve</code> is <code>VK_FALSE</code> and <a href=\"#VkPhysicalDeviceDepthStencilResolveProperties\">VkPhysicalDeviceDepthStencilResolveProperties</a>::<code>independentResolveNone</code> is <code>VK_TRUE</code>, then the values of <code>depthResolveMode</code> and <code>stencilResolveMode</code> <strong class=\"purple\">must</strong> be identical or one of them <strong class=\"purple\">must</strong> be <code>VK_RESOLVE_MODE_NONE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pNext-06873",
          "text": "If the <code>pNext</code> chain of <a href=\"#VkSubpassDescription2\">VkSubpassDescription2</a> includes a <code>VkMultisampledRenderToSingleSampledInfoEXT</code> structure, the <code>multisampledRenderToSingleSampledEnable</code> field is <code>VK_TRUE</code>, and <code>pDepthStencilAttachment</code> is not <code>NULL</code> and does not have the value <code>VK_ATTACHMENT_UNUSED</code>, <code>depthResolveMode</code> and <code>stencilResolveMode</code> <strong class=\"purple\">must</strong> not both be <code>VK_RESOLVE_MODE_NONE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pNext-06874",
          "text": "If the <code>pNext</code> chain of <a href=\"#VkSubpassDescription2\">VkSubpassDescription2</a> includes a <code>VkMultisampledRenderToSingleSampledInfoEXT</code> structure whose <code>multisampledRenderToSingleSampledEnable</code> field is <code>VK_TRUE</code>, and <code>pDepthStencilAttachment</code> is not <code>NULL</code>, does not have the value <code>VK_ATTACHMENT_UNUSED</code>, and has a <a href=\"#VkFormat\">VkFormat</a> that has a depth component, then the value of <code>depthResolveMode</code> <strong class=\"purple\">must</strong> be one of the bits set in <a href=\"#VkPhysicalDeviceDepthStencilResolveProperties\">VkPhysicalDeviceDepthStencilResolveProperties</a>::<code>supportedDepthResolveModes</code> or <code>VK_RESOLVE_MODE_NONE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pNext-06875",
          "text": "If the <code>pNext</code> chain of <a href=\"#VkSubpassDescription2\">VkSubpassDescription2</a> includes a <code>VkMultisampledRenderToSingleSampledInfoEXT</code> structure whose <code>multisampledRenderToSingleSampledEnable</code> field is <code>VK_TRUE</code>, and <code>pDepthStencilAttachment</code> is not <code>NULL</code>, does not have the value <code>VK_ATTACHMENT_UNUSED</code>, and has a <a href=\"#VkFormat\">VkFormat</a> with a stencil component, then the value of <code>stencilResolveMode</code> <strong class=\"purple\">must</strong> be one of the bits set in <a href=\"#VkPhysicalDeviceDepthStencilResolveProperties\">VkPhysicalDeviceDepthStencilResolveProperties</a>::<code>supportedStencilResolveModes</code> or <code>VK_RESOLVE_MODE_NONE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pNext-06876",
          "text": "If the <code>pNext</code> chain of <a href=\"#VkSubpassDescription2\">VkSubpassDescription2</a> includes a <code>VkMultisampledRenderToSingleSampledInfoEXT</code> structure whose <code>multisampledRenderToSingleSampledEnable</code> field is <code>VK_TRUE</code>, <code>pDepthStencilAttachment</code> is not <code>NULL</code>, does not have the value <code>VK_ATTACHMENT_UNUSED</code>, and has a <a href=\"#VkFormat\">VkFormat</a> with both depth and stencil components, and both <a href=\"#VkPhysicalDeviceDepthStencilResolveProperties\">VkPhysicalDeviceDepthStencilResolveProperties</a>::<code>independentResolve</code> and <a href=\"#VkPhysicalDeviceDepthStencilResolveProperties\">VkPhysicalDeviceDepthStencilResolveProperties</a>::<code>independentResolveNone</code> are <code>VK_FALSE</code>, then the values of <code>depthResolveMode</code> and <code>stencilResolveMode</code> <strong class=\"purple\">must</strong> be identical",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pNext-06877",
          "text": "If the <code>pNext</code> chain of <a href=\"#VkSubpassDescription2\">VkSubpassDescription2</a> includes a <code>VkMultisampledRenderToSingleSampledInfoEXT</code> structure whose <code>multisampledRenderToSingleSampledEnable</code> field is <code>VK_TRUE</code>, <code>pDepthStencilAttachment</code> is not <code>NULL</code>, does not have the value <code>VK_ATTACHMENT_UNUSED</code>, and has a <a href=\"#VkFormat\">VkFormat</a> with both depth and stencil components, <a href=\"#VkPhysicalDeviceDepthStencilResolveProperties\">VkPhysicalDeviceDepthStencilResolveProperties</a>::<code>independentResolve</code> is <code>VK_FALSE</code>, and <a href=\"#VkPhysicalDeviceDepthStencilResolveProperties\">VkPhysicalDeviceDepthStencilResolveProperties</a>::<code>independentResolveNone</code> is <code>VK_TRUE</code>, then the values of <code>depthResolveMode</code> and <code>stencilResolveMode</code> <strong class=\"purple\">must</strong> be identical or one of them <strong class=\"purple\">must</strong> be <code>VK_RESOLVE_MODE_NONE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-parameter",
          "text": "If <code>pDepthStencilResolveAttachment</code> is not <code>NULL</code>, <code>pDepthStencilResolveAttachment</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAttachmentReference2\">VkAttachmentReference2</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkFragmentShadingRateAttachmentInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04524",
          "text": "If <code>pFragmentShadingRateAttachment</code> is not <code>NULL</code> and its <code>attachment</code> member is not <code>VK_ATTACHMENT_UNUSED</code>, its <code>layout</code> member <strong class=\"purple\">must</strong> be equal to <code>VK_IMAGE_LAYOUT_GENERAL</code> or <code>VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04525",
          "text": "If <code>pFragmentShadingRateAttachment</code> is not <code>NULL</code> and its <code>attachment</code> member is not <code>VK_ATTACHMENT_UNUSED</code>, <code>shadingRateAttachmentTexelSize.width</code> <strong class=\"purple\">must</strong> be a power of two value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04526",
          "text": "If <code>pFragmentShadingRateAttachment</code> is not <code>NULL</code> and its <code>attachment</code> member is not <code>VK_ATTACHMENT_UNUSED</code>, <code>shadingRateAttachmentTexelSize.width</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxFragmentShadingRateAttachmentTexelSize\"><code>maxFragmentShadingRateAttachmentTexelSize.width</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04527",
          "text": "If <code>pFragmentShadingRateAttachment</code> is not <code>NULL</code> and its <code>attachment</code> member is not <code>VK_ATTACHMENT_UNUSED</code>, <code>shadingRateAttachmentTexelSize.width</code> <strong class=\"purple\">must</strong> be greater than or equal to <a href=\"#limits-minFragmentShadingRateAttachmentTexelSize\"><code>minFragmentShadingRateAttachmentTexelSize.width</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04528",
          "text": "If <code>pFragmentShadingRateAttachment</code> is not <code>NULL</code> and its <code>attachment</code> member is not <code>VK_ATTACHMENT_UNUSED</code>, <code>shadingRateAttachmentTexelSize.height</code> <strong class=\"purple\">must</strong> be a power of two value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04529",
          "text": "If <code>pFragmentShadingRateAttachment</code> is not <code>NULL</code> and its <code>attachment</code> member is not <code>VK_ATTACHMENT_UNUSED</code>, <code>shadingRateAttachmentTexelSize.height</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxFragmentShadingRateAttachmentTexelSize\"><code>maxFragmentShadingRateAttachmentTexelSize.height</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04530",
          "text": "If <code>pFragmentShadingRateAttachment</code> is not <code>NULL</code> and its <code>attachment</code> member is not <code>VK_ATTACHMENT_UNUSED</code>, <code>shadingRateAttachmentTexelSize.height</code> <strong class=\"purple\">must</strong> be greater than or equal to <a href=\"#limits-minFragmentShadingRateAttachmentTexelSize\"><code>minFragmentShadingRateAttachmentTexelSize.height</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04531",
          "text": "If <code>pFragmentShadingRateAttachment</code> is not <code>NULL</code> and its <code>attachment</code> member is not <code>VK_ATTACHMENT_UNUSED</code>, the quotient of <code>shadingRateAttachmentTexelSize.width</code> and <code>shadingRateAttachmentTexelSize.height</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxFragmentShadingRateAttachmentTexelSizeAspectRatio\"><code>maxFragmentShadingRateAttachmentTexelSizeAspectRatio</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04532",
          "text": "If <code>pFragmentShadingRateAttachment</code> is not <code>NULL</code> and its <code>attachment</code> member is not <code>VK_ATTACHMENT_UNUSED</code>, the quotient of <code>shadingRateAttachmentTexelSize.height</code> and <code>shadingRateAttachmentTexelSize.width</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxFragmentShadingRateAttachmentTexelSizeAspectRatio\"><code>maxFragmentShadingRateAttachmentTexelSizeAspectRatio</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-parameter",
          "text": "If <code>pFragmentShadingRateAttachment</code> is not <code>NULL</code>, <code>pFragmentShadingRateAttachment</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAttachmentReference2\">VkAttachmentReference2</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkMultisampledRenderToSingleSampledInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkMultisampledRenderToSingleSampledInfoEXT-rasterizationSamples-06878",
          "text": "The value of <code>rasterizationSamples</code> <strong class=\"purple\">must</strong> not be <code>VK_SAMPLE_COUNT_1_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMultisampledRenderToSingleSampledInfoEXT-pNext-06880",
          "text": "If added to the <code>pNext</code> chain of <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>, each <code>imageView</code> member of any element of <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code>, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment</code>, or <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have a format that supports the sample count specified in <code>rasterizationSamples</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMultisampledRenderToSingleSampledInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMultisampledRenderToSingleSampledInfoEXT-rasterizationSamples-parameter",
          "text": "<code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkAttachmentReference2": {
      "core": [
        {
          "vuid": "VUID-VkAttachmentReference2-layout-03077",
          "text": "If <code>attachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>layout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code>, <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>, or <code>VK_IMAGE_LAYOUT_PRESENT_SRC_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentReference2-separateDepthStencilLayouts-03313",
          "text": "If the <a href=\"#features-separateDepthStencilLayouts\"><code>separateDepthStencilLayouts</code></a> feature is not enabled, and <code>attachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>layout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>,",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentReference2-synchronization2-06910",
          "text": "If the <a href=\"#features-synchronization2\"><code>synchronization2</code></a> feature is not enabled, <code>layout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR</code> or <code>VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentReference2-attachmentFeedbackLoopLayout-07311",
          "text": "If the <a href=\"#features-attachmentFeedbackLoopLayout\"><code>attachmentFeedbackLoopLayout</code></a> feature is not enabled, <code>layout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentReference2-dynamicRenderingLocalRead-09546",
          "text": "If the <a href=\"#features-dynamicRenderingLocalRead\"><code>dynamicRenderingLocalRead</code></a> feature is not enabled, <code>layout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentReference2-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentReference2-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkAttachmentReferenceStencilLayout\">VkAttachmentReferenceStencilLayout</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentReference2-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentReference2-layout-parameter",
          "text": "<code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkAttachmentReferenceStencilLayout": {
      "core": [
        {
          "vuid": "VUID-VkAttachmentReferenceStencilLayout-stencilLayout-03318",
          "text": "<code>stencilLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code>, <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>, <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_PRESENT_SRC_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentReferenceStencilLayout-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentReferenceStencilLayout-stencilLayout-parameter",
          "text": "<code>stencilLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkSubpassDependency2": {
      "core": [
        {
          "vuid": "VUID-VkSubpassDependency2-srcStageMask-04090",
          "text": "If the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency2-srcStageMask-04091",
          "text": "If the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency2-srcStageMask-04092",
          "text": "If the <a href=\"#features-conditionalRendering\"><code>conditionalRendering</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency2-srcStageMask-04093",
          "text": "If the <a href=\"#features-fragmentDensityMap\"><code>fragmentDensityMap</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency2-srcStageMask-04094",
          "text": "If the <a href=\"#features-transformFeedback\"><code>transformFeedback</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency2-srcStageMask-04095",
          "text": "If the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency2-srcStageMask-04096",
          "text": "If the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency2-srcStageMask-07318",
          "text": "If neither the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> or <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> are enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency2-srcStageMask-03937",
          "text": "If the <a href=\"#features-synchronization2\"><code>synchronization2</code></a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency2-srcStageMask-07949",
          "text": "If neither the <a href=\"#VK_NV_ray_tracing\">VK_NV_ray_tracing</a> extension or <a href=\"#features-rayTracingPipeline\"><code>rayTracingPipeline</code> feature</a> are enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency2-dstStageMask-04090",
          "text": "If the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency2-dstStageMask-04091",
          "text": "If the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency2-dstStageMask-04092",
          "text": "If the <a href=\"#features-conditionalRendering\"><code>conditionalRendering</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency2-dstStageMask-04093",
          "text": "If the <a href=\"#features-fragmentDensityMap\"><code>fragmentDensityMap</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency2-dstStageMask-04094",
          "text": "If the <a href=\"#features-transformFeedback\"><code>transformFeedback</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency2-dstStageMask-04095",
          "text": "If the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency2-dstStageMask-04096",
          "text": "If the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency2-dstStageMask-07318",
          "text": "If neither the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> or <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> are enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency2-dstStageMask-03937",
          "text": "If the <a href=\"#features-synchronization2\"><code>synchronization2</code></a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency2-dstStageMask-07949",
          "text": "If neither the <a href=\"#VK_NV_ray_tracing\">VK_NV_ray_tracing</a> extension or <a href=\"#features-rayTracingPipeline\"><code>rayTracingPipeline</code> feature</a> are enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency2-srcSubpass-03084",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency2-srcSubpass-03085",
          "text": "<code>srcSubpass</code> and <code>dstSubpass</code> <strong class=\"purple\">must</strong> not both be equal to <code>VK_SUBPASS_EXTERNAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency2-srcSubpass-06810",
          "text": "If <code>srcSubpass</code> is equal to <code>dstSubpass</code> and <code>srcStageMask</code> includes a <a href=\"#synchronization-framebuffer-regions\">framebuffer-space stage</a>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> only contain <a href=\"#synchronization-framebuffer-regions\">framebuffer-space stages</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency2-srcAccessMask-03088",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency2-dstAccessMask-03089",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency2-dependencyFlags-03090",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency2-dependencyFlags-03091",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency2-srcSubpass-02245",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency2-viewOffset-02530",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency2-dependencyFlags-03092",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency2-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency2-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkMemoryBarrier2\">VkMemoryBarrier2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency2-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency2-srcStageMask-parameter",
          "text": "<code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency2-dstStageMask-parameter",
          "text": "<code>dstStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency2-srcAccessMask-parameter",
          "text": "<code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency2-dstAccessMask-parameter",
          "text": "<code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassDependency2-dependencyFlags-parameter",
          "text": "<code>dependencyFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDependencyFlagBits\">VkDependencyFlagBits</a> values",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroyRenderPass": {
      "core": [
        {
          "vuid": "VUID-vkDestroyRenderPass-renderPass-00873",
          "text": "All submitted commands that refer to <code>renderPass</code> <strong class=\"purple\">must</strong> have completed execution",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyRenderPass-renderPass-00874",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyRenderPass-renderPass-00875",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyRenderPass-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyRenderPass-renderPass-parameter",
          "text": "If <code>renderPass</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRenderPass\">VkRenderPass</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyRenderPass-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyRenderPass-renderPass-parent",
          "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>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateFramebuffer": {
      "core": [
        {
          "vuid": "VUID-vkCreateFramebuffer-device-10002",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> support at least one queue family with the <code>VK_QUEUE_GRAPHICS_BIT</code> capability",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateFramebuffer-pCreateInfo-02777",
          "text": "If <code>pCreateInfo-&gt;flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, and <code>attachmentCount</code> is not <code>0</code>, each element of <code>pCreateInfo-&gt;pAttachments</code> <strong class=\"purple\">must</strong> have been created on <code>device</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateFramebuffer-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateFramebuffer-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateFramebuffer-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateFramebuffer-pFramebuffer-parameter",
          "text": "<code>pFramebuffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkFramebuffer\">VkFramebuffer</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkFramebufferCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkFramebufferCreateInfo-attachmentCount-00876",
          "text": "<code>attachmentCount</code> <strong class=\"purple\">must</strong> be equal to the attachment count specified in <code>renderPass</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-flags-02778",
          "text": "If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code> and <code>attachmentCount</code> is not <code>0</code>, <code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <a href=\"#VkImageView\">VkImageView</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00877",
          "text": "If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of <code>pAttachments</code> that is used as a color attachment or resolve attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02633",
          "text": "If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of <code>pAttachments</code> that is used as a depth/stencil attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02634",
          "text": "If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of <code>pAttachments</code> that is used as a depth/stencil resolve attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00879",
          "text": "If <code>renderpass</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of <code>pAttachments</code> that is used as an input attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02552",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-renderPass-02553",
          "text": "If <code>renderPass</code> has a fragment density map attachment and the <a href=\"#features-fragmentDensityMapNonSubsampledImages\"><code>fragmentDensityMapNonSubsampledImages</code></a> feature 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-renderPass-06502",
          "text": "If <code>renderPass</code> was created with <a href=\"#renderpass-fragmentdensitymapoffsets\">fragment density map offsets</a> other than <span class=\"eq\">(0,0)</span>, 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_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00880",
          "text": "If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> value that matches the <a href=\"#VkFormat\">VkFormat</a> specified by the corresponding <code>VkAttachmentDescription</code> in <code>renderPass</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00881",
          "text": "If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have been created with a <code>samples</code> value that matches the <code>samples</code> value specified by the corresponding <code>VkAttachmentDescription</code> in <code>renderPass</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-flags-04533",
          "text": "If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of <code>pAttachments</code> that is used as an input, color, resolve, or depth/stencil attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>extent.width</code> greater than or equal to <code>width</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-flags-04534",
          "text": "If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of <code>pAttachments</code> that is used as an input, color, resolve, or depth/stencil attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>extent.height</code> greater than or equal to <code>height</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-flags-04535",
          "text": "If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of <code>pAttachments</code> that is used as an input, color, resolve, or depth/stencil attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkImageViewCreateInfo\">VkImageViewCreateInfo</a>::<code>subresourceRange.layerCount</code> greater than or equal to <code>layers</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-renderPass-04536",
          "text": "If <code>renderPass</code> was specified with non-zero view masks, each element of <code>pAttachments</code> that is used as an input, color, resolve, or depth/stencil attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> have a <code>layerCount</code> greater than the index of the most significant bit set in any of those view masks",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-renderPass-02746",
          "text": "Each element of <code>pAttachments</code> that is referenced by <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> have a <code>layerCount</code> equal to <code>1</code> or if <code>renderPass</code> was specified with non-zero view masks, greater than the index of the most significant bit set in any of those view masks",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02555",
          "text": "If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, an element of <code>pAttachments</code> that is referenced by <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> have a width at least as large as \\(\\left\\lceil{\\frac{width}{maxFragmentDensityTexelSize_{width}}}\\right\\rceil\\)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02556",
          "text": "If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, an element of <code>pAttachments</code> that is referenced by <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> have a height at least as large as \\(\\left\\lceil{\\frac{height}{maxFragmentDensityTexelSize_{height}}}\\right\\rceil\\)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-flags-04537",
          "text": "If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, and <code>renderPass</code> was specified with non-zero view masks, each element of <code>pAttachments</code> that is used as a <a href=\"#primsrast-fragment-shading-rate-attachment\">fragment shading rate attachment</a> by <code>renderPass</code> <strong class=\"purple\">must</strong> have a <code>layerCount</code> that is either <code>1</code>, or greater than the index of the most significant bit set in any of those view masks",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-flags-04538",
          "text": "If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, and <code>renderPass</code> was not specified with non-zero view masks, each element of <code>pAttachments</code> that is used as a <a href=\"#primsrast-fragment-shading-rate-attachment\">fragment shading rate attachment</a> by <code>renderPass</code> <strong class=\"purple\">must</strong> have a <code>layerCount</code> that is either <code>1</code>, or greater than <code>layers</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-flags-04539",
          "text": "If <a href=\"#features-maintenance7\"><code>maintenance7</code></a> is not enabled or the <a href=\"#limits-robustFragmentShadingRateAttachmentAccess\"><code>robustFragmentShadingRateAttachmentAccess</code></a> limit is <code>VK_FALSE</code> or the <code>imageView</code> member of a <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a> structure was created with <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>baseMipLevel</code> greater than 0, <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, an element of <code>pAttachments</code> that is used as a <a href=\"#primsrast-fragment-shading-rate-attachment\">fragment shading rate attachment</a> <strong class=\"purple\">must</strong> have a width at least as large as <span class=\"eq\">⌈<code>width</code> / <code>texelWidth</code>⌉</span>, where <code>texelWidth</code> is the largest value of <code>shadingRateAttachmentTexelSize.width</code> in a <a href=\"#VkFragmentShadingRateAttachmentInfoKHR\">VkFragmentShadingRateAttachmentInfoKHR</a> which references that attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-flags-04540",
          "text": "If <a href=\"#features-maintenance7\"><code>maintenance7</code></a> is not enabled or the <a href=\"#limits-robustFragmentShadingRateAttachmentAccess\"><code>robustFragmentShadingRateAttachmentAccess</code></a> limit is <code>VK_FALSE</code> or the <code>imageView</code> member of a <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a> structure was created with <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>baseMipLevel</code> greater than 0, <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, an element of <code>pAttachments</code> that is used as a <a href=\"#primsrast-fragment-shading-rate-attachment\">fragment shading rate attachment</a> <strong class=\"purple\">must</strong> have a height at least as large as <span class=\"eq\">⌈<code>height</code> / <code>texelHeight</code>⌉</span>, where <code>texelHeight</code> is the largest value of <code>shadingRateAttachmentTexelSize.height</code> in a <a href=\"#VkFragmentShadingRateAttachmentInfoKHR\">VkFragmentShadingRateAttachmentInfoKHR</a> which references that attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00883",
          "text": "If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> only specify a single mip level",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00884",
          "text": "If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have been created with the identity swizzle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-width-00885",
          "text": "<code>width</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-width-00886",
          "text": "<code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxFramebufferWidth\"><code>maxFramebufferWidth</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-height-00887",
          "text": "<code>height</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-height-00888",
          "text": "<code>height</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxFramebufferHeight\"><code>maxFramebufferHeight</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-layers-00889",
          "text": "<code>layers</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-layers-00890",
          "text": "<code>layers</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxFramebufferLayers\"><code>maxFramebufferLayers</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-renderPass-02531",
          "text": "If <code>renderPass</code> was specified with non-zero view masks, <code>layers</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00891",
          "text": "If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of <code>pAttachments</code> that is a 2D or 2D array image view taken from a 3D image <strong class=\"purple\">must</strong> not be a depth/stencil format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-flags-03189",
          "text": "If the <a href=\"#features-imagelessFramebuffer\"><code>imagelessFramebuffer</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-flags-03190",
          "text": "If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-flags-03191",
          "text": "If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>attachmentImageInfoCount</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be equal to either zero or <code>attachmentCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-flags-04541",
          "text": "If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>width</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure in the <code>pNext</code> chain that is used as an input, color, resolve or depth/stencil attachment in <code>renderPass</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>width</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-flags-04542",
          "text": "If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>height</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure in the <code>pNext</code> chain that is used as an input, color, resolve or depth/stencil attachment in <code>renderPass</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>height</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-flags-03196",
          "text": "If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>width</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure in the <code>pNext</code> chain that is referenced by <a href=\"#VkRenderPassFragmentDensityMapCreateInfoEXT\">VkRenderPassFragmentDensityMapCreateInfoEXT</a>::<code>fragmentDensityMapAttachment</code> in <code>renderPass</code> <strong class=\"purple\">must</strong> be greater than or equal to \\(\\left\\lceil{\\frac{width}{maxFragmentDensityTexelSize_{width}}}\\right\\rceil\\)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-flags-03197",
          "text": "If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>height</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure included in the <code>pNext</code> chain that is referenced by <a href=\"#VkRenderPassFragmentDensityMapCreateInfoEXT\">VkRenderPassFragmentDensityMapCreateInfoEXT</a>::<code>fragmentDensityMapAttachment</code> in <code>renderPass</code> <strong class=\"purple\">must</strong> be greater than or equal to \\(\\left\\lceil{\\frac{height}{maxFragmentDensityTexelSize_{height}}}\\right\\rceil\\)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-flags-04543",
          "text": "If <a href=\"#features-maintenance7\"><code>maintenance7</code></a> is not enabled or the <a href=\"#limits-robustFragmentShadingRateAttachmentAccess\"><code>robustFragmentShadingRateAttachmentAccess</code></a> limit is <code>VK_FALSE</code> or the <code>imageView</code> member of a <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a> structure was created with <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>baseMipLevel</code> greater than 0, and <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>width</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure in the <code>pNext</code> chain that is used as a <a href=\"#primsrast-fragment-shading-rate-attachment\">fragment shading rate attachment</a> <strong class=\"purple\">must</strong> be greater than or equal to <span class=\"eq\">⌈<code>width</code> / <code>texelWidth</code>⌉</span>, where <code>texelWidth</code> is the largest value of <code>shadingRateAttachmentTexelSize.width</code> in a <a href=\"#VkFragmentShadingRateAttachmentInfoKHR\">VkFragmentShadingRateAttachmentInfoKHR</a> which references that attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-flags-04544",
          "text": "If <a href=\"#features-maintenance7\"><code>maintenance7</code></a> is not enabled or the <a href=\"#limits-robustFragmentShadingRateAttachmentAccess\"><code>robustFragmentShadingRateAttachmentAccess</code></a> limit is <code>VK_FALSE</code> or the <code>imageView</code> member of a <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a> structure was created with <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>baseMipLevel</code> greater than 0, and <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>height</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure in the <code>pNext</code> chain that is used as a <a href=\"#primsrast-fragment-shading-rate-attachment\">fragment shading rate attachment</a> <strong class=\"purple\">must</strong> be greater than or equal to <span class=\"eq\">⌈<code>height</code> / <code>texelHeight</code>⌉</span>, where <code>texelHeight</code> is the largest value of <code>shadingRateAttachmentTexelSize.height</code> in a <a href=\"#VkFragmentShadingRateAttachmentInfoKHR\">VkFragmentShadingRateAttachmentInfoKHR</a> which references that attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-flags-04545",
          "text": "If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>layerCount</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure in the <code>pNext</code> chain that is used as a <a href=\"#primsrast-fragment-shading-rate-attachment\">fragment shading rate attachment</a> <strong class=\"purple\">must</strong> be either <code>1</code>, or greater than or equal to <code>layers</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-flags-04587",
          "text": "If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code> and <code>renderPass</code> was specified with non-zero view masks, the <code>layerCount</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure in the <code>pNext</code> chain that is used as a <a href=\"#primsrast-fragment-shading-rate-attachment\">fragment shading rate attachment</a> <strong class=\"purple\">must</strong> be either <code>1</code>, or greater than the index of the most significant bit set in any of those view masks",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-renderPass-03198",
          "text": "If multiview is enabled for <code>renderPass</code> and <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>layerCount</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure included in the <code>pNext</code> chain used as an input, color, resolve, or depth/stencil attachment in <code>renderPass</code> <strong class=\"purple\">must</strong> be greater than the maximum bit index set in the view mask in the subpasses in which it is used in <code>renderPass</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-renderPass-04546",
          "text": "If multiview is not enabled for <code>renderPass</code> and <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>layerCount</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure included in the <code>pNext</code> chain used as an input, color, resolve, or depth/stencil attachment in <code>renderPass</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>layers</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-flags-03201",
          "text": "If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>usage</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure included in the <code>pNext</code> chain that refers to an attachment used as a color attachment or resolve attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> include <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-flags-03202",
          "text": "If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>usage</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure included in the <code>pNext</code> chain that refers to an attachment used as a depth/stencil attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> include <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-flags-03203",
          "text": "If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>usage</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure included in the <code>pNext</code> chain that refers to an attachment used as a depth/stencil resolve attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> include <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-flags-03204",
          "text": "If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>usage</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure included in the <code>pNext</code> chain that refers to an attachment used as an input attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> include <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-flags-03205",
          "text": "If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, at least one element of the <code>pViewFormats</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be equal to the corresponding value of <a href=\"#VkAttachmentDescription\">VkAttachmentDescription</a>::<code>format</code> used to create <code>renderPass</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-flags-04113",
          "text": "If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkImageViewCreateInfo\">VkImageViewCreateInfo</a>::<code>viewType</code> not equal to <code>VK_IMAGE_VIEW_TYPE_3D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-flags-04548",
          "text": "If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of <code>pAttachments</code> that is used as a fragment shading rate attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-flags-04549",
          "text": "If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>usage</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure included in the <code>pNext</code> chain that refers to an attachment used as a fragment shading rate attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> include <code>VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-samples-06881",
          "text": "If <a href=\"#subpass-multisampledrendertosinglesampled\">multisampled-render-to-single-sampled</a> is enabled for any subpass, all color, depth/stencil and input attachments used in that subpass which have <code>VkAttachmentDescription</code>::<code>samples</code> or <code>VkAttachmentDescription2</code>::<code>samples</code> equal to <code>VK_SAMPLE_COUNT_1_BIT</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT</code> in their <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-samples-07009",
          "text": "If <a href=\"#subpass-multisampledrendertosinglesampled\">multisampled-render-to-single-sampled</a> is enabled for any subpass, all color, depth/stencil and input attachments used in that subpass which have <code>VkAttachmentDescription</code>::<code>samples</code> or <code>VkAttachmentDescription2</code>::<code>samples</code> equal to <code>VK_SAMPLE_COUNT_1_BIT</code> <strong class=\"purple\">must</strong> have a format that supports the sample count specified in <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a>::<code>rasterizationSamples</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-nullColorAttachmentWithExternalFormatResolve-09349",
          "text": "If the <a href=\"#limits-nullColorAttachmentWithExternalFormatResolve\"><code>nullColorAttachmentWithExternalFormatResolve</code></a> is <code>VK_FALSE</code>, and <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the format of the color attachment for each subpass in <code>renderPass</code> that includes an external format image as a resolve attachment <strong class=\"purple\">must</strong> have a format equal to the value of <a href=\"#VkAndroidHardwareBufferFormatResolvePropertiesANDROID\">VkAndroidHardwareBufferFormatResolvePropertiesANDROID</a>::<code>colorAttachmentFormat</code> as returned by a call to <a href=\"#vkGetAndroidHardwareBufferPropertiesANDROID\">vkGetAndroidHardwareBufferPropertiesANDROID</a> for the Android hardware buffer that was used to create the image view use as its resolve attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-09350",
          "text": "If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, then if an element of <code>pAttachments</code> has a format of <code>VK_FORMAT_UNDEFINED</code>, it <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value identical to that provided in the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> specified by the corresponding <a href=\"#VkAttachmentDescription2\">VkAttachmentDescription2</a> in <code>renderPass</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkFramebufferCreateFlagBits\">VkFramebufferCreateFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-renderPass-parameter",
          "text": "<code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRenderPass\">VkRenderPass</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferCreateInfo-commonparent",
          "text": "Both of <code>renderPass</code>, and the elements of <code>pAttachments</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkFramebufferAttachmentsCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkFramebufferAttachmentsCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferAttachmentsCreateInfo-pAttachmentImageInfos-parameter",
          "text": "If <code>attachmentImageInfoCount</code> is not <code>0</code>, <code>pAttachmentImageInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentImageInfoCount</code> valid <a href=\"#VkFramebufferAttachmentImageInfo\">VkFramebufferAttachmentImageInfo</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkFramebufferAttachmentImageInfo": {
      "core": [
        {
          "vuid": "VUID-VkFramebufferAttachmentImageInfo-viewFormatCount-09536",
          "text": "If <code>viewFormatCount</code> is not 0, and the render pass is not being used with an external format resolve attachment, each element of <code>pViewFormats</code> <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferAttachmentImageInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferAttachmentImageInfo-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferAttachmentImageInfo-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferAttachmentImageInfo-usage-parameter",
          "text": "<code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferAttachmentImageInfo-usage-requiredbitmask",
          "text": "<code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferAttachmentImageInfo-pViewFormats-parameter",
          "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",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroyFramebuffer": {
      "core": [
        {
          "vuid": "VUID-vkDestroyFramebuffer-framebuffer-00892",
          "text": "All submitted commands that refer to <code>framebuffer</code> <strong class=\"purple\">must</strong> have completed execution",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyFramebuffer-framebuffer-00893",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyFramebuffer-framebuffer-00894",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyFramebuffer-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyFramebuffer-framebuffer-parameter",
          "text": "If <code>framebuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>framebuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFramebuffer\">VkFramebuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyFramebuffer-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyFramebuffer-framebuffer-parent",
          "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>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdBeginRenderPass": {
      "core": [
        {
          "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00895",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-01758",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-02842",
          "text": "If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass-stencilInitialLayout-02843",
          "text": "If any of the <code>stencilInitialLayout</code> or <code>stencilFinalLayout</code> member of the <code>VkAttachmentDescriptionStencilLayout</code> structures or the <code>stencilLayout</code> member of the <code>VkAttachmentReferenceStencilLayout</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00897",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00898",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00899",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00900",
          "text": "If the <code>initialLayout</code> member of any 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass-srcStageMask-06451",
          "text": "The <code>srcStageMask</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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass-dstStageMask-06452",
          "text": "The <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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass-framebuffer-02532",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass-framebuffer-09045",
          "text": "If any attachments specified in <code>framebuffer</code> are used by <code>renderPass</code> and are bound to overlapping memory locations, there <strong class=\"purple\">must</strong> be only one that is used as a color attachment, depth/stencil, or resolve attachment in any subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-07000",
          "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_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</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 either the <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code> or <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> and either the <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code> or <code>VK_IMAGE_USAGE_SAMPLED_BIT</code> usage bits",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-07001",
          "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_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</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 the <code>VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code> usage bit",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-09537",
          "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_RENDERING_LOCAL_READ_KHR</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 either <code>VK_IMAGE_USAGE_STORAGE_BIT</code>, or both <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code> and either of <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code> or <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass-contents-09640",
          "text": "If <code>contents</code> is <code>VK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_KHR</code>, then at least one of the following features <strong class=\"purple\">must</strong> be enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p><a href=\"#features-maintenance7\"><code>maintenance7</code></a></p>\n</li>\n<li>\n<p><a href=\"#features-nestedCommandBuffer\"><code>nestedCommandBuffer</code></a></p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass-pRenderPassBegin-parameter",
          "text": "<code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkRenderPassBeginInfo\">VkRenderPassBeginInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass-contents-parameter",
          "text": "<code>contents</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSubpassContents\">VkSubpassContents</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass-bufferlevel",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdBeginRenderPass2": {
      "core": [
        {
          "vuid": "VUID-vkCmdBeginRenderPass2-framebuffer-02779",
          "text": "Both the <code>framebuffer</code> and <code>renderPass</code> members of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created on the same <a href=\"#VkDevice\">VkDevice</a> that <code>commandBuffer</code> was allocated on",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass2-initialLayout-03094",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass2-initialLayout-03096",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass2-initialLayout-02844",
          "text": "If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass2-stencilInitialLayout-02845",
          "text": "If any of the <code>stencilInitialLayout</code> or <code>stencilFinalLayout</code> member of the <code>VkAttachmentDescriptionStencilLayout</code> structures or the <code>stencilLayout</code> member of the <code>VkAttachmentReferenceStencilLayout</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass2-initialLayout-03097",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass2-initialLayout-03098",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass2-initialLayout-03099",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass2-initialLayout-03100",
          "text": "If the <code>initialLayout</code> member of any 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass2-srcStageMask-06453",
          "text": "The <code>srcStageMask</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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass2-dstStageMask-06454",
          "text": "The <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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass2-framebuffer-02533",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass2-framebuffer-09046",
          "text": "If any attachments specified in <code>framebuffer</code> are used by <code>renderPass</code> and are bound to overlapping memory locations, there <strong class=\"purple\">must</strong> be only one that is used as a color attachment, depth/stencil, or resolve attachment in any subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass2-initialLayout-07002",
          "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_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</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 either the <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code> or <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> and either the <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code> or <code>VK_IMAGE_USAGE_SAMPLED_BIT</code> usage bits",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass2-initialLayout-07003",
          "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_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</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 the <code>VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code> usage bit",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass2-initialLayout-09538",
          "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_RENDERING_LOCAL_READ_KHR</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 either <code>VK_IMAGE_USAGE_STORAGE_BIT</code>, or both <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code> and either of <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code> or <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass2-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass2-pRenderPassBegin-parameter",
          "text": "<code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkRenderPassBeginInfo\">VkRenderPassBeginInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass2-pSubpassBeginInfo-parameter",
          "text": "<code>pSubpassBeginInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSubpassBeginInfo\">VkSubpassBeginInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass2-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass2-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass2-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass2-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginRenderPass2-bufferlevel",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkRenderPassBeginInfo": {
      "core": [
        {
          "vuid": "VUID-VkRenderPassBeginInfo-clearValueCount-00902",
          "text": "<code>clearValueCount</code> <strong class=\"purple\">must</strong> be greater than the largest attachment index in <code>renderPass</code> specifying a <code>loadOp</code> (or <code>stencilLoadOp</code>, if the attachment has a depth/stencil format) of <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassBeginInfo-clearValueCount-04962",
          "text": "If <code>clearValueCount</code> is not <code>0</code>, <code>pClearValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>clearValueCount</code> <a href=\"#VkClearValue\">VkClearValue</a> unions",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassBeginInfo-renderPass-00904",
          "text": "<code>renderPass</code> <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a> structure specified when creating <code>framebuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassBeginInfo-None-08996",
          "text": "If the <code>pNext</code> chain does not contain <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a> or its <code>deviceRenderAreaCount</code> member is equal to 0, <code>renderArea.extent.width</code> <strong class=\"purple\">must</strong> be greater than 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassBeginInfo-None-08997",
          "text": "If the <code>pNext</code> chain does not contain <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a> or its <code>deviceRenderAreaCount</code> member is equal to 0, <code>renderArea.extent.height</code> <strong class=\"purple\">must</strong> be greater than 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassBeginInfo-pNext-02850",
          "text": "If the <code>pNext</code> chain does not contain <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a> or its <code>deviceRenderAreaCount</code> member is equal to 0, <code>renderArea.offset.x</code> <strong class=\"purple\">must</strong> be greater than or equal to 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassBeginInfo-pNext-02851",
          "text": "If the <code>pNext</code> chain does not contain <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a> or its <code>deviceRenderAreaCount</code> member is equal to 0, <code>renderArea.offset.y</code> <strong class=\"purple\">must</strong> be greater than or equal to 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassBeginInfo-pNext-02852",
          "text": "If the <code>pNext</code> chain does not contain <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a> or its <code>deviceRenderAreaCount</code> member is equal to 0, <span class=\"eq\"><code>renderArea.offset.x</code> +  <code>renderArea.extent.width</code></span> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>width</code> the <code>framebuffer</code> was created with",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassBeginInfo-pNext-02853",
          "text": "If the <code>pNext</code> chain does not contain <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a> or its <code>deviceRenderAreaCount</code> member is equal to 0, <span class=\"eq\"><code>renderArea.offset.y</code> +  <code>renderArea.extent.height</code></span> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>height</code> the <code>framebuffer</code> was created with",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassBeginInfo-pNext-02856",
          "text": "If the <code>pNext</code> chain contains <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a>, <span class=\"eq\"><code>offset.x</code> +  <code>extent.width</code></span> of each element of <code>pDeviceRenderAreas</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>width</code> the <code>framebuffer</code> was created with",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassBeginInfo-pNext-02857",
          "text": "If the <code>pNext</code> chain contains <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a>, <span class=\"eq\"><code>offset.y</code> +  <code>extent.height</code></span> of each element of <code>pDeviceRenderAreas</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>height</code> the <code>framebuffer</code> was created with",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03207",
          "text": "If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that did not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, and the <code>pNext</code> chain includes a <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a> structure, its <code>attachmentCount</code> <strong class=\"purple\">must</strong> be zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03208",
          "text": "If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>attachmentCount</code> of a <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be equal to the value of <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a>::<code>attachmentImageInfoCount</code> used to create <code>framebuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-02780",
          "text": "If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of the <code>pAttachments</code> member of a <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> have been created on the same <a href=\"#VkDevice\">VkDevice</a> as <code>framebuffer</code> and <code>renderPass</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03209",
          "text": "If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of the <code>pAttachments</code> member of a <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be a <a href=\"#VkImageView\">VkImageView</a> of an image created with a value of <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> equal to the <code>flags</code> member of the corresponding element of <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a>::<code>pAttachmentImageInfos</code> used to create <code>framebuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-04627",
          "text": "If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of the <code>pAttachments</code> member of a <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be a <a href=\"#VkImageView\">VkImageView</a> with <a href=\"#resources-image-inherited-usage\">an inherited usage</a> equal to the <code>usage</code> member of the corresponding element of <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a>::<code>pAttachmentImageInfos</code> used to create <code>framebuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03211",
          "text": "If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of the <code>pAttachments</code> member of a <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be a <a href=\"#VkImageView\">VkImageView</a> with a width equal to the <code>width</code> member of the corresponding element of <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a>::<code>pAttachmentImageInfos</code> used to create <code>framebuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03212",
          "text": "If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of the <code>pAttachments</code> member of a <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be a <a href=\"#VkImageView\">VkImageView</a> with a height equal to the <code>height</code> member of the corresponding element of <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a>::<code>pAttachmentImageInfos</code> used to create <code>framebuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03213",
          "text": "If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of the <code>pAttachments</code> member of a <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be a <a href=\"#VkImageView\">VkImageView</a> of an image created with a value of <a href=\"#VkImageViewCreateInfo\">VkImageViewCreateInfo</a>::<code>subresourceRange.layerCount</code> equal to the <code>layerCount</code> member of the corresponding element of <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a>::<code>pAttachmentImageInfos</code> used to create <code>framebuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03214",
          "text": "If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of the <code>pAttachments</code> member of a <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be a <a href=\"#VkImageView\">VkImageView</a> of an image created with a value of <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>::<code>viewFormatCount</code> equal to the <code>viewFormatCount</code> member of the corresponding element of <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a>::<code>pAttachmentImageInfos</code> used to create <code>framebuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03215",
          "text": "If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of the <code>pAttachments</code> member of a <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be a <a href=\"#VkImageView\">VkImageView</a> of an image created with a set of elements in <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>::<code>pViewFormats</code> equal to the set of elements in the <code>pViewFormats</code> member of the corresponding element of <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a>::<code>pAttachmentImageInfos</code> used to create <code>framebuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03216",
          "text": "If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of the <code>pAttachments</code> member of a <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be a <a href=\"#VkImageView\">VkImageView</a> of an image created with a value of <a href=\"#VkImageViewCreateInfo\">VkImageViewCreateInfo</a>::<code>format</code> equal to the corresponding value of <a href=\"#VkAttachmentDescription\">VkAttachmentDescription</a>::<code>format</code> in <code>renderPass</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-09353",
          "text": "If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, and the <a href=\"#limits-nullColorAttachmentWithExternalFormatResolve\"><code>nullColorAttachmentWithExternalFormatResolve</code></a> is <code>VK_FALSE</code>, the format of the color attachment for each subpass that includes an external format image as a resolve attachment <strong class=\"purple\">must</strong> have a format equal to the value of <a href=\"#VkAndroidHardwareBufferFormatResolvePropertiesANDROID\">VkAndroidHardwareBufferFormatResolvePropertiesANDROID</a>::<code>colorAttachmentFormat</code> as returned by a call to <a href=\"#vkGetAndroidHardwareBufferPropertiesANDROID\">vkGetAndroidHardwareBufferPropertiesANDROID</a> for the Android hardware buffer that was used to create the image view use as its resolve attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-09354",
          "text": "If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of the <code>pAttachments</code> member of a <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be a <a href=\"#VkImageView\">VkImageView</a> of an image created with a value of <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> equal to <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> in the <code>pNext</code> chain of the corresponding <a href=\"#VkAttachmentDescription2\">VkAttachmentDescription2</a> structure used to create <code>renderPass</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-09047",
          "text": "If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of the <code>pAttachments</code> member of a <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be a <a href=\"#VkImageView\">VkImageView</a> of an image created with a value of <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>samples</code> equal to the corresponding value of <a href=\"#VkAttachmentDescription\">VkAttachmentDescription</a>::<code>samples</code> in <code>renderPass</code> , or <code>VK_SAMPLE_COUNT_1_BIT</code> if <code>renderPass</code> was created with <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure in the <code>pNext</code> chain with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassBeginInfo-pNext-02869",
          "text": "If the <code>pNext</code> chain includes <a href=\"#VkRenderPassTransformBeginInfoQCOM\">VkRenderPassTransformBeginInfoQCOM</a>, <code>renderArea.offset</code> <strong class=\"purple\">must</strong> equal <span class=\"eq\">(0,0)</span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassBeginInfo-pNext-02870",
          "text": "If the <code>pNext</code> chain includes <a href=\"#VkRenderPassTransformBeginInfoQCOM\">VkRenderPassTransformBeginInfoQCOM</a>, <code>renderArea.extent</code> transformed by <a href=\"#VkRenderPassTransformBeginInfoQCOM\">VkRenderPassTransformBeginInfoQCOM</a>::<code>transform</code> <strong class=\"purple\">must</strong> equal the <code>framebuffer</code> dimensions",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassBeginInfo-perViewRenderAreaCount-07859",
          "text": "If the <code>perViewRenderAreaCount</code> member of a <a href=\"#VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM\">VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM</a> structure included in the <code>pNext</code> chain is not <code>0</code>, then the <a href=\"#features-multiview-per-view-render-areas\"><code>multiviewPerViewRenderAreas</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassBeginInfo-perViewRenderAreaCount-07860",
          "text": "If the <code>perViewRenderAreaCount</code> member of a <a href=\"#VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM\">VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM</a> structure included in the <code>pNext</code> chain is not <code>0</code>, then <code>renderArea</code> <strong class=\"purple\">must</strong> specify a render area that includes the union of all per view render areas",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassBeginInfo-pNext-09539",
          "text": "If the <code>pNext</code> chain contains a <a href=\"#VkRenderPassStripeBeginInfoARM\">VkRenderPassStripeBeginInfoARM</a> structure, the union of stripe areas defined by the elements of <a href=\"#VkRenderPassStripeInfoARM\">VkRenderPassStripeInfoARM</a>::<code>pStripeInfos</code> <strong class=\"purple\">must</strong> cover the <code>renderArea</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassBeginInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassBeginInfo-pNext-pNext",
          "text": "Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a>, <a href=\"#VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM\">VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM</a>, <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a>, <a href=\"#VkRenderPassSampleLocationsBeginInfoEXT\">VkRenderPassSampleLocationsBeginInfoEXT</a>, <a href=\"#VkRenderPassStripeBeginInfoARM\">VkRenderPassStripeBeginInfoARM</a>, or <a href=\"#VkRenderPassTransformBeginInfoQCOM\">VkRenderPassTransformBeginInfoQCOM</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassBeginInfo-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassBeginInfo-renderPass-parameter",
          "text": "<code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRenderPass\">VkRenderPass</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-parameter",
          "text": "<code>framebuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFramebuffer\">VkFramebuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassBeginInfo-commonparent",
          "text": "Both of <code>framebuffer</code>, and <code>renderPass</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkRenderPassSampleLocationsBeginInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkRenderPassSampleLocationsBeginInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassSampleLocationsBeginInfoEXT-pAttachmentInitialSampleLocations-parameter",
          "text": "If <code>attachmentInitialSampleLocationsCount</code> is not <code>0</code>, <code>pAttachmentInitialSampleLocations</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentInitialSampleLocationsCount</code> valid <a href=\"#VkAttachmentSampleLocationsEXT\">VkAttachmentSampleLocationsEXT</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassSampleLocationsBeginInfoEXT-pPostSubpassSampleLocations-parameter",
          "text": "If <code>postSubpassSampleLocationsCount</code> is not <code>0</code>, <code>pPostSubpassSampleLocations</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>postSubpassSampleLocationsCount</code> valid <a href=\"#VkSubpassSampleLocationsEXT\">VkSubpassSampleLocationsEXT</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkAttachmentSampleLocationsEXT": {
      "core": [
        {
          "vuid": "VUID-VkAttachmentSampleLocationsEXT-attachmentIndex-01531",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAttachmentSampleLocationsEXT-sampleLocationsInfo-parameter",
          "text": "<code>sampleLocationsInfo</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleLocationsInfoEXT\">VkSampleLocationsInfoEXT</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkSubpassSampleLocationsEXT": {
      "core": [
        {
          "vuid": "VUID-VkSubpassSampleLocationsEXT-subpassIndex-01532",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassSampleLocationsEXT-sampleLocationsInfo-parameter",
          "text": "<code>sampleLocationsInfo</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleLocationsInfoEXT\">VkSampleLocationsInfoEXT</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkRenderPassTransformBeginInfoQCOM": {
      "core": [
        {
          "vuid": "VUID-VkRenderPassTransformBeginInfoQCOM-transform-02871",
          "text": "<code>transform</code> <strong class=\"purple\">must</strong> be <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code>, <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code>, or <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassTransformBeginInfoQCOM-flags-02872",
          "text": "The <code>renderpass</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkRenderPassCreateInfo\">VkRenderPassCreateInfo</a>::<code>flags</code> containing <code>VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassTransformBeginInfoQCOM-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkSubpassBeginInfo": {
      "core": [
        {
          "vuid": "VUID-VkSubpassBeginInfo-contents-09382",
          "text": "If <code>contents</code> is <code>VK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_KHR</code>, then at least one of the following features <strong class=\"purple\">must</strong> be enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p><a href=\"#features-maintenance7\"><code>maintenance7</code></a></p>\n</li>\n<li>\n<p><a href=\"#features-nestedCommandBuffer\"><code>nestedCommandBuffer</code></a></p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassBeginInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassBeginInfo-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassBeginInfo-contents-parameter",
          "text": "<code>contents</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSubpassContents\">VkSubpassContents</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkDeviceGroupRenderPassBeginInfo": {
      "core": [
        {
          "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-deviceMask-00905",
          "text": "<code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-deviceMask-00906",
          "text": "<code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-deviceMask-00907",
          "text": "<code>deviceMask</code> <strong class=\"purple\">must</strong> be a subset of the command buffer&#8217;s initial device mask",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-deviceRenderAreaCount-00908",
          "text": "<code>deviceRenderAreaCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-offset-06166",
          "text": "The <code>offset.x</code> member of any element of <code>pDeviceRenderAreas</code> <strong class=\"purple\">must</strong> be greater than or equal to 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-offset-06167",
          "text": "The <code>offset.y</code> member of any element of <code>pDeviceRenderAreas</code> <strong class=\"purple\">must</strong> be greater than or equal to 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-offset-06168",
          "text": "The sum of the <code>offset.x</code> and <code>extent.width</code> members of any element of <code>pDeviceRenderAreas</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxFramebufferWidth\"><code>maxFramebufferWidth</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-offset-06169",
          "text": "The sum of the <code>offset.y</code> and <code>extent.height</code> members of any element of <code>pDeviceRenderAreas</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxFramebufferHeight\"><code>maxFramebufferHeight</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-extent-08998",
          "text": "The <code>extent.width</code> member of any element of <code>pDeviceRenderAreas</code> <strong class=\"purple\">must</strong> be greater than 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-extent-08999",
          "text": "The <code>extent.height</code> member of any element of <code>pDeviceRenderAreas</code> <strong class=\"purple\">must</strong> be greater than 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-pDeviceRenderAreas-parameter",
          "text": "If <code>deviceRenderAreaCount</code> is not <code>0</code>, <code>pDeviceRenderAreas</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>deviceRenderAreaCount</code> <a href=\"#VkRect2D\">VkRect2D</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkRenderPassAttachmentBeginInfo": {
      "core": [
        {
          "vuid": "VUID-VkRenderPassAttachmentBeginInfo-pAttachments-03218",
          "text": "Each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> only specify a single mip level",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassAttachmentBeginInfo-pAttachments-03219",
          "text": "Each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have been created with the <a href=\"#resources-image-views-identity-mappings\">identity swizzle</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassAttachmentBeginInfo-pAttachments-04114",
          "text": "Each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkImageViewCreateInfo\">VkImageViewCreateInfo</a>::<code>viewType</code> not equal to <code>VK_IMAGE_VIEW_TYPE_3D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassAttachmentBeginInfo-pAttachments-07010",
          "text": "If <a href=\"#subpass-multisampledrendertosinglesampled\">multisampled-render-to-single-sampled</a> is enabled for any subpass, all element of <code>pAttachments</code> which have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code> <strong class=\"purple\">must</strong> have a format that supports the sample count specified in <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a>::<code>rasterizationSamples</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassAttachmentBeginInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassAttachmentBeginInfo-pAttachments-parameter",
          "text": "If <code>attachmentCount</code> is not <code>0</code>, <code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <a href=\"#VkImageView\">VkImageView</a> handles",
          "page": "vkspec"
        }
      ]
    },
    "VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM": {
      "core": [
        {
          "vuid": "VUID-VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM-offset-07861",
          "text": "The <code>offset.x</code> member of any element of <code>pPerViewRenderAreas</code> <strong class=\"purple\">must</strong> be greater than or equal to 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM-offset-07862",
          "text": "The <code>offset.y</code> member of any element of <code>pPerViewRenderAreas</code> <strong class=\"purple\">must</strong> be greater than or equal to 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM-offset-07863",
          "text": "The sum of the <code>offset.x</code> and <code>extent.width</code> members of any element of <code>pPerViewRenderAreas</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxFramebufferWidth\"><code>maxFramebufferWidth</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM-offset-07864",
          "text": "The sum of the <code>offset.y</code> and <code>extent.height</code> members of any element of <code>pPerViewRenderAreas</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxFramebufferHeight\"><code>maxFramebufferHeight</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM-pNext-07865",
          "text": "If this structure is in the <code>pNext</code> chain of <a href=\"#VkRenderPassBeginInfo\">VkRenderPassBeginInfo</a> and if the render pass object included an element in <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>::<code>pViewMasks</code> that set bit <code>n</code>, then <code>perViewRenderAreaCount</code> <strong class=\"purple\">must</strong> be at least equal to <code>n+1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM-pNext-07866",
          "text": "If this structure is in the <code>pNext</code> chain of <a href=\"#VkRenderingInfo\">VkRenderingInfo</a> and if <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>viewMask</code> set bit <code>n</code>, then <code>perViewRenderAreaCount</code> <strong class=\"purple\">must</strong> be at least equal to <code>n+1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM-pPerViewRenderAreas-parameter",
          "text": "If <code>perViewRenderAreaCount</code> is not <code>0</code>, <code>pPerViewRenderAreas</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>perViewRenderAreaCount</code> <a href=\"#VkRect2D\">VkRect2D</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "vkGetRenderAreaGranularity": {
      "core": [
        {
          "vuid": "VUID-vkGetRenderAreaGranularity-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetRenderAreaGranularity-renderPass-parameter",
          "text": "<code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRenderPass\">VkRenderPass</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetRenderAreaGranularity-pGranularity-parameter",
          "text": "<code>pGranularity</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkExtent2D\">VkExtent2D</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetRenderAreaGranularity-renderPass-parent",
          "text": "<code>renderPass</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdNextSubpass": {
      "core": [
        {
          "vuid": "VUID-vkCmdNextSubpass-None-00909",
          "text": "The current subpass index <strong class=\"purple\">must</strong> be less than the number of subpasses in the render pass minus one",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdNextSubpass-None-02349",
          "text": "This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdNextSubpass-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdNextSubpass-contents-parameter",
          "text": "<code>contents</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSubpassContents\">VkSubpassContents</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdNextSubpass-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdNextSubpass-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdNextSubpass-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdNextSubpass-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdNextSubpass-bufferlevel",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdNextSubpass2": {
      "core": [
        {
          "vuid": "VUID-vkCmdNextSubpass2-None-03102",
          "text": "The current subpass index <strong class=\"purple\">must</strong> be less than the number of subpasses in the render pass minus one",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdNextSubpass2-None-02350",
          "text": "This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdNextSubpass2-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdNextSubpass2-pSubpassBeginInfo-parameter",
          "text": "<code>pSubpassBeginInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSubpassBeginInfo\">VkSubpassBeginInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdNextSubpass2-pSubpassEndInfo-parameter",
          "text": "<code>pSubpassEndInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSubpassEndInfo\">VkSubpassEndInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdNextSubpass2-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdNextSubpass2-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdNextSubpass2-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdNextSubpass2-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdNextSubpass2-bufferlevel",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdEndRenderPass": {
      "core": [
        {
          "vuid": "VUID-vkCmdEndRenderPass-None-00910",
          "text": "The current subpass index <strong class=\"purple\">must</strong> be equal to the number of subpasses in the render pass minus one",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndRenderPass-None-02351",
          "text": "This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndRenderPass-None-06170",
          "text": "The current render pass instance <strong class=\"purple\">must</strong> not have been begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndRenderPass-None-07004",
          "text": "If <code>vkCmdBeginQuery</code>* was called within a subpass of the render pass, the corresponding <code>vkCmdEndQuery</code>* <strong class=\"purple\">must</strong> have been called subsequently within the same subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndRenderPass-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndRenderPass-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndRenderPass-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndRenderPass-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndRenderPass-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndRenderPass-bufferlevel",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdEndRenderPass2": {
      "core": [
        {
          "vuid": "VUID-vkCmdEndRenderPass2-None-03103",
          "text": "The current subpass index <strong class=\"purple\">must</strong> be equal to the number of subpasses in the render pass minus one",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndRenderPass2-None-02352",
          "text": "This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndRenderPass2-None-06171",
          "text": "The current render pass instance <strong class=\"purple\">must</strong> not have been begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndRenderPass2-None-07005",
          "text": "If <code>vkCmdBeginQuery</code>* was called within a subpass of the render pass, the corresponding <code>vkCmdEndQuery</code>* <strong class=\"purple\">must</strong> have been called subsequently within the same subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndRenderPass2-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndRenderPass2-pSubpassEndInfo-parameter",
          "text": "<code>pSubpassEndInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSubpassEndInfo\">VkSubpassEndInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndRenderPass2-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndRenderPass2-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndRenderPass2-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndRenderPass2-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndRenderPass2-bufferlevel",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkSubpassEndInfo": {
      "core": [
        {
          "vuid": "VUID-VkSubpassEndInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_END_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassEndInfo-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkSubpassFragmentDensityMapOffsetEndInfoQCOM\">VkSubpassFragmentDensityMapOffsetEndInfoQCOM</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassEndInfo-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        }
      ]
    },
    "VkSubpassFragmentDensityMapOffsetEndInfoQCOM": {
      "core": [
        {
          "vuid": "VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-fragmentDensityMapOffsets-06503",
          "text": "If the <a href=\"#features-fragmentDensityMapOffset\"><code>fragmentDensityMapOffset</code></a> feature is not enabled or fragment density map is not enabled in the render pass, <code>fragmentDensityOffsetCount</code> <strong class=\"purple\">must</strong> equal <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-fragmentDensityMapAttachment-06504",
          "text": "If <code>VkSubpassDescription</code>::<code>fragmentDensityMapAttachment</code> is not is not <code>VK_ATTACHMENT_UNUSED</code> and was not created with <code>VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM</code>, <code>fragmentDensityOffsetCount</code> <strong class=\"purple\">must</strong> equal <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-pDepthStencilAttachment-06505",
          "text": "If <code>VkSubpassDescription</code>::<code>pDepthStencilAttachment</code> is not is not <code>VK_ATTACHMENT_UNUSED</code> and was not created with <code>VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM</code>, <code>fragmentDensityOffsetCount</code> <strong class=\"purple\">must</strong> equal <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-pInputAttachments-06506",
          "text": "If any element of <code>VkSubpassDescription</code>::<code>pInputAttachments</code> is not is not <code>VK_ATTACHMENT_UNUSED</code> and was not created with <code>VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM</code>, <code>fragmentDensityOffsetCount</code> <strong class=\"purple\">must</strong> equal <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-pColorAttachments-06507",
          "text": "If any element of <code>VkSubpassDescription</code>::<code>pColorAttachments</code> is not is not <code>VK_ATTACHMENT_UNUSED</code> and was not created with <code>VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM</code>, <code>fragmentDensityOffsetCount</code> <strong class=\"purple\">must</strong> equal <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-pResolveAttachments-06508",
          "text": "If any element of <code>VkSubpassDescription</code>::<code>pResolveAttachments</code> is not is not <code>VK_ATTACHMENT_UNUSED</code> and was not created with <code>VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM</code>, <code>fragmentDensityOffsetCount</code> <strong class=\"purple\">must</strong> equal <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-pPreserveAttachments-06509",
          "text": "If any element of <code>VkSubpassDescription</code>::<code>pPreserveAttachments</code> is not is not <code>VK_ATTACHMENT_UNUSED</code> and was not created with <code>VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM</code>, <code>fragmentDensityOffsetCount</code> <strong class=\"purple\">must</strong> equal <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-fragmentDensityOffsetCount-06510",
          "text": "If <code>fragmentDensityOffsetCount</code> is not <code>0</code> and multiview is enabled for the render pass, <code>fragmentDensityOffsetCount</code> <strong class=\"purple\">must</strong> equal the <code>layerCount</code> that was specified in creating the fragment density map attachment view",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-fragmentDensityOffsetCount-06511",
          "text": "If <code>fragmentDensityOffsetCount</code> is not <code>0</code> and multiview is not enabled for the render pass, <code>fragmentDensityOffsetCount</code> <strong class=\"purple\">must</strong> equal <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-x-06512",
          "text": "The <code>x</code> component of each element of <code>pFragmentDensityOffsets</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>fragmentDensityOffsetGranularity.width</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-y-06513",
          "text": "The <code>y</code> component of each element of <code>pFragmentDensityOffsets</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>fragmentDensityOffsetGranularity.height</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-pFragmentDensityOffsets-parameter",
          "text": "If <code>fragmentDensityOffsetCount</code> is not <code>0</code>, <code>pFragmentDensityOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>fragmentDensityOffsetCount</code> <a href=\"#VkOffset2D\">VkOffset2D</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkRenderPassCreationControlEXT": {
      "core": [
        {
          "vuid": "VUID-VkRenderPassCreationControlEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkRenderPassCreationFeedbackCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkRenderPassCreationFeedbackCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassCreationFeedbackCreateInfoEXT-pRenderPassFeedback-parameter",
          "text": "<code>pRenderPassFeedback</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkRenderPassCreationFeedbackInfoEXT\">VkRenderPassCreationFeedbackInfoEXT</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkRenderPassSubpassFeedbackCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkRenderPassSubpassFeedbackCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderPassSubpassFeedbackCreateInfoEXT-pSubpassFeedback-parameter",
          "text": "<code>pSubpassFeedback</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkRenderPassSubpassFeedbackInfoEXT\">VkRenderPassSubpassFeedbackInfoEXT</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateShadersEXT": {
      "core": [
        {
          "vuid": "VUID-vkCreateShadersEXT-device-09669",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> support at least one queue family with one of the <code>VK_QUEUE_COMPUTE_BIT</code> or <code>VK_QUEUE_GRAPHICS_BIT</code> capabilities",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateShadersEXT-stage-09670",
          "text": "If the <code>stage</code> member of any element of <code>pCreateInfos</code> is <code>VK_SHADER_STAGE_COMPUTE_BIT</code>, <code>device</code> <strong class=\"purple\">must</strong> support at least one queue family with the <code>VK_QUEUE_COMPUTE_BIT</code> capability",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateShadersEXT-stage-09671",
          "text": "If the <code>stage</code> member of any element of <code>pCreateInfos</code> is <code>VK_SHADER_STAGE_TASK_BIT_EXT</code>, <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>, <code>VK_SHADER_STAGE_VERTEX_BIT</code>, <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code>, <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>, <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>, or <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>, <code>device</code> <strong class=\"purple\">must</strong> support at least one queue family with the <code>VK_QUEUE_GRAPHICS_BIT</code> capability",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateShadersEXT-None-08400",
          "text": "The <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateShadersEXT-pCreateInfos-08402",
          "text": "If the <code>flags</code> member of any element of <code>pCreateInfos</code> includes <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code>, the <code>flags</code> member of all other elements of <code>pCreateInfos</code> whose <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>, <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>, or <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> <strong class=\"purple\">must</strong> also include <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateShadersEXT-pCreateInfos-08403",
          "text": "If the <code>flags</code> member of any element of <code>pCreateInfos</code> includes <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code>, the <code>flags</code> member of all other elements of <code>pCreateInfos</code> whose <code>stage</code> is <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> <strong class=\"purple\">must</strong> also include <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateShadersEXT-pCreateInfos-08404",
          "text": "If the <code>flags</code> member of any element of <code>pCreateInfos</code> whose <code>stage</code> is <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> includes <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code>, there <strong class=\"purple\">must</strong> be no member of <code>pCreateInfos</code> whose <code>stage</code> is <code>VK_SHADER_STAGE_VERTEX_BIT</code> and whose <code>flags</code> member includes <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateShadersEXT-pCreateInfos-08405",
          "text": "If there is any element of <code>pCreateInfos</code> whose <code>stage</code> is <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> and whose <code>flags</code> member includes both <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> and <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code>, there <strong class=\"purple\">must</strong> be no element of <code>pCreateInfos</code> whose <code>stage</code> is <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> and whose <code>flags</code> member includes <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateShadersEXT-pCreateInfos-08409",
          "text": "For each element of <code>pCreateInfos</code> whose <code>flags</code> member includes <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code>, if there is any other element of <code>pCreateInfos</code> whose <code>stage</code> is logically later than the <code>stage</code> of the former and whose <code>flags</code> member also includes <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code>, the <code>nextStage</code> of the former <strong class=\"purple\">must</strong> be equal to the <code>stage</code> of the element with the logically earliest <code>stage</code> following the <code>stage</code> of the former whose <code>flags</code> member also includes <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateShadersEXT-pCreateInfos-08410",
          "text": "The <code>stage</code> member of each element of <code>pCreateInfos</code> whose <code>flags</code> member includes <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateShadersEXT-pCreateInfos-08411",
          "text": "The <code>codeType</code> member of all elements of <code>pCreateInfos</code> whose <code>flags</code> member includes <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> <strong class=\"purple\">must</strong> be the same",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateShadersEXT-pCreateInfos-08867",
          "text": "If <code>pCreateInfos</code> contains elements with both <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> and <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>, both elements' <code>flags</code> include <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code>, both elements' <code>codeType</code> is <code>VK_SHADER_CODE_TYPE_SPIRV_EXT</code>, and the <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> stage&#8217;s <code>pCode</code> contains an <code>OpExecutionMode</code> instruction specifying the type of subdivision, it <strong class=\"purple\">must</strong> match the subdivision type specified in the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateShadersEXT-pCreateInfos-08868",
          "text": "If <code>pCreateInfos</code> contains elements with both <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> and <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>, both elements' <code>flags</code> include <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code>, both elements' <code>codeType</code> is <code>VK_SHADER_CODE_TYPE_SPIRV_EXT</code>, and the <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> stage&#8217;s <code>pCode</code> contains an <code>OpExecutionMode</code> instruction specifying the orientation of triangles, it <strong class=\"purple\">must</strong> match the triangle orientation specified in the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateShadersEXT-pCreateInfos-08869",
          "text": "If <code>pCreateInfos</code> contains elements with both <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> and <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>, both elements' <code>flags</code> include <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code>, both elements' <code>codeType</code> is <code>VK_SHADER_CODE_TYPE_SPIRV_EXT</code>, and the <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> stage&#8217;s <code>pCode</code> contains an <code>OpExecutionMode</code> instruction specifying <code>PointMode</code>, the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> stage <strong class=\"purple\">must</strong> also contain an <code>OpExecutionMode</code> instruction specifying <code>PointMode</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateShadersEXT-pCreateInfos-08870",
          "text": "If <code>pCreateInfos</code> contains elements with both <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> and <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>, both elements' <code>flags</code> include <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code>, both elements' <code>codeType</code> is <code>VK_SHADER_CODE_TYPE_SPIRV_EXT</code>, and the <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> stage&#8217;s <code>pCode</code> contains an <code>OpExecutionMode</code> instruction specifying the spacing of segments on the edges of tessellated primitives, it <strong class=\"purple\">must</strong> match the segment spacing specified in the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateShadersEXT-pCreateInfos-08871",
          "text": "If <code>pCreateInfos</code> contains elements with both <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> and <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>, both elements' <code>flags</code> include <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code>, both elements' <code>codeType</code> is <code>VK_SHADER_CODE_TYPE_SPIRV_EXT</code>, and the <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> stage&#8217;s <code>pCode</code> contains an <code>OpExecutionMode</code> instruction specifying the output patch size, it <strong class=\"purple\">must</strong> match the output patch size specified in the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateShadersEXT-pCreateInfos-09632",
          "text": "If <code>pCreateInfos</code> contains a <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> with <code>codeType</code> of <code>VK_SHADER_CODE_TYPE_SPIRV_EXT</code> and <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> is not set, then the mesh shader&#8217;s entry point <strong class=\"purple\">must</strong> not declare a variable with a <code>DrawIndex</code> <code>BuiltIn</code> decoration",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateShadersEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateShadersEXT-pCreateInfos-parameter",
          "text": "<code>pCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> valid <a href=\"#VkShaderCreateInfoEXT\">VkShaderCreateInfoEXT</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateShadersEXT-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateShadersEXT-pShaders-parameter",
          "text": "<code>pShaders</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> <a href=\"#VkShaderEXT\">VkShaderEXT</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateShadersEXT-createInfoCount-arraylength",
          "text": "<code>createInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkShaderCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-codeSize-08735",
          "text": "If <code>codeType</code> is <code>VK_SHADER_CODE_TYPE_SPIRV_EXT</code>, <code>codeSize</code> <strong class=\"purple\">must</strong> be a multiple of 4",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-pCode-08736",
          "text": "If <code>codeType</code> is <code>VK_SHADER_CODE_TYPE_SPIRV_EXT</code>, <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-pCode-08737",
          "text": "If <code>codeType</code> is <code>VK_SHADER_CODE_TYPE_SPIRV_EXT</code>, <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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-pCode-08738",
          "text": "If <code>codeType</code> is <code>VK_SHADER_CODE_TYPE_SPIRV_EXT</code>, <code>pCode</code> <strong class=\"purple\">must</strong> declare the <code>Shader</code> capability for SPIR-V code",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-pCode-08739",
          "text": "If <code>codeType</code> is <code>VK_SHADER_CODE_TYPE_SPIRV_EXT</code>, <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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-pCode-08740",
          "text": "If <code>codeType</code> is <code>VK_SHADER_CODE_TYPE_SPIRV_EXT</code>, and <code>pCode</code> declares any of the capabilities listed in the <a href=\"#spirvenv-capabilities-table\">SPIR-V Environment</a> appendix, one of the corresponding requirements <strong class=\"purple\">must</strong> be satisfied",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-pCode-08741",
          "text": "If <code>codeType</code> is <code>VK_SHADER_CODE_TYPE_SPIRV_EXT</code>, <code>pCode</code> <strong class=\"purple\">must</strong> not declare any SPIR-V extension that is not supported by the API, as described by the <a href=\"#spirvenv-extensions\">Extension</a> section of the <a href=\"#spirvenv-capabilities\">SPIR-V Environment</a> appendix",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-pCode-08742",
          "text": "If <code>codeType</code> is <code>VK_SHADER_CODE_TYPE_SPIRV_EXT</code>, and <code>pCode</code> declares any of the SPIR-V extensions listed in the <a href=\"#spirvenv-extensions-table\">SPIR-V Environment</a> appendix, one of the corresponding requirements <strong class=\"purple\">must</strong> be satisfied",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-flags-08412",
          "text": "If <code>stage</code> is not <code>VK_SHADER_STAGE_TASK_BIT_EXT</code>, <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>, <code>VK_SHADER_STAGE_VERTEX_BIT</code>, <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code>, <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>, <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>, or <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-flags-08486",
          "text": "If <code>stage</code> is not <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-flags-08487",
          "text": "If the <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-flags-08488",
          "text": "If <code>stage</code> is not <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-flags-08489",
          "text": "If the <a href=\"#features-fragmentDensityMap\"><code>fragmentDensityMap</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-flags-09404",
          "text": "If <code>flags</code> includes <code>VK_SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT</code>, the <a href=\"#features-subgroupSizeControl\"><code>subgroupSizeControl</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-flags-09405",
          "text": "If <code>flags</code> includes <code>VK_SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT</code>, the <a href=\"#features-computeFullSubgroups\"><code>computeFullSubgroups</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-flags-11005",
          "text": "If <code>flags</code> includes <code>VK_SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT</code>, then the <a href=\"#features-deviceGeneratedCommandsEXT\"><code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-flags-11006",
          "text": "If <code>flags</code> includes <code>VK_SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT</code>, then the identified entry point <strong class=\"purple\">must</strong> not specify <code>Xfb</code> execution mode",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-flags-08992",
          "text": "If <code>flags</code> includes <code>VK_SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT</code>, <code>stage</code> <strong class=\"purple\">must</strong> be one of <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>, <code>VK_SHADER_STAGE_TASK_BIT_EXT</code>, or <code>VK_SHADER_STAGE_COMPUTE_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-flags-08485",
          "text": "If <code>stage</code> is not <code>VK_SHADER_STAGE_COMPUTE_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_SHADER_CREATE_DISPATCH_BASE_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-flags-08414",
          "text": "If <code>stage</code> is not <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-flags-08416",
          "text": "If <code>flags</code> includes both <code>VK_SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT</code> and <code>VK_SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT</code>, the local workgroup size in the X dimension of the shader <strong class=\"purple\">must</strong> be a multiple of <a href=\"#limits-maxSubgroupSize\"><code>maxSubgroupSize</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-flags-08417",
          "text": "If <code>flags</code> includes <code>VK_SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT</code> but not <code>VK_SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT</code> and no <a href=\"#VkShaderRequiredSubgroupSizeCreateInfoEXT\">VkShaderRequiredSubgroupSizeCreateInfoEXT</a> structure is included in the <code>pNext</code> chain, the local workgroup size in the X dimension of the shader <strong class=\"purple\">must</strong> be a multiple of <a href=\"#limits-subgroupSize\"><code>subgroupSize</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-stage-08418",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-stage-08419",
          "text": "If the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-stage-08420",
          "text": "If the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-stage-08421",
          "text": "If the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_STAGE_TASK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-stage-08422",
          "text": "If the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-stage-08425",
          "text": "<code>stage</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-stage-08426",
          "text": "<code>stage</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-nextStage-08427",
          "text": "If <code>stage</code> is <code>VK_SHADER_STAGE_VERTEX_BIT</code>, <code>nextStage</code> <strong class=\"purple\">must</strong> not include any bits other than <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code>, <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>, and <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-nextStage-08428",
          "text": "If the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is not enabled, <code>nextStage</code> <strong class=\"purple\">must</strong> not include <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> or <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-nextStage-08429",
          "text": "If the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is not enabled, <code>nextStage</code> <strong class=\"purple\">must</strong> not include <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-nextStage-08430",
          "text": "If <code>stage</code> is <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code>, <code>nextStage</code> <strong class=\"purple\">must</strong> not include any bits other than <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-nextStage-08431",
          "text": "If <code>stage</code> is <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>, <code>nextStage</code> <strong class=\"purple\">must</strong> not include any bits other than <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> and <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-nextStage-08433",
          "text": "If <code>stage</code> is <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>, <code>nextStage</code> <strong class=\"purple\">must</strong> not include any bits other than <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-nextStage-08434",
          "text": "If <code>stage</code> is <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> or <code>VK_SHADER_STAGE_COMPUTE_BIT</code>, <code>nextStage</code> <strong class=\"purple\">must</strong> be 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-nextStage-08435",
          "text": "If <code>stage</code> is <code>VK_SHADER_STAGE_TASK_BIT_EXT</code>, <code>nextStage</code> <strong class=\"purple\">must</strong> not include any bits other than <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-nextStage-08436",
          "text": "If <code>stage</code> is <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>, <code>nextStage</code> <strong class=\"purple\">must</strong> not include any bits other than <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-pName-08440",
          "text": "If <code>codeType</code> is <code>VK_SHADER_CODE_TYPE_SPIRV_EXT</code>, <code>pName</code> <strong class=\"purple\">must</strong> be the name of an <code>OpEntryPoint</code> in <code>pCode</code> with an execution model that matches <code>stage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-pCode-08492",
          "text": "If <code>codeType</code> is <code>VK_SHADER_CODE_TYPE_BINARY_EXT</code>, <code>pCode</code> <strong class=\"purple\">must</strong> be aligned to <code>16</code> bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-pCode-08493",
          "text": "If <code>codeType</code> is <code>VK_SHADER_CODE_TYPE_SPIRV_EXT</code>, <code>pCode</code> <strong class=\"purple\">must</strong> be aligned to <code>4</code> bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-pCode-08448",
          "text": "If <code>codeType</code> is <code>VK_SHADER_CODE_TYPE_SPIRV_EXT</code>, and 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-pCode-08449",
          "text": "If <code>codeType</code> is <code>VK_SHADER_CODE_TYPE_SPIRV_EXT</code>, and 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-pCode-08450",
          "text": "If <code>codeType</code> is <code>VK_SHADER_CODE_TYPE_SPIRV_EXT</code>, and the identified entry point includes variables in its interface that are declared with the <code>ClipDistance</code> <code>BuiltIn</code> decoration and variables in its interface that are declared with the <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-pCode-08451",
          "text": "If <code>codeType</code> is <code>VK_SHADER_CODE_TYPE_SPIRV_EXT</code>, and 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-pCode-08452",
          "text": "If <code>codeType</code> is <code>VK_SHADER_CODE_TYPE_SPIRV_EXT</code>, and <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-pCode-08453",
          "text": "If <code>codeType</code> is <code>VK_SHADER_CODE_TYPE_SPIRV_EXT</code>, and <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 specifying 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-pCode-08454",
          "text": "If <code>codeType</code> is <code>VK_SHADER_CODE_TYPE_SPIRV_EXT</code>, and <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 specifying a maximum output vertex count that is greater than <code>0</code> and less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxGeometryOutputVertices</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-pCode-08455",
          "text": "If <code>codeType</code> is <code>VK_SHADER_CODE_TYPE_SPIRV_EXT</code>, and <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 specifying an invocation count that is greater than <code>0</code> and less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxGeometryShaderInvocations</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-pCode-08456",
          "text": "If <code>codeType</code> is <code>VK_SHADER_CODE_TYPE_SPIRV_EXT</code>, and <code>stage</code> is a <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader stage</a>, 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-pCode-08457",
          "text": "If <code>codeType</code> is <code>VK_SHADER_CODE_TYPE_SPIRV_EXT</code>, and <code>stage</code> is a <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader stage</a>, 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-pCode-08458",
          "text": "If <code>codeType</code> is <code>VK_SHADER_CODE_TYPE_SPIRV_EXT</code>, and <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-pCode-08459",
          "text": "If <code>codeType</code> is <code>VK_SHADER_CODE_TYPE_SPIRV_EXT</code>, and <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, all execution paths that are not exclusive to helper invocations <strong class=\"purple\">must</strong> either discard the fragment, or write or initialize the value of <code>FragDepth</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-pCode-08460",
          "text": "If <code>codeType</code> is <code>VK_SHADER_CODE_TYPE_SPIRV_EXT</code>, the shader code in <code>pCode</code> <strong class=\"purple\">must</strong> be valid as described by the <a href=\"#spirv-spec\">Khronos SPIR-V Specification</a> after applying the specializations provided in <code>pSpecializationInfo</code>, if any, and then converting all specialization constants into fixed constants",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-codeType-08872",
          "text": "If <code>codeType</code> is <code>VK_SHADER_CODE_TYPE_SPIRV_EXT</code>, and <code>stage</code> is <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>, <code>pCode</code> <strong class=\"purple\">must</strong> contain an <code>OpExecutionMode</code> instruction specifying the type of subdivision",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-codeType-08873",
          "text": "If <code>codeType</code> is <code>VK_SHADER_CODE_TYPE_SPIRV_EXT</code>, and <code>stage</code> is <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>, <code>pCode</code> <strong class=\"purple\">must</strong> contain an <code>OpExecutionMode</code> instruction specifying the orientation of triangles generated by the tessellator",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-codeType-08874",
          "text": "If <code>codeType</code> is <code>VK_SHADER_CODE_TYPE_SPIRV_EXT</code>, and <code>stage</code> is <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>, <code>pCode</code> <strong class=\"purple\">must</strong> contain an <code>OpExecutionMode</code> instruction specifying the spacing of segments on the edges of tessellated primitives",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-codeType-08875",
          "text": "If <code>codeType</code> is <code>VK_SHADER_CODE_TYPE_SPIRV_EXT</code>, and <code>stage</code> is <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>, <code>pCode</code> <strong class=\"purple\">must</strong> contain an <code>OpExecutionMode</code> instruction specifying the output patch size",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-pPushConstantRanges-10063",
          "text": "Any two elements of <code>pPushConstantRanges</code> <strong class=\"purple\">must</strong> not include the same stage in <code>stageFlags</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-codeType-10064",
          "text": "If <code>codeType</code> is <code>VK_SHADER_CODE_TYPE_SPIRV_EXT</code>, and if a push constant block is declared in a shader, then an element of <code>pPushConstantRanges</code>::<code>stageFlags</code> <strong class=\"purple\">must</strong> match pname::stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-codeType-10065",
          "text": "If <code>codeType</code> is <code>VK_SHADER_CODE_TYPE_SPIRV_EXT</code>, and if a push constant block is declared in a shader, the block must be contained inside the element of <code>pPushConstantRanges</code> that matches the stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-pNext-pNext",
          "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=\"#VkPipelineShaderStageRequiredSubgroupSizeCreateInfo\">VkPipelineShaderStageRequiredSubgroupSizeCreateInfo</a> or <a href=\"#VkValidationFeaturesEXT\">VkValidationFeaturesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderCreateFlagBitsEXT\">VkShaderCreateFlagBitsEXT</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-stage-parameter",
          "text": "<code>stage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-nextStage-parameter",
          "text": "<code>nextStage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-codeType-parameter",
          "text": "<code>codeType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderCodeTypeEXT\">VkShaderCodeTypeEXT</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-pCode-parameter",
          "text": "<code>pCode</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>codeSize</code> bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-pName-parameter",
          "text": "If <code>pName</code> is not <code>NULL</code>, <code>pName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-pSetLayouts-parameter",
          "text": "If <code>setLayoutCount</code> is not <code>0</code>, and <code>pSetLayouts</code> is not <code>NULL</code>, <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>setLayoutCount</code> valid <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-pPushConstantRanges-parameter",
          "text": "If <code>pushConstantRangeCount</code> is not <code>0</code>, and <code>pPushConstantRanges</code> is not <code>NULL</code>, <code>pPushConstantRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pushConstantRangeCount</code> valid <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-pSpecializationInfo-parameter",
          "text": "If <code>pSpecializationInfo</code> is not <code>NULL</code>, <code>pSpecializationInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSpecializationInfo\">VkSpecializationInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderCreateInfoEXT-codeSize-arraylength",
          "text": "<code>codeSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetShaderBinaryDataEXT": {
      "core": [
        {
          "vuid": "VUID-vkGetShaderBinaryDataEXT-None-08461",
          "text": "The <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetShaderBinaryDataEXT-None-08499",
          "text": "If <code>pData</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> be aligned to <code>16</code> bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetShaderBinaryDataEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetShaderBinaryDataEXT-shader-parameter",
          "text": "<code>shader</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderEXT\">VkShaderEXT</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetShaderBinaryDataEXT-pDataSize-parameter",
          "text": "<code>pDataSize</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>size_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetShaderBinaryDataEXT-pData-parameter",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetShaderBinaryDataEXT-shader-parent",
          "text": "<code>shader</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdBindShadersEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdBindShadersEXT-None-08462",
          "text": "The <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindShadersEXT-pStages-08463",
          "text": "Every element of <code>pStages</code> <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindShadersEXT-pStages-08464",
          "text": "<code>pStages</code> <strong class=\"purple\">must</strong> not contain <code>VK_SHADER_STAGE_ALL_GRAPHICS</code> or <code>VK_SHADER_STAGE_ALL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindShadersEXT-pStages-08465",
          "text": "<code>pStages</code> <strong class=\"purple\">must</strong> not contain <code>VK_SHADER_STAGE_RAYGEN_BIT_KHR</code>, <code>VK_SHADER_STAGE_ANY_HIT_BIT_KHR</code>, <code>VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR</code>, <code>VK_SHADER_STAGE_MISS_BIT_KHR</code>, <code>VK_SHADER_STAGE_INTERSECTION_BIT_KHR</code>, or <code>VK_SHADER_STAGE_CALLABLE_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindShadersEXT-pStages-08467",
          "text": "<code>pStages</code> <strong class=\"purple\">must</strong> not contain <code>VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindShadersEXT-pStages-08468",
          "text": "<code>pStages</code> <strong class=\"purple\">must</strong> not contain <code>VK_SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindShadersEXT-pShaders-08469",
          "text": "For each element of <code>pStages</code>, if <code>pShaders</code> is not <code>NULL</code>, and the element of the <code>pShaders</code> array with the same index is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, it <strong class=\"purple\">must</strong> have been created with a <code>stage</code> equal to the corresponding element of <code>pStages</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindShadersEXT-pShaders-08470",
          "text": "If <code>pStages</code> contains both <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> and <code>VK_SHADER_STAGE_VERTEX_BIT</code>, and <code>pShaders</code> is not <code>NULL</code>, and the same index in <code>pShaders</code> as <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> in <code>pStages</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the same index in <code>pShaders</code> as <code>VK_SHADER_STAGE_VERTEX_BIT</code> in <code>pStages</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindShadersEXT-pShaders-08471",
          "text": "If <code>pStages</code> contains both <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> and <code>VK_SHADER_STAGE_VERTEX_BIT</code>, and <code>pShaders</code> is not <code>NULL</code>, and the same index in <code>pShaders</code> as <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> in <code>pStages</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the same index in <code>pShaders</code> as <code>VK_SHADER_STAGE_VERTEX_BIT</code> in <code>pStages</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindShadersEXT-pShaders-08474",
          "text": "If the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is not enabled, and <code>pStages</code> contains <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> or <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>, and <code>pShaders</code> is not <code>NULL</code>, the same index or indices in <code>pShaders</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindShadersEXT-pShaders-08475",
          "text": "If the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is not enabled, and <code>pStages</code> contains <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>, and <code>pShaders</code> is not <code>NULL</code>, the same index in <code>pShaders</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindShadersEXT-pShaders-08490",
          "text": "If the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is not enabled, and <code>pStages</code> contains <code>VK_SHADER_STAGE_TASK_BIT_EXT</code>, and <code>pShaders</code> is not <code>NULL</code>, the same index in <code>pShaders</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindShadersEXT-pShaders-08491",
          "text": "If the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is not enabled, and <code>pStages</code> contains <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>, and <code>pShaders</code> is not <code>NULL</code>, the same index in <code>pShaders</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindShadersEXT-pShaders-08476",
          "text": "If <code>pStages</code> contains <code>VK_SHADER_STAGE_COMPUTE_BIT</code>, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindShadersEXT-pShaders-08477",
          "text": "If <code>pStages</code> contains <code>VK_SHADER_STAGE_VERTEX_BIT</code>, <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code>, <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>, <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>, or <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindShadersEXT-pShaders-08478",
          "text": "If <code>pStages</code> contains <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> or <code>VK_SHADER_STAGE_TASK_BIT_EXT</code>, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindShadersEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindShadersEXT-pStages-parameter",
          "text": "<code>pStages</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stageCount</code> valid <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindShadersEXT-pShaders-parameter",
          "text": "If <code>pShaders</code> is not <code>NULL</code>, <code>pShaders</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stageCount</code> valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <a href=\"#VkShaderEXT\">VkShaderEXT</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindShadersEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindShadersEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindShadersEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindShadersEXT-stageCount-arraylength",
          "text": "<code>stageCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindShadersEXT-commonparent",
          "text": "Both of <code>commandBuffer</code>, and the elements of <code>pShaders</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroyShaderEXT": {
      "core": [
        {
          "vuid": "VUID-vkDestroyShaderEXT-None-08481",
          "text": "The <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyShaderEXT-shader-08482",
          "text": "All submitted commands that refer to <code>shader</code> <strong class=\"purple\">must</strong> have completed execution",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyShaderEXT-pAllocator-08483",
          "text": "If <code>VkAllocationCallbacks</code> were provided when <code>shader</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyShaderEXT-pAllocator-08484",
          "text": "If no <code>VkAllocationCallbacks</code> were provided when <code>shader</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyShaderEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyShaderEXT-shader-parameter",
          "text": "If <code>shader</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>shader</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderEXT\">VkShaderEXT</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyShaderEXT-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyShaderEXT-shader-parent",
          "text": "If <code>shader</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateShaderModule": {
      "core": [
        {
          "vuid": "VUID-vkCreateShaderModule-pCreateInfo-06904",
          "text": "If <code>pCreateInfo</code> is not <code>NULL</code>, <code>pCreateInfo-&gt;pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of<div class=\"ulist\">\n<ul>\n<li>\n<p><a href=\"#VkShaderModuleValidationCacheCreateInfoEXT\">VkShaderModuleValidationCacheCreateInfoEXT</a></p>\n</li>\n<li>\n<p><a href=\"#VkValidationFeaturesEXT\">VkValidationFeaturesEXT</a></p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateShaderModule-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateShaderModule-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkShaderModuleCreateInfo\">VkShaderModuleCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateShaderModule-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateShaderModule-pShaderModule-parameter",
          "text": "<code>pShaderModule</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkShaderModule\">VkShaderModule</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkShaderModuleCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkShaderModuleCreateInfo-codeSize-08735",
          "text": "If pCode is a pointer to SPIR-V code, <code>codeSize</code> <strong class=\"purple\">must</strong> be a multiple of 4",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-08736",
          "text": "If pCode is a pointer to SPIR-V code, <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-08737",
          "text": "If pCode is a pointer to SPIR-V code, <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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-08738",
          "text": "If pCode is a pointer to SPIR-V code, <code>pCode</code> <strong class=\"purple\">must</strong> declare the <code>Shader</code> capability for SPIR-V code",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-08739",
          "text": "If pCode is a pointer to SPIR-V code, <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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-08740",
          "text": "If pCode is a pointer to SPIR-V code, and <code>pCode</code> declares any of the capabilities listed in the <a href=\"#spirvenv-capabilities-table\">SPIR-V Environment</a> appendix, one of the corresponding requirements <strong class=\"purple\">must</strong> be satisfied",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-08741",
          "text": "If pCode is a pointer to SPIR-V code, <code>pCode</code> <strong class=\"purple\">must</strong> not declare any SPIR-V extension that is not supported by the API, as described by the <a href=\"#spirvenv-extensions\">Extension</a> section of the <a href=\"#spirvenv-capabilities\">SPIR-V Environment</a> appendix",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-08742",
          "text": "If pCode is a pointer to SPIR-V code, and <code>pCode</code> declares any of the SPIR-V extensions listed in the <a href=\"#spirvenv-extensions-table\">SPIR-V Environment</a> appendix, one of the corresponding requirements <strong class=\"purple\">must</strong> be satisfied",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-07912",
          "text": "If the <a href=\"#VK_NV_glsl_shader\">VK_NV_glsl_shader</a> extension is not enabled, <code>pCode</code> <strong class=\"purple\">must</strong> be a pointer to SPIR-V code",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01379",
          "text": "If <code>pCode</code> is a pointer to GLSL code, it <strong class=\"purple\">must</strong> be valid GLSL code written to the <code>GL_KHR_vulkan_glsl</code> GLSL extension specification",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderModuleCreateInfo-codeSize-01085",
          "text": "<code>codeSize</code> <strong class=\"purple\">must</strong> be greater than 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderModuleCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderModuleCreateInfo-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-parameter",
          "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",
          "page": "vkspec"
        }
      ]
    },
    "VkShaderModuleValidationCacheCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkShaderModuleValidationCacheCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderModuleValidationCacheCreateInfoEXT-validationCache-parameter",
          "text": "<code>validationCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkValidationCacheEXT\">VkValidationCacheEXT</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroyShaderModule": {
      "core": [
        {
          "vuid": "VUID-vkDestroyShaderModule-shaderModule-01092",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyShaderModule-shaderModule-01093",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyShaderModule-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyShaderModule-shaderModule-parameter",
          "text": "If <code>shaderModule</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>shaderModule</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderModule\">VkShaderModule</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyShaderModule-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyShaderModule-shaderModule-parent",
          "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>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetShaderModuleIdentifierEXT": {
      "core": [
        {
          "vuid": "VUID-vkGetShaderModuleIdentifierEXT-shaderModuleIdentifier-06884",
          "text": "<a href=\"#features-shaderModuleIdentifier\"><code>shaderModuleIdentifier</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetShaderModuleIdentifierEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetShaderModuleIdentifierEXT-shaderModule-parameter",
          "text": "<code>shaderModule</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderModule\">VkShaderModule</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetShaderModuleIdentifierEXT-pIdentifier-parameter",
          "text": "<code>pIdentifier</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkShaderModuleIdentifierEXT\">VkShaderModuleIdentifierEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetShaderModuleIdentifierEXT-shaderModule-parent",
          "text": "<code>shaderModule</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetShaderModuleCreateInfoIdentifierEXT": {
      "core": [
        {
          "vuid": "VUID-vkGetShaderModuleCreateInfoIdentifierEXT-shaderModuleIdentifier-06885",
          "text": "<a href=\"#features-shaderModuleIdentifier\"><code>shaderModuleIdentifier</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetShaderModuleCreateInfoIdentifierEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetShaderModuleCreateInfoIdentifierEXT-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkShaderModuleCreateInfo\">VkShaderModuleCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetShaderModuleCreateInfoIdentifierEXT-pIdentifier-parameter",
          "text": "<code>pIdentifier</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkShaderModuleIdentifierEXT\">VkShaderModuleIdentifierEXT</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkShaderModuleIdentifierEXT": {
      "core": [
        {
          "vuid": "VUID-VkShaderModuleIdentifierEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SHADER_MODULE_IDENTIFIER_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShaderModuleIdentifierEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetPatchControlPointsEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetPatchControlPointsEXT-None-09422",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>The <a href=\"#features-extendedDynamicState2PatchControlPoints\"><code>extendedDynamicState2PatchControlPoints</code></a> feature is\nenabled</p>\n</li>\n<li>\n<p>The <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetPatchControlPointsEXT-patchControlPoints-04874",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetPatchControlPointsEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetPatchControlPointsEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetPatchControlPointsEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetPatchControlPointsEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR-pPropertyCount-parameter",
          "text": "<code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR-pProperties-parameter",
          "text": "If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <a href=\"#VkCooperativeMatrixPropertiesKHR\">VkCooperativeMatrixPropertiesKHR</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-pPropertyCount-parameter",
          "text": "<code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-pProperties-parameter",
          "text": "If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <a href=\"#VkCooperativeMatrixPropertiesNV\">VkCooperativeMatrixPropertiesNV</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkCooperativeMatrixPropertiesKHR": {
      "core": [
        {
          "vuid": "VUID-VkCooperativeMatrixPropertiesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCooperativeMatrixPropertiesKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkCooperativeMatrixPropertiesNV": {
      "core": [
        {
          "vuid": "VUID-VkCooperativeMatrixPropertiesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCooperativeMatrixPropertiesNV-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateValidationCacheEXT": {
      "core": [
        {
          "vuid": "VUID-vkCreateValidationCacheEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateValidationCacheEXT-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkValidationCacheCreateInfoEXT\">VkValidationCacheCreateInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateValidationCacheEXT-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateValidationCacheEXT-pValidationCache-parameter",
          "text": "<code>pValidationCache</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkValidationCacheEXT\">VkValidationCacheEXT</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkValidationCacheCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkValidationCacheCreateInfoEXT-initialDataSize-01534",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkValidationCacheCreateInfoEXT-initialDataSize-01535",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkValidationCacheCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkValidationCacheCreateInfoEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkValidationCacheCreateInfoEXT-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkValidationCacheCreateInfoEXT-pInitialData-parameter",
          "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",
          "page": "vkspec"
        }
      ]
    },
    "vkMergeValidationCachesEXT": {
      "core": [
        {
          "vuid": "VUID-vkMergeValidationCachesEXT-dstCache-01536",
          "text": "<code>dstCache</code> <strong class=\"purple\">must</strong> not appear in the list of source caches",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkMergeValidationCachesEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkMergeValidationCachesEXT-dstCache-parameter",
          "text": "<code>dstCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkValidationCacheEXT\">VkValidationCacheEXT</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkMergeValidationCachesEXT-pSrcCaches-parameter",
          "text": "<code>pSrcCaches</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>srcCacheCount</code> valid <a href=\"#VkValidationCacheEXT\">VkValidationCacheEXT</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkMergeValidationCachesEXT-srcCacheCount-arraylength",
          "text": "<code>srcCacheCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkMergeValidationCachesEXT-dstCache-parent",
          "text": "<code>dstCache</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkMergeValidationCachesEXT-pSrcCaches-parent",
          "text": "Each element of <code>pSrcCaches</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetValidationCacheDataEXT": {
      "core": [
        {
          "vuid": "VUID-vkGetValidationCacheDataEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetValidationCacheDataEXT-validationCache-parameter",
          "text": "<code>validationCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkValidationCacheEXT\">VkValidationCacheEXT</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetValidationCacheDataEXT-pDataSize-parameter",
          "text": "<code>pDataSize</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>size_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetValidationCacheDataEXT-pData-parameter",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetValidationCacheDataEXT-validationCache-parent",
          "text": "<code>validationCache</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroyValidationCacheEXT": {
      "core": [
        {
          "vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-01537",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-01538",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyValidationCacheEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-parameter",
          "text": "If <code>validationCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>validationCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkValidationCacheEXT\">VkValidationCacheEXT</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyValidationCacheEXT-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-parent",
          "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>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateCudaModuleNV": {
      "core": [
        {
          "vuid": "VUID-vkCreateCudaModuleNV-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateCudaModuleNV-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCudaModuleCreateInfoNV\">VkCudaModuleCreateInfoNV</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateCudaModuleNV-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateCudaModuleNV-pModule-parameter",
          "text": "<code>pModule</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkCudaModuleNV\">VkCudaModuleNV</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkCudaModuleCreateInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkCudaModuleCreateInfoNV-dataSize-09413",
          "text": "<code>dataSize</code> <strong class=\"purple\">must</strong> be the total size in bytes of the PTX files or binary cache passed to <code>pData</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCudaModuleCreateInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CUDA_MODULE_CREATE_INFO_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCudaModuleCreateInfoNV-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCudaModuleCreateInfoNV-pData-parameter",
          "text": "<code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCudaModuleCreateInfoNV-dataSize-arraylength",
          "text": "<code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateCudaFunctionNV": {
      "core": [
        {
          "vuid": "VUID-vkCreateCudaFunctionNV-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateCudaFunctionNV-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCudaFunctionCreateInfoNV\">VkCudaFunctionCreateInfoNV</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateCudaFunctionNV-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateCudaFunctionNV-pFunction-parameter",
          "text": "<code>pFunction</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkCudaFunctionNV\">VkCudaFunctionNV</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkCudaFunctionCreateInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkCudaFunctionCreateInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CUDA_FUNCTION_CREATE_INFO_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCudaFunctionCreateInfoNV-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCudaFunctionCreateInfoNV-module-parameter",
          "text": "<code>module</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCudaModuleNV\">VkCudaModuleNV</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCudaFunctionCreateInfoNV-pName-parameter",
          "text": "<code>pName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroyCudaFunctionNV": {
      "core": [
        {
          "vuid": "VUID-vkDestroyCudaFunctionNV-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyCudaFunctionNV-function-parameter",
          "text": "<code>function</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCudaFunctionNV\">VkCudaFunctionNV</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyCudaFunctionNV-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyCudaFunctionNV-function-parent",
          "text": "<code>function</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroyCudaModuleNV": {
      "core": [
        {
          "vuid": "VUID-vkDestroyCudaModuleNV-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyCudaModuleNV-module-parameter",
          "text": "<code>module</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCudaModuleNV\">VkCudaModuleNV</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyCudaModuleNV-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyCudaModuleNV-module-parent",
          "text": "<code>module</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetCudaModuleCacheNV": {
      "core": [
        {
          "vuid": "VUID-vkGetCudaModuleCacheNV-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetCudaModuleCacheNV-module-parameter",
          "text": "<code>module</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCudaModuleNV\">VkCudaModuleNV</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetCudaModuleCacheNV-pCacheSize-parameter",
          "text": "<code>pCacheSize</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>size_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetCudaModuleCacheNV-pCacheData-parameter",
          "text": "If the value referenced by <code>pCacheSize</code> is not <code>0</code>, and <code>pCacheData</code> is not <code>NULL</code>, <code>pCacheData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pCacheSize</code> bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetCudaModuleCacheNV-module-parent",
          "text": "<code>module</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateComputePipelines": {
      "core": [
        {
          "vuid": "VUID-vkCreateComputePipelines-device-09661",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> support at least one queue family with the <code>VK_QUEUE_COMPUTE_BIT</code> capability",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateComputePipelines-flags-00695",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateComputePipelines-flags-00696",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateComputePipelines-pipelineCache-02873",
          "text": "If <code>pipelineCache</code> was created with <code>VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT</code>, host access to <code>pipelineCache</code> <strong class=\"purple\">must</strong> be <a href=\"#fundamentals-threadingbehavior\">externally synchronized</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateComputePipelines-pNext-09616",
          "text": "If <a href=\"#VkPipelineBinaryInfoKHR\">VkPipelineBinaryInfoKHR</a>::<code>binaryCount</code> is not <code>0</code> for any element of <code>pCreateInfos</code>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateComputePipelines-pNext-09617",
          "text": "If a <a href=\"#VkPipelineCreateFlags2CreateInfoKHR\">VkPipelineCreateFlags2CreateInfoKHR</a> structure with the <code>VK_PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR</code> flag set is included in the <code>pNext</code> chain of any element of <code>pCreateInfos</code>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateComputePipelines-binaryCount-09620",
          "text": "If <a href=\"#VkPipelineBinaryInfoKHR\">VkPipelineBinaryInfoKHR</a>::<code>binaryCount</code> is not <code>0</code> for any element of <code>pCreateInfos</code>, <code>VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT</code> <strong class=\"purple\">must</strong> not be set in the <code>flags</code> of that element",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateComputePipelines-binaryCount-09621",
          "text": "If <a href=\"#VkPipelineBinaryInfoKHR\">VkPipelineBinaryInfoKHR</a>::<code>binaryCount</code> is not <code>0</code> for any element of <code>pCreateInfos</code>, <code>VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT</code> <strong class=\"purple\">must</strong> not be set in the <code>flags</code> of that element",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateComputePipelines-binaryCount-09622",
          "text": "If <a href=\"#VkPipelineBinaryInfoKHR\">VkPipelineBinaryInfoKHR</a>::<code>binaryCount</code> is not <code>0</code> for any element of <code>pCreateInfos</code>, <code>VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT</code> <strong class=\"purple\">must</strong> not be set in the <code>flags</code> of that element",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateComputePipelines-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateComputePipelines-pipelineCache-parameter",
          "text": "If <code>pipelineCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineCache\">VkPipelineCache</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateComputePipelines-pCreateInfos-parameter",
          "text": "<code>pCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> valid <a href=\"#VkComputePipelineCreateInfo\">VkComputePipelineCreateInfo</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateComputePipelines-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateComputePipelines-pPipelines-parameter",
          "text": "<code>pPipelines</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> <a href=\"#VkPipeline\">VkPipeline</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateComputePipelines-createInfoCount-arraylength",
          "text": "<code>createInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateComputePipelines-pipelineCache-parent",
          "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>",
          "page": "vkspec"
        }
      ]
    },
    "VkComputePipelineCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkComputePipelineCreateInfo-None-09497",
          "text": "If the <code>pNext</code> chain does not include a <a href=\"#VkPipelineCreateFlags2CreateInfoKHR\">VkPipelineCreateFlags2CreateInfoKHR</a> structure, <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineCreateFlagBits\">VkPipelineCreateFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineCreateInfo-flags-07984",
          "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 compute <code>VkPipeline</code> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineCreateInfo-flags-07985",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineCreateInfo-flags-07986",
          "text": "If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be -1 or <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineCreateInfo-layout-07987",
          "text": "If a push constant block is declared in a shader, a push constant range in <code>layout</code> <strong class=\"purple\">must</strong> match the shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineCreateInfo-layout-10069",
          "text": "If a push constant block is declared in a shader, the block must be contained inside the push constant range in <code>layout</code> that matches the stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineCreateInfo-layout-07988",
          "text": "If a <a href=\"#interfaces-resources\">resource variables</a> is declared in a shader, a descriptor slot in <code>layout</code> <strong class=\"purple\">must</strong> match the shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineCreateInfo-layout-07990",
          "text": "If a <a href=\"#interfaces-resources\">resource variables</a> is declared in a shader, and the descriptor type is not <code>VK_DESCRIPTOR_TYPE_MUTABLE_EXT</code>, a descriptor slot in <code>layout</code> <strong class=\"purple\">must</strong> match the descriptor type",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineCreateInfo-layout-07991",
          "text": "If a <a href=\"#interfaces-resources\">resource variables</a> is declared in a shader as an array, a descriptor slot in <code>layout</code> <strong class=\"purple\">must</strong> match the descriptor count",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineCreateInfo-flags-03365",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineCreateInfo-flags-03366",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineCreateInfo-flags-03367",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineCreateInfo-flags-03368",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineCreateInfo-flags-03369",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineCreateInfo-flags-03370",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineCreateInfo-flags-03576",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineCreateInfo-flags-04945",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineCreateInfo-flags-09007",
          "text": "If the <a href=\"#features-deviceGeneratedComputePipelines\"><code>VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV</code>::<code>deviceGeneratedComputePipelines</code></a> is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineCreateInfo-flags-09008",
          "text": "If <code>flags</code> includes <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a pointer to a valid instance of <a href=\"#VkComputePipelineIndirectBufferInfoNV\">VkComputePipelineIndirectBufferInfoNV</a> specifying the address where the pipeline&#8217;s metadata will be saved",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineCreateInfo-flags-11007",
          "text": "If <code>flags</code> includes <code>VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT</code>, then the <a href=\"#features-deviceGeneratedCommandsEXT\"><code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineCreateInfo-pipelineCreationCacheControl-02875",
          "text": "If the <a href=\"#features-pipelineCreationCacheControl\"><code>pipelineCreationCacheControl</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT</code> or <code>VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineCreateInfo-stage-00701",
          "text": "The <code>stage</code> member of <code>stage</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_STAGE_COMPUTE_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineCreateInfo-stage-00702",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineCreateInfo-layout-01687",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineCreateInfo-shaderEnqueue-09177",
          "text": "If <a href=\"#features-shaderEnqueue\"><code>shaderEnqueue</code></a> is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineCreateInfo-flags-09178",
          "text": "If <code>flags</code> does not include <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code>, the shader specified by <code>stage</code> <strong class=\"purple\">must</strong> not declare the <code>ShaderEnqueueAMDX</code> capability",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineCreateInfo-pipelineStageCreationFeedbackCount-06566",
          "text": "If <a href=\"#VkPipelineCreationFeedbackCreateInfo\">VkPipelineCreationFeedbackCreateInfo</a>::<code>pipelineStageCreationFeedbackCount</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineCreateInfo-flags-07367",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineCreateInfo-flags-07996",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineCreateInfo-pNext-pNext",
          "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=\"#VkComputePipelineIndirectBufferInfoNV\">VkComputePipelineIndirectBufferInfoNV</a>, <a href=\"#VkPipelineBinaryInfoKHR\">VkPipelineBinaryInfoKHR</a>, <a href=\"#VkPipelineCompilerControlCreateInfoAMD\">VkPipelineCompilerControlCreateInfoAMD</a>, <a href=\"#VkPipelineCreateFlags2CreateInfoKHR\">VkPipelineCreateFlags2CreateInfoKHR</a>, <a href=\"#VkPipelineCreationFeedbackCreateInfo\">VkPipelineCreationFeedbackCreateInfo</a>, <a href=\"#VkPipelineRobustnessCreateInfoEXT\">VkPipelineRobustnessCreateInfoEXT</a>, or <a href=\"#VkSubpassShadingPipelineCreateInfoHUAWEI\">VkSubpassShadingPipelineCreateInfoHUAWEI</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineCreateInfo-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineCreateInfo-stage-parameter",
          "text": "<code>stage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineCreateInfo-layout-parameter",
          "text": "<code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineCreateInfo-commonparent",
          "text": "Both of <code>basePipelineHandle</code>, and <code>layout</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineShaderStageCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00704",
          "text": "If the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00705",
          "text": "If the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02091",
          "text": "If the <a href=\"#features-meshShader\"><code>meshShaders</code></a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02092",
          "text": "If the <a href=\"#features-taskShader\"><code>taskShaders</code></a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_STAGE_TASK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-clustercullingShader-07813",
          "text": "If the <a href=\"#features-clustercullingShader\"><code>clustercullingShader</code></a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00706",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-pName-00707",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-maxClipDistances-00708",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-maxCullDistances-00709",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-maxCombinedClipAndCullDistances-00710",
          "text": "If the identified entry point includes variables in its interface that are declared with the <code>ClipDistance</code> <code>BuiltIn</code> decoration and variables in its interface that are declared with the <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-maxSampleMaskWords-00711",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00713",
          "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 specifying 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00714",
          "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 specifying a maximum output vertex count that is greater than <code>0</code> and less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxGeometryOutputVertices</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00715",
          "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 specifying an invocation count that is greater than <code>0</code> and less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxGeometryShaderInvocations</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02596",
          "text": "If <code>stage</code> is either <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>, 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02597",
          "text": "If <code>stage</code> is either <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>, 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-06685",
          "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, all execution paths that are not exclusive to helper invocations <strong class=\"purple\">must</strong> either discard the fragment, or write or initialize the value of <code>FragDepth</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-06686",
          "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, all execution paths that are not exclusive to helper invocations <strong class=\"purple\">must</strong> either discard the fragment, or write or initialize the value of <code>FragStencilRefEXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-flags-02784",
          "text": "If <code>flags</code> has the <code>VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT</code> flag set, the <a href=\"#features-subgroupSizeControl\"><code>subgroupSizeControl</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-flags-02785",
          "text": "If <code>flags</code> has the <code>VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT</code> flag set, the <a href=\"#features-computeFullSubgroups\"><code>computeFullSubgroups</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-flags-08988",
          "text": "If <code>flags</code> includes <code>VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT</code>, <code>stage</code> <strong class=\"purple\">must</strong> be one of <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>, <code>VK_SHADER_STAGE_TASK_BIT_EXT</code>, or <code>VK_SHADER_STAGE_COMPUTE_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-pNext-02754",
          "text": "If a <a href=\"#VkPipelineShaderStageRequiredSubgroupSizeCreateInfo\">VkPipelineShaderStageRequiredSubgroupSizeCreateInfo</a> structure is included in the <code>pNext</code> chain, <code>flags</code> <strong class=\"purple\">must</strong> not have the <code>VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT</code> flag set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-pNext-02755",
          "text": "If a <a href=\"#VkPipelineShaderStageRequiredSubgroupSizeCreateInfo\">VkPipelineShaderStageRequiredSubgroupSizeCreateInfo</a> structure is included in the <code>pNext</code> chain, the <a href=\"#features-subgroupSizeControl\"><code>subgroupSizeControl</code></a> feature <strong class=\"purple\">must</strong> be enabled, and <code>stage</code> <strong class=\"purple\">must</strong> be a valid bit specified in <a href=\"#limits-requiredSubgroupSizeStages\"><code>requiredSubgroupSizeStages</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-pNext-02756",
          "text": "If a <a href=\"#VkPipelineShaderStageRequiredSubgroupSizeCreateInfo\">VkPipelineShaderStageRequiredSubgroupSizeCreateInfo</a> structure     is included in the <code>pNext</code> chain and <code>stage</code> is     <code>VK_SHADER_STAGE_COMPUTE_BIT</code>, <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>, or <code>VK_SHADER_STAGE_TASK_BIT_EXT</code>,     the local workgroup size of the shader <strong class=\"purple\">must</strong> be less than or equal to     the product of     <a href=\"#VkPipelineShaderStageRequiredSubgroupSizeCreateInfo\">VkPipelineShaderStageRequiredSubgroupSizeCreateInfo</a>::<code>requiredSubgroupSize</code>     and <a href=\"#limits-maxComputeWorkgroupSubgroups\"><code>maxComputeWorkgroupSubgroups</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-pNext-02757",
          "text": "If a <a href=\"#VkPipelineShaderStageRequiredSubgroupSizeCreateInfo\">VkPipelineShaderStageRequiredSubgroupSizeCreateInfo</a> structure is included in the <code>pNext</code> chain, and <code>flags</code> has the <code>VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT</code> flag set, the local workgroup size in the X dimension of the pipeline <strong class=\"purple\">must</strong> be a multiple of <a href=\"#VkPipelineShaderStageRequiredSubgroupSizeCreateInfo\">VkPipelineShaderStageRequiredSubgroupSizeCreateInfo</a>::<code>requiredSubgroupSize</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-flags-02758",
          "text": "If <code>flags</code> has both the <code>VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT</code> and <code>VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT</code> flags set, the local workgroup size in the X dimension of the pipeline <strong class=\"purple\">must</strong> be a multiple of <a href=\"#limits-maxSubgroupSize\"><code>maxSubgroupSize</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-flags-02759",
          "text": "If <code>flags</code> has the <code>VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT</code> flag set and <code>flags</code> does not have the <code>VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT</code> flag set and no <a href=\"#VkPipelineShaderStageRequiredSubgroupSizeCreateInfo\">VkPipelineShaderStageRequiredSubgroupSizeCreateInfo</a> structure is included in the <code>pNext</code> chain, the local workgroup size in the X dimension of the pipeline <strong class=\"purple\">must</strong> be a multiple of <a href=\"#limits-subgroupSize\"><code>subgroupSize</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-module-08987",
          "text": "If <code>module</code> uses the <code>OpTypeCooperativeMatrixKHR</code> instruction with a <code>Scope</code> equal to <code>Subgroup</code>, then the local workgroup size in the X dimension of the pipeline <strong class=\"purple\">must</strong> be a multiple of <a href=\"#limits-subgroupSize\"><code>subgroupSize</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-08771",
          "text": "If a shader module identifier is not specified for this <code>stage</code>, <code>module</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderModule\">VkShaderModule</a> , or the <code>pNext</code> chain of the parent <code>Vk*CreateInfo</code> structure <strong class=\"purple\">must</strong> set <a href=\"#VkPipelineBinaryInfoKHR\">VkPipelineBinaryInfoKHR</a>::<code>binaryCount</code> to a value greater than <code>0</code>, if none of the following features are enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p><a href=\"#features-graphicsPipelineLibrary\"><code>graphicsPipelineLibrary</code></a></p>\n</li>\n<li>\n<p><a href=\"#features-maintenance5\"><code>maintenance5</code></a></p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-06845",
          "text": "If a shader module identifier is not specified for this <code>stage</code>, <code>module</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderModule\">VkShaderModule</a>, or there <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderModuleCreateInfo\">VkShaderModuleCreateInfo</a> structure in the <code>pNext</code> chain , or the <code>pNext</code> chain of the parent <code>Vk*CreateInfo</code> structure <strong class=\"purple\">must</strong> set <a href=\"#VkPipelineBinaryInfoKHR\">VkPipelineBinaryInfoKHR</a>::<code>binaryCount</code> to a value greater than <code>0</code>,",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-06844",
          "text": "If a shader module identifier is specified for this <code>stage</code>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> not include a <a href=\"#VkShaderModuleCreateInfo\">VkShaderModuleCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-06848",
          "text": "If a shader module identifier is specified for this <code>stage</code>, <code>module</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-pSpecializationInfo-06849",
          "text": "If a shader module identifier is not specified, the shader code used by the pipeline <strong class=\"purple\">must</strong> be valid as described by the <a href=\"#spirv-spec\">Khronos SPIR-V Specification</a> after applying the specializations provided in <code>pSpecializationInfo</code>, if any, and then converting all specialization constants into fixed constants",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-pNext-pNext",
          "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=\"#VkDebugUtilsObjectNameInfoEXT\">VkDebugUtilsObjectNameInfoEXT</a>, <a href=\"#VkPipelineRobustnessCreateInfoEXT\">VkPipelineRobustnessCreateInfoEXT</a>, <a href=\"#VkPipelineShaderStageModuleIdentifierCreateInfoEXT\">VkPipelineShaderStageModuleIdentifierCreateInfoEXT</a>, <a href=\"#VkPipelineShaderStageNodeCreateInfoAMDX\">VkPipelineShaderStageNodeCreateInfoAMDX</a>, <a href=\"#VkPipelineShaderStageRequiredSubgroupSizeCreateInfo\">VkPipelineShaderStageRequiredSubgroupSizeCreateInfo</a>, <a href=\"#VkShaderModuleCreateInfo\">VkShaderModuleCreateInfo</a>, or <a href=\"#VkShaderModuleValidationCacheCreateInfoEXT\">VkShaderModuleValidationCacheCreateInfoEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineShaderStageCreateFlagBits\">VkPipelineShaderStageCreateFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-parameter",
          "text": "<code>stage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-module-parameter",
          "text": "If <code>module</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>module</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderModule\">VkShaderModule</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-pName-parameter",
          "text": "<code>pName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageCreateInfo-pSpecializationInfo-parameter",
          "text": "If <code>pSpecializationInfo</code> is not <code>NULL</code>, <code>pSpecializationInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSpecializationInfo\">VkSpecializationInfo</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineShaderStageRequiredSubgroupSizeCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfo-requiredSubgroupSize-02760",
          "text": "<code>requiredSubgroupSize</code> <strong class=\"purple\">must</strong> be a power-of-two integer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfo-requiredSubgroupSize-02761",
          "text": "<code>requiredSubgroupSize</code> <strong class=\"purple\">must</strong> be greater or equal to <a href=\"#limits-minSubgroupSize\"><code>minSubgroupSize</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfo-requiredSubgroupSize-02762",
          "text": "<code>requiredSubgroupSize</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxSubgroupSize\"><code>maxSubgroupSize</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkSubpassShadingPipelineCreateInfoHUAWEI": {
      "core": [
        {
          "vuid": "VUID-VkSubpassShadingPipelineCreateInfoHUAWEI-subpass-04946",
          "text": "<code>subpass</code> <strong class=\"purple\">must</strong> be created with <code>VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI</code> bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassShadingPipelineCreateInfoHUAWEI-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubpassShadingPipelineCreateInfoHUAWEI-renderPass-parameter",
          "text": "<code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRenderPass\">VkRenderPass</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI": {
      "core": [
        {
          "vuid": "VUID-vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI-renderpass-parameter",
          "text": "<code>renderpass</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRenderPass\">VkRenderPass</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI-pMaxWorkgroupSize-parameter",
          "text": "<code>pMaxWorkgroupSize</code> <strong class=\"purple\">must</strong> be a valid pointer to <a href=\"#VkExtent2D\">VkExtent2D</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI-renderpass-parent",
          "text": "<code>renderpass</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineRobustnessCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkPipelineRobustnessCreateInfoEXT-pipelineRobustness-06926",
          "text": "If the <a href=\"#features-pipelineRobustness\"><code>pipelineRobustness</code></a> feature is not enabled, <code>storageBuffers</code> <strong class=\"purple\">must</strong> be <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRobustnessCreateInfoEXT-pipelineRobustness-06927",
          "text": "If the <a href=\"#features-pipelineRobustness\"><code>pipelineRobustness</code></a> feature is not enabled, <code>uniformBuffers</code> <strong class=\"purple\">must</strong> be <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRobustnessCreateInfoEXT-pipelineRobustness-06928",
          "text": "If the <a href=\"#features-pipelineRobustness\"><code>pipelineRobustness</code></a> feature is not enabled, <code>vertexInputs</code> <strong class=\"purple\">must</strong> be <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRobustnessCreateInfoEXT-pipelineRobustness-06929",
          "text": "If the <a href=\"#features-pipelineRobustness\"><code>pipelineRobustness</code></a> feature is not enabled, <code>images</code> <strong class=\"purple\">must</strong> be <code>VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRobustnessCreateInfoEXT-robustImageAccess-06930",
          "text": "If the <a href=\"#features-robustImageAccess\"><code>robustImageAccess</code></a> feature is not supported, <code>images</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRobustnessCreateInfoEXT-robustBufferAccess2-06931",
          "text": "If the <a href=\"#features-robustBufferAccess2\"><code>robustBufferAccess2</code></a> feature is not supported, <code>storageBuffers</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRobustnessCreateInfoEXT-robustBufferAccess2-06932",
          "text": "If the <a href=\"#features-robustBufferAccess2\"><code>robustBufferAccess2</code></a> feature is not supported, <code>uniformBuffers</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRobustnessCreateInfoEXT-robustBufferAccess2-06933",
          "text": "If the <a href=\"#features-robustBufferAccess2\"><code>robustBufferAccess2</code></a> feature is not supported, <code>vertexInputs</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRobustnessCreateInfoEXT-robustImageAccess2-06934",
          "text": "If the <a href=\"#features-robustImageAccess2\"><code>robustImageAccess2</code></a> feature is not supported, <code>images</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRobustnessCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRobustnessCreateInfoEXT-storageBuffers-parameter",
          "text": "<code>storageBuffers</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineRobustnessBufferBehaviorEXT\">VkPipelineRobustnessBufferBehaviorEXT</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRobustnessCreateInfoEXT-uniformBuffers-parameter",
          "text": "<code>uniformBuffers</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineRobustnessBufferBehaviorEXT\">VkPipelineRobustnessBufferBehaviorEXT</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRobustnessCreateInfoEXT-vertexInputs-parameter",
          "text": "<code>vertexInputs</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineRobustnessBufferBehaviorEXT\">VkPipelineRobustnessBufferBehaviorEXT</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRobustnessCreateInfoEXT-images-parameter",
          "text": "<code>images</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineRobustnessImageBehaviorEXT\">VkPipelineRobustnessImageBehaviorEXT</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineShaderStageModuleIdentifierCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkPipelineShaderStageModuleIdentifierCreateInfoEXT-pNext-06850",
          "text": "If this structure is included in a <code>pNext</code> chain and <code>identifierSize</code> is not equal to 0, the <a href=\"#features-shaderModuleIdentifier\"><code>shaderModuleIdentifier</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageModuleIdentifierCreateInfoEXT-pNext-06851",
          "text": "If this struct is included in a <code>pNext</code> chain of <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a> and <code>identifierSize</code> is not equal to 0, the pipeline <strong class=\"purple\">must</strong> be created with the <code>VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT</code> flag set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageModuleIdentifierCreateInfoEXT-identifierSize-06852",
          "text": "<code>identifierSize</code> <strong class=\"purple\">must</strong> be less-or-equal to <code>VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageModuleIdentifierCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageModuleIdentifierCreateInfoEXT-pIdentifier-parameter",
          "text": "If <code>identifierSize</code> is not <code>0</code>, <code>pIdentifier</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>identifierSize</code> <code>uint8_t</code> values",
          "page": "vkspec"
        }
      ]
    },
    "VkComputePipelineIndirectBufferInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkComputePipelineIndirectBufferInfoNV-deviceGeneratedComputePipelines-09009",
          "text": "The <a href=\"#features-deviceGeneratedComputePipelines\"><code>VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV</code>::<code>deviceGeneratedComputePipelines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineIndirectBufferInfoNV-flags-09010",
          "text": "The pipeline creation flags in <a href=\"#VkComputePipelineCreateInfo\">VkComputePipelineCreateInfo</a>::<code>flags</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineIndirectBufferInfoNV-deviceAddress-09011",
          "text": "<code>deviceAddress</code> <strong class=\"purple\">must</strong> be aligned to the <a href=\"#VkMemoryRequirements2\">VkMemoryRequirements2</a>::<code>alignment</code>, as returned by <a href=\"#vkGetPipelineIndirectMemoryRequirementsNV\">vkGetPipelineIndirectMemoryRequirementsNV</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineIndirectBufferInfoNV-deviceAddress-09012",
          "text": "<code>deviceAddress</code> <strong class=\"purple\">must</strong> have been allocated from a buffer that was created with usage <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> and <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineIndirectBufferInfoNV-size-09013",
          "text": "<code>size</code> <strong class=\"purple\">must</strong> be greater than or equal to the <a href=\"#VkMemoryRequirements2\">VkMemoryRequirements2</a>::<code>size</code>, as returned by <a href=\"#vkGetPipelineIndirectMemoryRequirementsNV\">vkGetPipelineIndirectMemoryRequirementsNV</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineIndirectBufferInfoNV-pipelineDeviceAddressCaptureReplay-09014",
          "text": "If <code>pipelineDeviceAddressCaptureReplay</code> is non-zero then the <a href=\"#features-deviceGeneratedComputePipelines\"><code>VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV</code>::<code>deviceGeneratedComputeCaptureReplay</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineIndirectBufferInfoNV-pipelineDeviceAddressCaptureReplay-09015",
          "text": "If <code>pipelineDeviceAddressCaptureReplay</code> is non-zero then that address <strong class=\"purple\">must</strong> have been allocated with flag <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT</code> set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineIndirectBufferInfoNV-pipelineDeviceAddressCaptureReplay-09016",
          "text": "If <code>pipelineDeviceAddressCaptureReplay</code> is non-zero, the <code>pipeline</code> <strong class=\"purple\">must</strong> have been recreated for replay",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineIndirectBufferInfoNV-pipelineDeviceAddressCaptureReplay-09017",
          "text": "<code>pipelineDeviceAddressCaptureReplay</code> <strong class=\"purple\">must</strong> satisfy the <code>alignment</code> and <code>size</code> requirements similar to <code>deviceAddress</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComputePipelineIndirectBufferInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdUpdatePipelineIndirectBufferNV": {
      "core": [
        {
          "vuid": "VUID-vkCmdUpdatePipelineIndirectBufferNV-pipelineBindPoint-09018",
          "text": "<code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdUpdatePipelineIndirectBufferNV-pipeline-09019",
          "text": "<code>pipeline</code> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code> flag set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdUpdatePipelineIndirectBufferNV-pipeline-09020",
          "text": "<code>pipeline</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkComputePipelineIndirectBufferInfoNV\">VkComputePipelineIndirectBufferInfoNV</a> structure specifying a valid address where its metadata will be saved",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdUpdatePipelineIndirectBufferNV-deviceGeneratedComputePipelines-09021",
          "text": "The <a href=\"#features-deviceGeneratedComputePipelines\"><code>VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV</code>::<code>deviceGeneratedComputePipelines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdUpdatePipelineIndirectBufferNV-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdUpdatePipelineIndirectBufferNV-pipelineBindPoint-parameter",
          "text": "<code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdUpdatePipelineIndirectBufferNV-pipeline-parameter",
          "text": "<code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdUpdatePipelineIndirectBufferNV-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdUpdatePipelineIndirectBufferNV-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdUpdatePipelineIndirectBufferNV-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdUpdatePipelineIndirectBufferNV-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdUpdatePipelineIndirectBufferNV-commonparent",
          "text": "Both of <code>commandBuffer</code>, and <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateGraphicsPipelines": {
      "core": [
        {
          "vuid": "VUID-vkCreateGraphicsPipelines-device-09662",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> support at least one queue family with the <code>VK_QUEUE_GRAPHICS_BIT</code> capability",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateGraphicsPipelines-flags-00720",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateGraphicsPipelines-flags-00721",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateGraphicsPipelines-pipelineCache-02876",
          "text": "If <code>pipelineCache</code> was created with <code>VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT</code>, host access to <code>pipelineCache</code> <strong class=\"purple\">must</strong> be <a href=\"#fundamentals-threadingbehavior\">externally synchronized</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateGraphicsPipelines-pNext-09616",
          "text": "If <a href=\"#VkPipelineBinaryInfoKHR\">VkPipelineBinaryInfoKHR</a>::<code>binaryCount</code> is not <code>0</code> for any element of <code>pCreateInfos</code>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateGraphicsPipelines-pNext-09617",
          "text": "If a <a href=\"#VkPipelineCreateFlags2CreateInfoKHR\">VkPipelineCreateFlags2CreateInfoKHR</a> structure with the <code>VK_PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR</code> flag set is included in the <code>pNext</code> chain of any element of <code>pCreateInfos</code>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateGraphicsPipelines-binaryCount-09620",
          "text": "If <a href=\"#VkPipelineBinaryInfoKHR\">VkPipelineBinaryInfoKHR</a>::<code>binaryCount</code> is not <code>0</code> for any element of <code>pCreateInfos</code>, <code>VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT</code> <strong class=\"purple\">must</strong> not be set in the <code>flags</code> of that element",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateGraphicsPipelines-binaryCount-09621",
          "text": "If <a href=\"#VkPipelineBinaryInfoKHR\">VkPipelineBinaryInfoKHR</a>::<code>binaryCount</code> is not <code>0</code> for any element of <code>pCreateInfos</code>, <code>VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT</code> <strong class=\"purple\">must</strong> not be set in the <code>flags</code> of that element",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateGraphicsPipelines-binaryCount-09622",
          "text": "If <a href=\"#VkPipelineBinaryInfoKHR\">VkPipelineBinaryInfoKHR</a>::<code>binaryCount</code> is not <code>0</code> for any element of <code>pCreateInfos</code>, <code>VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT</code> <strong class=\"purple\">must</strong> not be set in the <code>flags</code> of that element",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateGraphicsPipelines-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateGraphicsPipelines-pipelineCache-parameter",
          "text": "If <code>pipelineCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineCache\">VkPipelineCache</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateGraphicsPipelines-pCreateInfos-parameter",
          "text": "<code>pCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> valid <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateGraphicsPipelines-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateGraphicsPipelines-pPipelines-parameter",
          "text": "<code>pPipelines</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> <a href=\"#VkPipeline\">VkPipeline</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateGraphicsPipelines-createInfoCount-arraylength",
          "text": "<code>createInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateGraphicsPipelines-pipelineCache-parent",
          "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>",
          "page": "vkspec"
        }
      ]
    },
    "VkGraphicsPipelineCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-None-09497",
          "text": "If the <code>pNext</code> chain does not include a <a href=\"#VkPipelineCreateFlags2CreateInfoKHR\">VkPipelineCreateFlags2CreateInfoKHR</a> structure, <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineCreateFlagBits\">VkPipelineCreateFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-07984",
          "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 graphics <code>VkPipeline</code> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-07985",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-07986",
          "text": "If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be -1 or <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-07987",
          "text": "If a push constant block is declared in a shader, a push constant range in <code>layout</code> <strong class=\"purple\">must</strong> match the shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-10069",
          "text": "If a push constant block is declared in a shader, the block must be contained inside the push constant range in <code>layout</code> that matches the stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-07988",
          "text": "If a <a href=\"#interfaces-resources\">resource variables</a> is declared in a shader, a descriptor slot in <code>layout</code> <strong class=\"purple\">must</strong> match the shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-07990",
          "text": "If a <a href=\"#interfaces-resources\">resource variables</a> is declared in a shader, and the descriptor type is not <code>VK_DESCRIPTOR_TYPE_MUTABLE_EXT</code>, a descriptor slot in <code>layout</code> <strong class=\"purple\">must</strong> match the descriptor type",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-07991",
          "text": "If a <a href=\"#interfaces-resources\">resource variables</a> is declared in a shader as an array, a descriptor slot in <code>layout</code> <strong class=\"purple\">must</strong> match the descriptor count",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-stage-02096",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> 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> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02095",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> 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_EXT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</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>)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-09631",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> and <code>pStages</code> contains both <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> and <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>, then the mesh shader&#8217;s entry point <strong class=\"purple\">must</strong> not declare a variable with a <code>DrawIndex</code> <code>BuiltIn</code> decoration",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-TaskNV-07063",
          "text": "The shader stages for <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> <strong class=\"purple\">must</strong> use either the <code>TaskNV</code> and <code>MeshNV</code> <code>Execution</code> <code>Model</code> or the <code>TaskEXT</code> and <code>MeshEXT</code> <code>Execution</code> <code>Model</code>, but <strong class=\"purple\">must</strong> not use both",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00729",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> and <code>pStages</code> includes a tessellation control shader stage, it <strong class=\"purple\">must</strong> include a tessellation evaluation shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00730",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> and <code>pStages</code> includes a tessellation evaluation shader stage, it <strong class=\"purple\">must</strong> include a tessellation control shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-09022",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> and <code>pStages</code> includes a tessellation control shader stage, and the <code><a href=\"#VK_EXT_extended_dynamic_state3\">VK_EXT_extended_dynamic_state3</a></code> extension is not enabled or the <code>VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT</code> dynamic state is not set, <code>pTessellationState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineTessellationStateCreateInfo\">VkPipelineTessellationStateCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pTessellationState-09023",
          "text": "If <code>pTessellationState</code> is not <code>NULL</code> it <strong class=\"purple\">must</strong> be a pointer to a valid <a href=\"#VkPipelineTessellationStateCreateInfo\">VkPipelineTessellationStateCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00732",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> and <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 specifying the type of subdivision in the pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00733",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> and <code>pStages</code> includes tessellation shader stages, and the shader code of both stages contain an <code>OpExecutionMode</code> instruction specifying the type of subdivision in the pipeline, they <strong class=\"purple\">must</strong> both specify the same subdivision mode",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00734",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> and <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 specifying the output patch size in the pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00735",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> and <code>pStages</code> includes tessellation shader stages, and the shader code of both contain an <code>OpExecutionMode</code> instruction specifying the out patch size in the pipeline, they <strong class=\"purple\">must</strong> both specify the same patch size",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-08888",
          "text": "If the pipeline is being created with <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> and <a href=\"#pipelines-graphics-subsets-vertex-input\">vertex input state</a> and <code>pStages</code> includes tessellation shader stages, and either <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY</code> dynamic state is not enabled or <a href=\"#limits-dynamicPrimitiveTopologyUnrestricted\"><code>dynamicPrimitiveTopologyUnrestricted</code></a> is <code>VK_FALSE</code>, the <code>topology</code> member of <code>pInputAssembly</code> <strong class=\"purple\">must</strong> be <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-topology-08889",
          "text": "If the pipeline is being created with <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> and <a href=\"#pipelines-graphics-subsets-vertex-input\">vertex input state</a> and the <code>topology</code> member of <code>pInputAssembly</code> is <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, and either <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY</code> dynamic state is not enabled or <a href=\"#limits-dynamicPrimitiveTopologyUnrestricted\"><code>dynamicPrimitiveTopologyUnrestricted</code></a> is <code>VK_FALSE</code>, then <code>pStages</code> <strong class=\"purple\">must</strong> include tessellation shader stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-TessellationEvaluation-07723",
          "text": "If the pipeline is being created with a <code>TessellationEvaluation</code> <code>Execution</code> <code>Model</code>, no <code>Geometry</code> <code>Execution</code> <code>Model</code>, uses the <code>PointMode</code> <code>Execution</code> <code>Mode</code>, and <a href=\"#features-shaderTessellationAndGeometryPointSize\"><code>shaderTessellationAndGeometryPointSize</code></a> is enabled, a <code>PointSize</code> decorated variable <strong class=\"purple\">must</strong> be written to if <a href=\"#features-maintenance5\"><code>maintenance5</code></a> is not enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-topology-08773",
          "text": "If the pipeline is being created with a <code>Vertex</code> <code>Execution</code> <code>Model</code> and no <code>TessellationEvaluation</code> or <code>Geometry</code> <code>Execution</code> <code>Model</code>, and the <code>topology</code> member of <code>pInputAssembly</code> is <code>VK_PRIMITIVE_TOPOLOGY_POINT_LIST</code>, and either <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY</code> dynamic state is not enabled or <a href=\"#limits-dynamicPrimitiveTopologyUnrestricted\"><code>dynamicPrimitiveTopologyUnrestricted</code></a> is <code>VK_FALSE</code>, a <code>PointSize</code> decorated variable <strong class=\"purple\">must</strong> be written to if <a href=\"#features-maintenance5\"><code>maintenance5</code></a> is not enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-maintenance5-08775",
          "text": "If <a href=\"#features-maintenance5\"><code>maintenance5</code></a> is enabled and a <code>PointSize</code> decorated variable is written to, all execution paths <strong class=\"purple\">must</strong> write to a <code>PointSize</code> decorated variable",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-TessellationEvaluation-07724",
          "text": "If the pipeline is being created with a <code>TessellationEvaluation</code> <code>Execution</code> <code>Model</code>, no <code>Geometry</code> <code>Execution</code> <code>Model</code>, uses the <code>PointMode</code> <code>Execution</code> <code>Mode</code>, and <a href=\"#features-shaderTessellationAndGeometryPointSize\"><code>shaderTessellationAndGeometryPointSize</code></a> is not enabled, a <code>PointSize</code> decorated variable <strong class=\"purple\">must</strong> not be written to",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-shaderTessellationAndGeometryPointSize-08776",
          "text": "If the pipeline is being created with a <code>Geometry</code> <code>Execution</code> <code>Model</code>, uses the <code>OutputPoints</code> <code>Execution</code> <code>Mode</code>, and <a href=\"#features-shaderTessellationAndGeometryPointSize\"><code>shaderTessellationAndGeometryPointSize</code></a> is enabled, a <code>PointSize</code> decorated variable <strong class=\"purple\">must</strong> be written to for every vertex emitted if <a href=\"#features-maintenance5\"><code>maintenance5</code></a> is not enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-Geometry-07726",
          "text": "If the pipeline is being created with a <code>Geometry</code> <code>Execution</code> <code>Model</code>, uses the <code>OutputPoints</code> <code>Execution</code> <code>Mode</code>, and <a href=\"#features-shaderTessellationAndGeometryPointSize\"><code>shaderTessellationAndGeometryPointSize</code></a> is not enabled, a <code>PointSize</code> decorated variable <strong class=\"purple\">must</strong> not be written to",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00738",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> and <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 specifying an input primitive type that is <a href=\"#shaders-geometry-execution\">compatible</a> with the primitive topology specified in <code>pInputAssembly</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00739",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> and <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 specifying an input primitive type that is <a href=\"#shaders-geometry-execution\">compatible</a> with the primitive topology that is output by the tessellation stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00740",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> and <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a>, it includes both a fragment shader and a geometry shader, 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-PrimitiveId-06264",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, it includes a mesh shader and the fragment shader code reads from an input variable that is decorated with <code>PrimitiveId</code>, then the mesh shader code <strong class=\"purple\">must</strong> write to a matching output variable, decorated with <code>PrimitiveId</code>, in all execution paths",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06038",
          "text": "If <code>renderPass</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and the pipeline is being created with <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a> the fragment shader <strong class=\"purple\">must</strong> not read from any input attachment that is defined as <code>VK_ATTACHMENT_UNUSED</code> in <code>subpass</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00742",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> and multiple pre-rasterization shader stages are included in <code>pStages</code>, the shader code for the entry points identified by those <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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-None-04889",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> and <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a>, the fragment shader and last <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader stage</a> and any relevant state <strong class=\"purple\">must</strong> adhere to the pipeline linking rules described in the <a href=\"#interfaces\">Shader Interfaces</a> chapter",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06041",
          "text": "If <code>renderPass</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the pipeline is being created with <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, then for each color attachment in the subpass, if the <a href=\"#potential-format-features\">potential format features</a> of the format of the corresponding attachment description do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the <code>blendEnable</code> member of the corresponding element of the <code>pAttachments</code> member of <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-07609",
          "text": "If <code>renderPass</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the pipeline is being created with <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, the <code>pColorBlendState</code> pointer is not <code>NULL</code>, the <code>attachmentCount</code> member of <code>pColorBlendState</code> is not ignored, 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04130",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, and <code>pViewportState-&gt;pViewports</code> is not dynamic, then <code>pViewportState-&gt;pViewports</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pViewportState-&gt;viewportCount</code> valid <code>VkViewport</code> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04131",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, and <code>pViewportState-&gt;pScissors</code> is not dynamic, then <code>pViewportState-&gt;pScissors</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pViewportState-&gt;scissorCount</code> <code>VkRect2D</code> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00749",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, and the <a href=\"#features-wideLines\"><code>wideLines</code></a> 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-09024",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, and the <code>VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE</code> dynamic state is enabled or the <code>rasterizerDiscardEnable</code> member of <code>pRasterizationState</code> is <code>VK_FALSE</code>, and <a href=\"#pipelines-pViewportState-null\">related dynamic state is not set</a>, <code>pViewportState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pViewportState-09025",
          "text": "If <code>pViewportState</code> is not <code>NULL</code> it <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pMultisampleState-09026",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, and the <code><a href=\"#VK_EXT_extended_dynamic_state3\">VK_EXT_extended_dynamic_state3</a></code> extension is not enabled or any of the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code>, <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code>, or <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic states is not set, or <a href=\"#features-alphaToOne\">alphaToOne</a> is enabled on the device and <code>VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT</code> is not set, <code>pMultisampleState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pMultisampleState-09027",
          "text": "If <code>pMultisampleState</code> is not <code>NULL</code> it <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-alphaToCoverageEnable-08891",
          "text": "If the pipeline is being created with <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a>, the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a>::<code>alphaToCoverageEnable</code> is not ignored and is <code>VK_TRUE</code>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-09028",
          "text": "If <code>renderPass</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the pipeline is being created with <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a>, and <code>subpass</code> uses a depth/stencil attachment, and <a href=\"#pipelines-pDepthStencilState-null\">related dynamic state is not set</a>, <code>pDepthStencilState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineDepthStencilStateCreateInfo\">VkPipelineDepthStencilStateCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDepthStencilState-09029",
          "text": "If <code>pDepthStencilState</code> is not <code>NULL</code> it <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineDepthStencilStateCreateInfo\">VkPipelineDepthStencilStateCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-09030",
          "text": "If <code>renderPass</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the pipeline is being created with <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, and <code>subpass</code> uses color attachments, and <a href=\"#pipelines-pColorBlendState-null\">related dynamic state is not set</a>, <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineColorBlendStateCreateInfo\">VkPipelineColorBlendStateCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00754",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, the <a href=\"#features-depthBiasClamp\"><code>depthBiasClamp</code></a> 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-02510",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a>, 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07610",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a> or <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, and <code>rasterizationSamples</code> and <code>sampleLocationsInfo</code> are not dynamic, and <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> included in the <code>pNext</code> chain of <code>pMultisampleState</code> is <code>VK_TRUE</code>, <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling <code>rasterizationSamples</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07611",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a> or <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, and <code>rasterizationSamples</code> and <code>sampleLocationsInfo</code> are not dynamic, and <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> the included in the <code>pNext</code> chain of <code>pMultisampleState</code> is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> is used, <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07612",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a> or <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, and <code>rasterizationSamples</code> and <code>sampleLocationsInfo</code> are not dynamic, and <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> included in the <code>pNext</code> chain of <code>pMultisampleState</code> is <code>VK_TRUE</code> or <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> is used, <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-sampleLocationsEnable-01524",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a>, and the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a> structure included in the <code>pNext</code> chain of <code>pMultisampleState</code> is <code>VK_TRUE</code>, the fragment shader code <strong class=\"purple\">must</strong> not statically use the extended instruction <code>InterpolateAtSample</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-multisampledRenderToSingleSampled-06853",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, and none of the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension, the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension, or the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature are enabled, <code>rasterizationSamples</code> is not dynamic, 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01505",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, and the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension is enabled, <code>rasterizationSamples</code> is not dynamic, 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06854",
          "text": "If <code>renderPass</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the <code><a href=\"#VK_EXT_multisampled_render_to_single_sampled\">VK_EXT_multisampled_render_to_single_sampled</a></code> extension is enabled, <code>rasterizationSamples</code> is not dynamic, and <code>subpass</code> has a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure included in the <a href=\"#VkSubpassDescription2\">VkSubpassDescription2</a>::<code>pNext</code> chain with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the <code>rasterizationSamples</code> member of <code>pMultisampleState</code> <strong class=\"purple\">must</strong> be equal to <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a>::<code>rasterizationSamples</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01411",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, <code>rasterizationSamples</code> is not dynamic, 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01412",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, <code>rasterizationSamples</code> is not dynamic, 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-coverageReductionMode-02722",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, the <code><a href=\"#VK_NV_coverage_reduction_mode\">VK_NV_coverage_reduction_mode</a></code> extension is enabled, and <code>rasterizationSamples</code> is not dynamic, the coverage reduction mode specified by <a href=\"#VkPipelineCoverageReductionStateCreateInfoNV\">VkPipelineCoverageReductionStateCreateInfoNV</a>::<code>coverageReductionMode</code>, the <code>rasterizationSamples</code> member of <code>pMultisampleState</code> and the sample counts for the color and depth/stencil attachments (if the subpass has them) <strong class=\"purple\">must</strong> be a valid combination returned by <code>vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00758",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, <code>rasterizationSamples</code> is not dynamic, and <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06046",
          "text": "If <code>renderPass</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>subpass</code> <strong class=\"purple\">must</strong> be a valid subpass within <code>renderPass</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06047",
          "text": "If <code>renderPass</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the pipeline is being created with <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, <code>subpass</code> viewMask is not <code>0</code>, and <code>multiviewTessellationShader</code> is not enabled, then <code>pStages</code> <strong class=\"purple\">must</strong> not include tessellation shaders",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06048",
          "text": "If <code>renderPass</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the pipeline is being created with <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, <code>subpass</code> viewMask is not <code>0</code>, and <code>multiviewGeometryShader</code> is not enabled, then <code>pStages</code> <strong class=\"purple\">must</strong> not include a geometry shader",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06050",
          "text": "If <code>renderPass</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and the pipeline is being created with <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, and <code>subpass</code> viewMask is not <code>0</code>, then all of the shaders in the pipeline <strong class=\"purple\">must</strong> not include variables decorated with the <code>Layer</code> built-in decoration in their interfaces",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-07064",
          "text": "If <code>renderPass</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the pipeline is being created with <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, <code>subpass</code> viewMask is not <code>0</code>, and <code>multiviewMeshShader</code> is not enabled, then <code>pStages</code> <strong class=\"purple\">must</strong> not include a mesh shader",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00764",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not contain the <code>VK_PIPELINE_CREATE_DISPATCH_BASE</code> flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-01565",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a> and an input attachment was referenced by an <code>aspectMask</code> at <code>renderPass</code> creation time, the fragment shader <strong class=\"purple\">must</strong> only read from the aspects that were specified for that input attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-01688",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01715",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, and no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code>, and the <code>viewportWScalingEnable</code> member of a <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a> structure, included in the <code>pNext</code> chain of <code>pViewportState</code>, is <code>VK_TRUE</code>, the <code>pViewportWScalings</code> member of the <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a> <strong class=\"purple\">must</strong> be a pointer to an array of <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> valid <a href=\"#VkViewportWScalingNV\">VkViewportWScalingNV</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04056",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, and no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV</code>, and if <code>pViewportState-&gt;pNext</code> chain includes a <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> structure, and if its <code>exclusiveScissorCount</code> member is not <code>0</code>, then its <code>pExclusiveScissors</code> member <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>exclusiveScissorCount</code> <a href=\"#VkRect2D\">VkRect2D</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07854",
          "text": "If <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV</code> is included in the <code>pDynamicStates</code> array then the implementation <strong class=\"purple\">must</strong> support at least <code>specVersion</code> <code>2</code> of the <code><a href=\"#VK_NV_scissor_exclusive\">VK_NV_scissor_exclusive</a></code> extension",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04057",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, and no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code>, and if <code>pViewportState-&gt;pNext</code> chain includes a <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a> structure, then its <code>pShadingRatePalettes</code> member <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> valid <a href=\"#VkShadingRatePaletteNV\">VkShadingRatePaletteNV</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04058",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, and no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT</code>, and if <code>pNext</code> chain includes a <a href=\"#VkPipelineDiscardRectangleStateCreateInfoEXT\">VkPipelineDiscardRectangleStateCreateInfoEXT</a> structure, and if its <code>discardRectangleCount</code> member is not <code>0</code>, then its <code>pDiscardRectangles</code> member <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>discardRectangleCount</code> <a href=\"#VkRect2D\">VkRect2D</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07855",
          "text": "If <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT</code> is included in the <code>pDynamicStates</code> array then the implementation <strong class=\"purple\">must</strong> support at least <code>specVersion</code> <code>2</code> of the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07856",
          "text": "If <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT</code> is included in the <code>pDynamicStates</code> array then the implementation <strong class=\"purple\">must</strong> support at least <code>specVersion</code> <code>2</code> of the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02097",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-vertex-input\">vertex input state</a>, and <code>pVertexInputState</code> is not dynamic, then <code>pVertexInputState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineVertexInputStateCreateInfo\">VkPipelineVertexInputStateCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-Input-07904",
          "text": "If the pipeline is being created with <a href=\"#pipelines-graphics-subsets-vertex-input\">vertex input state</a> and <code>pVertexInputState</code> is not dynamic, then all variables with the <code>Input</code> storage class decorated with <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code> <strong class=\"purple\">must</strong> contain a location in <a href=\"#VkVertexInputAttributeDescription\">VkVertexInputAttributeDescription</a>::<code>location</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-Input-08733",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-vertex-input\">vertex input state</a> and <code>pVertexInputState</code> is not dynamic, then the numeric type associated with all <code>Input</code> variables of the corresponding <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code> <strong class=\"purple\">must</strong> be the same as <a href=\"#VkVertexInputAttributeDescription\">VkVertexInputAttributeDescription</a>::<code>format</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pVertexInputState-08929",
          "text": "If the pipeline is being created with <a href=\"#pipelines-graphics-subsets-vertex-input\">vertex input state</a> and <code>pVertexInputState</code> is not dynamic, and <a href=\"#VkVertexInputAttributeDescription\">VkVertexInputAttributeDescription</a>::<code>format</code> has a 64-bit component, then the scalar width associated with all <code>Input</code> variables of the corresponding <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code> <strong class=\"purple\">must</strong> be 64-bit",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pVertexInputState-08930",
          "text": "If the pipeline is being created with <a href=\"#pipelines-graphics-subsets-vertex-input\">vertex input state</a> and <code>pVertexInputState</code> is not dynamic, and the scalar width associated with a <code>Location</code> decorated <code>Input</code> variable in the <code>Vertex</code> <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code> is 64-bit, then the corresponding <a href=\"#VkVertexInputAttributeDescription\">VkVertexInputAttributeDescription</a>::<code>format</code> <strong class=\"purple\">must</strong> have a 64-bit component",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pVertexInputState-09198",
          "text": "If the pipeline is being created with <a href=\"#pipelines-graphics-subsets-vertex-input\">vertex input state</a> and <code>pVertexInputState</code> is not dynamic, and <a href=\"#VkVertexInputAttributeDescription\">VkVertexInputAttributeDescription</a>::<code>format</code> has a 64-bit component, then all <code>Input</code> variables at the corresponding <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code> <strong class=\"purple\">must</strong> not use components that are not present in the format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-dynamicPrimitiveTopologyUnrestricted-09031",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-vertex-input\">vertex input state</a>, and <a href=\"#pipelines-pInputAssemblyState-null\">related dynamic state is not set</a>, <code>pInputAssemblyState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineInputAssemblyStateCreateInfo\">VkPipelineInputAssemblyStateCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pInputAssemblyState-09032",
          "text": "If <code>pInputAssemblyState</code> is not <code>NULL</code> it <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineInputAssemblyStateCreateInfo\">VkPipelineInputAssemblyStateCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02317",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, the <code>Xfb</code> execution mode <strong class=\"purple\">can</strong> be specified by no more than one shader stage in <code>pStages</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02318",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, and any shader stage in <code>pStages</code> specifies <code>Xfb</code> execution mode it <strong class=\"purple\">must</strong> be the last <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader stage</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02319",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, and a <a href=\"#VkPipelineRasterizationStateStreamCreateInfoEXT\">VkPipelineRasterizationStateStreamCreateInfoEXT</a>::<code>rasterizationStream</code> value other than zero is specified, all variables in the output interface of the entry point being compiled decorated with <code>Position</code>, <code>PointSize</code>, <code>ClipDistance</code>, or <code>CullDistance</code> <strong class=\"purple\">must</strong> be decorated with identical <code>Stream</code> values that match the <code>rasterizationStream</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02320",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, and <a href=\"#VkPipelineRasterizationStateStreamCreateInfoEXT\">VkPipelineRasterizationStateStreamCreateInfoEXT</a>::<code>rasterizationStream</code> is zero, or not specified, all variables in the output interface of the entry point being compiled decorated with <code>Position</code>, <code>PointSize</code>, <code>ClipDistance</code>, or <code>CullDistance</code> <strong class=\"purple\">must</strong> be decorated with a <code>Stream</code> value of zero, or <strong class=\"purple\">must</strong> not specify the <code>Stream</code> decoration",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-geometryStreams-02321",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, and the last <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader stage</a> 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-None-02322",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, and 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-lineRasterizationMode-02766",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> and at least one of <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a> or <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a>, and <code>pMultisampleState</code> is not <code>NULL</code>, the <code>lineRasterizationMode</code> member of a <a href=\"#VkPipelineRasterizationLineStateCreateInfoKHR\">VkPipelineRasterizationLineStateCreateInfoKHR</a> structure included in the <code>pNext</code> chain of <code>pRasterizationState</code> is <code>VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR</code> or <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR</code>, then the <code>alphaToCoverageEnable</code>, <code>alphaToOneEnable</code>, and <code>sampleShadingEnable</code> members of <code>pMultisampleState</code> <strong class=\"purple\">must</strong> all be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-stippledLineEnable-02767",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, the <code>stippledLineEnable</code> member of <a href=\"#VkPipelineRasterizationLineStateCreateInfoKHR\">VkPipelineRasterizationLineStateCreateInfoKHR</a> is <code>VK_TRUE</code>, and no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_LINE_STIPPLE_EXT</code>, then the <code>lineStippleFactor</code> member of <a href=\"#VkPipelineRasterizationLineStateCreateInfoKHR\">VkPipelineRasterizationLineStateCreateInfoKHR</a> <strong class=\"purple\">must</strong> be in the range <span class=\"eq\">[1,256]</span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-03372",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-03373",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-03374",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-03375",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-03376",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-03377",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-03577",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-04947",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03378",
          "text": "If     the <a href=\"#features-extendedDynamicState\"><code>extendedDynamicState</code></a>     feature is not enabled, and     the value of <a href=\"#VkApplicationInfo\">VkApplicationInfo</a>::<code>apiVersion</code> used to create     the <a href=\"#VkInstance\">VkInstance</a> is less than Version 1.3     there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of     <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_CULL_MODE</code>,     <code>VK_DYNAMIC_STATE_FRONT_FACE</code>,     <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY</code>,     <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code>,     <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code>,     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE</code>,     <code>VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE</code>,     <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code>,     <code>VK_DYNAMIC_STATE_DEPTH_COMPARE_OP</code>,     <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE</code>,     <code>VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE</code>, or     <code>VK_DYNAMIC_STATE_STENCIL_OP</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03379",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> is included in the <code>pDynamicStates</code> array then <code>viewportCount</code> <strong class=\"purple\">must</strong> be zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03380",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, and <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> is included in the <code>pDynamicStates</code> array then <code>scissorCount</code> <strong class=\"purple\">must</strong> be zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04132",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> is included in the <code>pDynamicStates</code> array then <code>VK_DYNAMIC_STATE_VIEWPORT</code> <strong class=\"purple\">must</strong> not be present",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04133",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, and <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> is included in the <code>pDynamicStates</code> array then <code>VK_DYNAMIC_STATE_SCISSOR</code> <strong class=\"purple\">must</strong> not be present",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07065",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, and includes a mesh shader, there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY</code>, or <code>VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04868",
          "text": "If     the <a href=\"#features-extendedDynamicState2\"><code>extendedDynamicState2</code></a>     feature is not enabled, and     the value of <a href=\"#VkApplicationInfo\">VkApplicationInfo</a>::<code>apiVersion</code> used to create     the <a href=\"#VkInstance\">VkInstance</a> is less than Version 1.3     there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of     <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE</code>,     <code>VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE</code>, or     <code>VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04869",
          "text": "If the <a href=\"#features-extendedDynamicState2LogicOp\"><code>extendedDynamicState2LogicOp</code></a> feature is not enabled, there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_LOGIC_OP_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04870",
          "text": "If the <a href=\"#features-extendedDynamicState2PatchControlPoints\"><code>extendedDynamicState2PatchControlPoints</code></a> feature is not enabled, there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07066",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, and includes a mesh shader, there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE</code>, or <code>VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-02877",
          "text": "If <code>flags</code> includes <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code>, then the <a href=\"#features-deviceGeneratedCommands\"><code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-02966",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> and <code>flags</code> includes <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code>, then all stages <strong class=\"purple\">must</strong> not specify <code>Xfb</code> execution mode",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-libraryCount-06648",
          "text": "If the pipeline is not created with a <a href=\"#pipelines-graphics-subsets-complete\">complete set of state</a>, or <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>libraryCount</code> is not <code>0</code>, <a href=\"#VkGraphicsPipelineShaderGroupsCreateInfoNV\">VkGraphicsPipelineShaderGroupsCreateInfoNV</a>::<code>groupCount</code> and <a href=\"#VkGraphicsPipelineShaderGroupsCreateInfoNV\">VkGraphicsPipelineShaderGroupsCreateInfoNV</a>::<code>pipelineCount</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-libraryCount-06649",
          "text": "If the pipeline is created with a <a href=\"#pipelines-graphics-subsets-complete\">complete set of state</a>, and <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>libraryCount</code> is <code>0</code>, and the <code>pNext</code> chain includes an instance of <a href=\"#VkGraphicsPipelineShaderGroupsCreateInfoNV\">VkGraphicsPipelineShaderGroupsCreateInfoNV</a>, <a href=\"#VkGraphicsPipelineShaderGroupsCreateInfoNV\">VkGraphicsPipelineShaderGroupsCreateInfoNV</a>::<code>groupCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-11000",
          "text": "If <code>flags</code> includes <code>VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT</code>, then the <a href=\"#features-deviceGeneratedCommandsEXT\"><code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-11001",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> and <code>flags</code> includes <code>VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT</code>, then all stages <strong class=\"purple\">must</strong> not specify <code>Xfb</code> execution mode",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pipelineCreationCacheControl-02878",
          "text": "If the <a href=\"#features-pipelineCreationCacheControl\"><code>pipelineCreationCacheControl</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT</code> or <code>VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pipelineProtectedAccess-07368",
          "text": "If the <a href=\"#features-pipelineProtectedAccess\"><code>pipelineProtectedAccess</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT</code> or <code>VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-07369",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include both <code>VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT</code> and <code>VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04494",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> or <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a> and <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState-&gt;pDynamicStates</code>, <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>::<code>fragmentSize.width</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04495",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> or <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a> and <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState-&gt;pDynamicStates</code>, <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>::<code>fragmentSize.height</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04496",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> or <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a> and <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState-&gt;pDynamicStates</code>, <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>::<code>fragmentSize.width</code> <strong class=\"purple\">must</strong> be a power-of-two value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04497",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> or <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a> and <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState-&gt;pDynamicStates</code>, <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>::<code>fragmentSize.height</code> <strong class=\"purple\">must</strong> be a power-of-two value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04498",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> or <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a> and <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState-&gt;pDynamicStates</code>, <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>::<code>fragmentSize.width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04499",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> or <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a> and <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState-&gt;pDynamicStates</code>, <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>::<code>fragmentSize.height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04500",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> or <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a> and <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState-&gt;pDynamicStates</code>, and the <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a> feature is not enabled, <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>::<code>fragmentSize.width</code> and <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>::<code>fragmentSize.height</code> <strong class=\"purple\">must</strong> both be equal to <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-06567",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> or <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a> and <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState-&gt;pDynamicStates</code>, <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>::<code>combinerOps</code>[0] <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFragmentShadingRateCombinerOpKHR\">VkFragmentShadingRateCombinerOpKHR</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-06568",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> or <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a> and <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState-&gt;pDynamicStates</code>, <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>::<code>combinerOps</code>[1] <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFragmentShadingRateCombinerOpKHR\">VkFragmentShadingRateCombinerOpKHR</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04501",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> or <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a> and <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState-&gt;pDynamicStates</code>, and the <a href=\"#features-primitiveFragmentShadingRate\"><code>primitiveFragmentShadingRate</code></a> feature is not enabled, <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>::<code>combinerOps</code>[0] <strong class=\"purple\">must</strong> be <code>VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04502",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> or <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a> and <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState-&gt;pDynamicStates</code>, and the <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> feature is not enabled, <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>::<code>combinerOps</code>[1] <strong class=\"purple\">must</strong> be <code>VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-primitiveFragmentShadingRateWithMultipleViewports-04503",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> and the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> is not included in <code>pDynamicState-&gt;pDynamicStates</code>, and <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>::<code>viewportCount</code> is greater than <code>1</code>, entry points specified in <code>pStages</code> <strong class=\"purple\">must</strong> not write to the <code>PrimitiveShadingRateKHR</code> built-in",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-primitiveFragmentShadingRateWithMultipleViewports-04504",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> and the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, and entry points specified in <code>pStages</code> write to the <code>ViewportIndex</code> built-in, they <strong class=\"purple\">must</strong> not also write to the <code>PrimitiveShadingRateKHR</code> built-in",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-primitiveFragmentShadingRateWithMultipleViewports-04505",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> and the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, and entry points specified in <code>pStages</code> write to the <code>ViewportMaskNV</code> built-in, they <strong class=\"purple\">must</strong> not also write to the <code>PrimitiveShadingRateKHR</code> built-in",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-fragmentShadingRateNonTrivialCombinerOps-04506",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> or <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a>, the <a href=\"#limits-fragmentShadingRateNonTrivialCombinerOps\"><code>fragmentShadingRateNonTrivialCombinerOps</code></a> limit is not supported, and <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState-&gt;pDynamicStates</code>, elements of <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>::<code>combinerOps</code> <strong class=\"purple\">must</strong> be <code>VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR</code> or <code>VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-None-06569",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a> and <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState-&gt;pDynamicStates</code>, <a href=\"#VkPipelineFragmentShadingRateEnumStateCreateInfoNV\">VkPipelineFragmentShadingRateEnumStateCreateInfoNV</a>::<code>shadingRateType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFragmentShadingRateTypeNV\">VkFragmentShadingRateTypeNV</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-06570",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a> and <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState-&gt;pDynamicStates</code>, <a href=\"#VkPipelineFragmentShadingRateEnumStateCreateInfoNV\">VkPipelineFragmentShadingRateEnumStateCreateInfoNV</a>::<code>shadingRate</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFragmentShadingRateNV\">VkFragmentShadingRateNV</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-06571",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a> and <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState-&gt;pDynamicStates</code>, <a href=\"#VkPipelineFragmentShadingRateEnumStateCreateInfoNV\">VkPipelineFragmentShadingRateEnumStateCreateInfoNV</a>::<code>combinerOps</code>[0] <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFragmentShadingRateCombinerOpKHR\">VkFragmentShadingRateCombinerOpKHR</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-06572",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a> and <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState-&gt;pDynamicStates</code>, <a href=\"#VkPipelineFragmentShadingRateEnumStateCreateInfoNV\">VkPipelineFragmentShadingRateEnumStateCreateInfoNV</a>::<code>combinerOps</code>[1] <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFragmentShadingRateCombinerOpKHR\">VkFragmentShadingRateCombinerOpKHR</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04569",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a> and <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState-&gt;pDynamicStates</code>, and the <a href=\"#features-fragmentShadingRateEnums\"><code>fragmentShadingRateEnums</code></a> feature is not enabled, <a href=\"#VkPipelineFragmentShadingRateEnumStateCreateInfoNV\">VkPipelineFragmentShadingRateEnumStateCreateInfoNV</a>::<code>shadingRateType</code> <strong class=\"purple\">must</strong> be equal to <code>VK_FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04570",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a> and <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState-&gt;pDynamicStates</code>, and the <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a> feature is not enabled, <a href=\"#VkPipelineFragmentShadingRateEnumStateCreateInfoNV\">VkPipelineFragmentShadingRateEnumStateCreateInfoNV</a>::<code>shadingRate</code> <strong class=\"purple\">must</strong> be equal to <code>VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04571",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a> and <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState-&gt;pDynamicStates</code>, and the <a href=\"#features-primitiveFragmentShadingRate\"><code>primitiveFragmentShadingRate</code></a> feature is not enabled, <a href=\"#VkPipelineFragmentShadingRateEnumStateCreateInfoNV\">VkPipelineFragmentShadingRateEnumStateCreateInfoNV</a>::<code>combinerOps</code>[0] <strong class=\"purple\">must</strong> be <code>VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04572",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a> and <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState-&gt;pDynamicStates</code>, and the <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> feature is not enabled, <a href=\"#VkPipelineFragmentShadingRateEnumStateCreateInfoNV\">VkPipelineFragmentShadingRateEnumStateCreateInfoNV</a>::<code>combinerOps</code>[1] <strong class=\"purple\">must</strong> be <code>VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-fragmentShadingRateNonTrivialCombinerOps-04573",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a>, and the <a href=\"#limits-fragmentShadingRateNonTrivialCombinerOps\"><code>fragmentShadingRateNonTrivialCombinerOps</code></a> limit is not supported and <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState-&gt;pDynamicStates</code>, elements of <a href=\"#VkPipelineFragmentShadingRateEnumStateCreateInfoNV\">VkPipelineFragmentShadingRateEnumStateCreateInfoNV</a>::<code>combinerOps</code> <strong class=\"purple\">must</strong> be <code>VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR</code> or <code>VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-None-04574",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a>, and the <a href=\"#features-supersampleFragmentShadingRates\"><code>supersampleFragmentShadingRates</code></a> feature is not enabled, <a href=\"#VkPipelineFragmentShadingRateEnumStateCreateInfoNV\">VkPipelineFragmentShadingRateEnumStateCreateInfoNV</a>::<code>shadingRate</code> <strong class=\"purple\">must</strong> not be equal to <code>VK_FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV</code>, <code>VK_FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV</code>, <code>VK_FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV</code>, or <code>VK_FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-None-04575",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a>, and the <a href=\"#features-noInvocationFragmentShadingRates\"><code>noInvocationFragmentShadingRates</code></a> feature is not enabled, <a href=\"#VkPipelineFragmentShadingRateEnumStateCreateInfoNV\">VkPipelineFragmentShadingRateEnumStateCreateInfoNV</a>::<code>shadingRate</code> <strong class=\"purple\">must</strong> not be equal to <code>VK_FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03578",
          "text": "All elements of the <code>pDynamicStates</code> member of <code>pDynamicState</code> <strong class=\"purple\">must</strong> not be <code>VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04807",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> and the <a href=\"#features-vertexInputDynamicState\"><code>vertexInputDynamicState</code></a> feature is not enabled, there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07067",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, and includes a mesh shader, there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04800",
          "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is not enabled, there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizationSamples-04899",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a>, and the <code><a href=\"#VK_QCOM_render_pass_shader_resolve\">VK_QCOM_render_pass_shader_resolve</a></code> extension is enabled, <code>rasterizationSamples</code> is not dynamic, and if subpass has any input attachments, and if the subpass description contains <code>VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM</code>, then the sample count of the input attachments <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-sampleShadingEnable-04900",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a>, and the <code><a href=\"#VK_QCOM_render_pass_shader_resolve\">VK_QCOM_render_pass_shader_resolve</a></code> extension is enabled, and if the subpass description contains <code>VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM</code>, then <code>sampleShadingEnable</code> <strong class=\"purple\">must</strong> be false",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-04901",
          "text": "If <code>flags</code> includes <code>VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM</code>, then the subpass <strong class=\"purple\">must</strong> be the last subpass in a subpass dependency chain",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-04902",
          "text": "If <code>flags</code> includes <code>VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM</code>, and if <code>pResolveAttachments</code> is not <code>NULL</code>, then each resolve attachment <strong class=\"purple\">must</strong> be <code>VK_ATTACHMENT_UNUSED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-dynamicRendering-06576",
          "text": "If the <a href=\"#features-dynamicRendering\"><code>dynamicRendering</code></a> feature is not enabled and the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a>, or <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, <code>renderPass</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-multiview-06577",
          "text": "If the <a href=\"#features-multiview\"><code>multiview</code></a> feature is not enabled, the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a>, or <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, and <code>renderPass</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>viewMask</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06578",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a>, or <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, and <code>renderPass</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the index of the most significant bit in <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>viewMask</code> <strong class=\"purple\">must</strong> be less than <a href=\"#limits-maxMultiviewViewCount\"><code>maxMultiviewViewCount</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06579",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, and <code>renderPass</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>colorAttachmentCount</code> is not 0, <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>colorAttachmentCount</code> valid <a href=\"#VkFormat\">VkFormat</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06580",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, and <code>renderPass</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, each element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06582",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, <code>renderPass</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and any element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> is not <code>VK_FORMAT_UNDEFINED</code>, that format <strong class=\"purple\">must</strong> be a format with <a href=\"#potential-format-features\">potential format features</a> that include <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code> or <code>VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06583",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, and <code>renderPass</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06584",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, and <code>renderPass</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06585",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, <code>renderPass</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> is not <code>VK_FORMAT_UNDEFINED</code>, it <strong class=\"purple\">must</strong> be a format with <a href=\"#potential-format-features\">potential format features</a> that include <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06586",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, <code>renderPass</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> is not <code>VK_FORMAT_UNDEFINED</code>, it <strong class=\"purple\">must</strong> be a format with <a href=\"#potential-format-features\">potential format features</a> that include <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06587",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, <code>renderPass</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> is not <code>VK_FORMAT_UNDEFINED</code>, it <strong class=\"purple\">must</strong> be a format that includes a depth component",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06588",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, <code>renderPass</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> is not <code>VK_FORMAT_UNDEFINED</code>, it <strong class=\"purple\">must</strong> be a format that includes a stencil component",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06589",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, <code>renderPass</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> is not <code>VK_FORMAT_UNDEFINED</code>, and <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> is not <code>VK_FORMAT_UNDEFINED</code>, <code>depthAttachmentFormat</code> <strong class=\"purple\">must</strong> equal <code>stencilAttachmentFormat</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-09033",
          "text": "If <code>renderPass</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the pipeline is being created with <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a> and <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, and either of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> or <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> are not <code>VK_FORMAT_UNDEFINED</code>, and the <code><a href=\"#VK_EXT_extended_dynamic_state3\">VK_EXT_extended_dynamic_state3</a></code> extension is not enabled or any of the <code>VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE</code>, <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code>, <code>VK_DYNAMIC_STATE_DEPTH_COMPARE_OP</code>, <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE</code>, <code>VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE</code>, <code>VK_DYNAMIC_STATE_STENCIL_OP</code>, or <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS</code> dynamic states are not set, <code>pDepthStencilState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineDepthStencilStateCreateInfo\">VkPipelineDepthStencilStateCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDepthStencilState-09034",
          "text": "If <code>pDepthStencilState</code> is not <code>NULL</code> it <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineDepthStencilStateCreateInfo\">VkPipelineDepthStencilStateCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-09035",
          "text": "If <code>renderPass</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and the pipeline is being created with <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a> but not <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, and the <code><a href=\"#VK_EXT_extended_dynamic_state3\">VK_EXT_extended_dynamic_state3</a></code> extension is not enabled, or any of the <code>VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE</code>, <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code>, <code>VK_DYNAMIC_STATE_DEPTH_COMPARE_OP</code>, <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE</code>, <code>VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE</code>, <code>VK_DYNAMIC_STATE_STENCIL_OP</code>, or <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS</code> dynamic states are not set, <code>pDepthStencilState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineDepthStencilStateCreateInfo\">VkPipelineDepthStencilStateCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDepthStencilState-09036",
          "text": "If <code>pDepthStencilState</code> is not <code>NULL</code> it <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineDepthStencilStateCreateInfo\">VkPipelineDepthStencilStateCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-09037",
          "text": "If <code>renderPass</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the pipeline is being created with <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, and any element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> is not <code>VK_FORMAT_UNDEFINED</code>, and the <code><a href=\"#VK_EXT_extended_dynamic_state3\">VK_EXT_extended_dynamic_state3</a></code> extension is not enabled, or any of the <code>VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT</code>, <code>VK_DYNAMIC_STATE_LOGIC_OP_EXT</code>, <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code>, <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code>, <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code>, or <code>VK_DYNAMIC_STATE_BLEND_CONSTANTS</code> dynamic states are not set, <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineColorBlendStateCreateInfo\">VkPipelineColorBlendStateCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pColorBlendState-09038",
          "text": "If <code>pColorBlendState</code> is not <code>NULL</code> it <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineColorBlendStateCreateInfo\">VkPipelineColorBlendStateCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06055",
          "text": "If <code>renderPass</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pColorBlendState</code> is not dynamic, and the pipeline is being created with <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, <code>pColorBlendState-&gt;attachmentCount</code> <strong class=\"purple\">must</strong> be equal to <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>colorAttachmentCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06057",
          "text": "If <code>renderPass</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the pipeline is being created with <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>viewMask</code> is not <code>0</code>, and the <a href=\"#features-multiview-tess\"><code>multiviewTessellationShader</code></a> feature is not enabled, then <code>pStages</code> <strong class=\"purple\">must</strong> not include tessellation shaders",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06058",
          "text": "If <code>renderPass</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the pipeline is being created with <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>viewMask</code> is not <code>0</code>, and the <a href=\"#features-multiview-gs\"><code>multiviewGeometryShader</code></a> feature is not enabled, then <code>pStages</code> <strong class=\"purple\">must</strong> not include a geometry shader",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06059",
          "text": "If <code>renderPass</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the pipeline is being created with <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, and <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>viewMask</code> is not <code>0</code>, all of the shaders in the pipeline <strong class=\"purple\">must</strong> not include variables decorated with the <code>Layer</code> built-in decoration in their interfaces",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-07720",
          "text": "If <code>renderPass</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the pipeline is being created with <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, and <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>viewMask</code> is not <code>0</code>, and <code>multiviewMeshShader</code> is not enabled, then <code>pStages</code> <strong class=\"purple\">must</strong> not include a mesh shader",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06061",
          "text": "If the <a href=\"#features-dynamicRenderingLocalRead\"><code>dynamicRenderingLocalRead</code></a> feature is not enabled, the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a>, and <code>renderPass</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, fragment shaders in <code>pStages</code> <strong class=\"purple\">must</strong> not include the <code>InputAttachment</code> capability",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-08710",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a> and <code>renderPass</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, fragment shaders in <code>pStages</code> <strong class=\"purple\">must</strong> not include any of the <code>TileImageColorReadAccessEXT</code>, <code>TileImageDepthReadAccessEXT</code>, or <code>TileImageStencilReadAccessEXT</code> capabilities",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06062",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a> and <code>renderPass</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, for each color attachment format defined by the <code>pColorAttachmentFormats</code> member of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>, if its <a href=\"#potential-format-features\">potential format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the <code>blendEnable</code> member of the corresponding element of the <code>pAttachments</code> member of <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06063",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a> and <code>renderPass</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, if the <code>pNext</code> chain includes <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <code>VkAttachmentSampleCountInfoNV</code>, the <code>colorAttachmentCount</code> member of that structure <strong class=\"purple\">must</strong> be equal to the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>colorAttachmentCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06591",
          "text": "If <code>pStages</code> includes a fragment shader stage, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode, the <code>flags</code> member of <a href=\"#VkPipelineDepthStencilStateCreateInfo\">VkPipelineDepthStencilStateCreateInfo</a> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT</code> or <code>VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06482",
          "text": "If the <a href=\"#features-dynamicRenderingLocalRead\"><code>dynamicRenderingLocalRead</code></a> feature is not enabled, the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, and the <code>flags</code> member of <a href=\"#VkPipelineColorBlendStateCreateInfo\">VkPipelineColorBlendStateCreateInfo</a> includes <code>VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT</code>, <code>renderPass</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-None-09526",
          "text": "If the <a href=\"#features-dynamicRenderingLocalRead\"><code>dynamicRenderingLocalRead</code></a> feature is not enabled, the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, and the <code>flags</code> member of <a href=\"#VkPipelineDepthStencilStateCreateInfo\">VkPipelineDepthStencilStateCreateInfo</a> includes <code>VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT</code> or <code>VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT</code>, <code>renderPass</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pColorAttachmentSamples-06592",
          "text": "If the <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, elements of the <code>pColorAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> <strong class=\"purple\">must</strong> be valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-depthStencilAttachmentSamples-06593",
          "text": "If the <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a> and the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> is not 0, it <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-09527",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, <code>renderPass</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>flags</code> member of <a href=\"#VkPipelineColorBlendStateCreateInfo\">VkPipelineColorBlendStateCreateInfo</a> includes <code>VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT</code> <code>subpass</code> <strong class=\"purple\">must</strong> have been created with <code>VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-09528",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a>, <code>renderPass</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>flags</code> member of <a href=\"#VkPipelineDepthStencilStateCreateInfo\">VkPipelineDepthStencilStateCreateInfo</a> includes <code>VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT</code>, <code>subpass</code> <strong class=\"purple\">must</strong> have been created with <code>VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-09529",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a>, <code>renderPass</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>flags</code> member of <a href=\"#VkPipelineDepthStencilStateCreateInfo\">VkPipelineDepthStencilStateCreateInfo</a> includes <code>VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT</code>, <code>subpass</code> <strong class=\"purple\">must</strong> have been created with <code>VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pipelineStageCreationFeedbackCount-06594",
          "text": "If <a href=\"#VkPipelineCreationFeedbackCreateInfo\">VkPipelineCreationFeedbackCreateInfo</a>::<code>pipelineStageCreationFeedbackCount</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be equal to <code>stageCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06595",
          "text": "If <code>renderPass</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the pipeline is being created with <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> or <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a>, and <a href=\"#VkMultiviewPerViewAttributesInfoNVX\">VkMultiviewPerViewAttributesInfoNVX</a>::<code>perViewAttributesPositionXOnly</code> is <code>VK_TRUE</code> then <a href=\"#VkMultiviewPerViewAttributesInfoNVX\">VkMultiviewPerViewAttributesInfoNVX</a>::<code>perViewAttributes</code> <strong class=\"purple\">must</strong> also be <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06596",
          "text": "If <a href=\"#VkGraphicsPipelineLibraryCreateInfoEXT\">VkGraphicsPipelineLibraryCreateInfoEXT</a>::<code>flags</code> includes only one of <code>VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT</code> or <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code>, and an element of <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> includes the other flag, the value of <a href=\"#VkMultiviewPerViewAttributesInfoNVX\">VkMultiviewPerViewAttributesInfoNVX</a>::<code>perViewAttributes</code> specified in both this pipeline and the library <strong class=\"purple\">must</strong> be equal",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pLibraries-06597",
          "text": "If one element of <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> includes <code>VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT</code> and another element includes <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code>, the value of <a href=\"#VkMultiviewPerViewAttributesInfoNVX\">VkMultiviewPerViewAttributesInfoNVX</a>::<code>perViewAttributes</code> specified in both libraries <strong class=\"purple\">must</strong> be equal",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06598",
          "text": "If <a href=\"#VkGraphicsPipelineLibraryCreateInfoEXT\">VkGraphicsPipelineLibraryCreateInfoEXT</a>::<code>flags</code> includes only one of <code>VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT</code> or <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code>, and an element of <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> includes the other flag, the value of <a href=\"#VkMultiviewPerViewAttributesInfoNVX\">VkMultiviewPerViewAttributesInfoNVX</a>::<code>perViewAttributesPositionXOnly</code> specified in both this pipeline and the library <strong class=\"purple\">must</strong> be equal",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pLibraries-06599",
          "text": "If one element of <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> includes <code>VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT</code> and another element includes <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code>, the value of <a href=\"#VkMultiviewPerViewAttributesInfoNVX\">VkMultiviewPerViewAttributesInfoNVX</a>::<code>perViewAttributesPositionXOnly</code> specified in both libraries <strong class=\"purple\">must</strong> be equal",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-06600",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> or <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a>, <code>pStages</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stageCount</code> valid <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-stageCount-09587",
          "text": "If the pipeline does not require <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> or <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a>, <code>stageCount</code> <strong class=\"purple\">must</strong> be zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pRasterizationState-06601",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, and <a href=\"#pipelines-pRasterizationState-null\">related dynamic state is not set</a>, <code>pRasterizationState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineRasterizationStateCreateInfo\">VkPipelineRasterizationStateCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pRasterizationState-09039",
          "text": "If <a href=\"#VkGraphicsPipelineLibraryCreateInfoEXT\">VkGraphicsPipelineLibraryCreateInfoEXT</a>::<code>flags</code> includes <code>VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT</code>, and <a href=\"#pipelines-pMultisampleState-null\">related dynamic state is not set</a>, then <code>pMultisampleState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pRasterizationState-09040",
          "text": "If <code>pRasterizationState</code> is not <code>NULL</code> it <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineRasterizationStateCreateInfo\">VkPipelineRasterizationStateCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-06602",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a> or <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06603",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a>, or <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output state</a>, and <code>renderPass</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRenderPass\">VkRenderPass</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-stageCount-09530",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, <code>stageCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-graphicsPipelineLibrary-06606",
          "text": "If the <a href=\"#features-graphicsPipelineLibrary\"><code>graphicsPipelineLibrary</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06608",
          "text": "If the pipeline defines, or includes as libraries, all the state subsets required for a <a href=\"#pipelines-graphics-subsets-complete\">complete graphics pipeline</a>, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06609",
          "text": "If <code>flags</code> includes <code>VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT</code>, pipeline libraries included via <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-09245",
          "text": "If <code>flags</code> includes <code>VK_PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT</code>, <code>flags</code> <strong class=\"purple\">must</strong> also include <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06610",
          "text": "If <code>flags</code> includes <code>VK_PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT</code>, pipeline libraries included via <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pLibraries-06611",
          "text": "Any pipeline libraries included via <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> <strong class=\"purple\">must</strong> not include any <a href=\"#pipelines-graphics-subsets\">state subset</a> already defined by this structure or defined by any other pipeline library in <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06612",
          "text": "If <a href=\"#VkGraphicsPipelineLibraryCreateInfoEXT\">VkGraphicsPipelineLibraryCreateInfoEXT</a>::<code>flags</code> includes only one of <code>VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT</code> or <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code>, and an element of <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> includes the other flag, and <code>layout</code> was not created with <code>VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT</code>, then the <code>layout</code> used by this pipeline and the library <strong class=\"purple\">must</strong> be <em>identically defined</em>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pLibraries-06613",
          "text": "If one element of <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> includes <code>VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT</code> and another element includes <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code>, and the <code>layout</code> specified by either library was not created with <code>VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT</code>, then the <code>layout</code> used by each library <strong class=\"purple\">must</strong> be <em>identically defined</em>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06614",
          "text": "If <a href=\"#VkGraphicsPipelineLibraryCreateInfoEXT\">VkGraphicsPipelineLibraryCreateInfoEXT</a>::<code>flags</code> includes only one of <code>VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT</code> or <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code>, an element of <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> includes the other subset, and <code>layout</code> was created with <code>VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT</code>, then the <code>layout</code> used by the library <strong class=\"purple\">must</strong> also have been created with <code>VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pLibraries-06615",
          "text": "If one element of <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> includes <code>VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT</code> and another element includes <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code>, and the <code>layout</code> specified by either library was created with <code>VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT</code>, then the <code>layout</code> used by both libraries <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06616",
          "text": "If <a href=\"#VkGraphicsPipelineLibraryCreateInfoEXT\">VkGraphicsPipelineLibraryCreateInfoEXT</a>::<code>flags</code> includes only one of <code>VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT</code> or <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code>, an element of <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> includes the other subset, and <code>layout</code> was created with <code>VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT</code>, elements of the <code>pSetLayouts</code> array which <code>layout</code> was created with that are not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> be <em>identically defined</em> to the element at the same index of <code>pSetLayouts</code> used to create the library&#8217;s <code>layout</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pLibraries-06617",
          "text": "If one element of <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> includes <code>VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT</code> and another element includes <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code>, and the <code>layout</code> specified by either library was created with <code>VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT</code>, elements of the <code>pSetLayouts</code> array which either <code>layout</code> was created with that are not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> be <em>identically defined</em> to the element at the same index of <code>pSetLayouts</code> used to create the other library&#8217;s <code>layout</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06618",
          "text": "If <a href=\"#VkGraphicsPipelineLibraryCreateInfoEXT\">VkGraphicsPipelineLibraryCreateInfoEXT</a>::<code>flags</code> includes only one of <code>VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT</code> or <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code>, and an element of <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> includes the other flag, any descriptor set layout <em>N</em> specified by <code>layout</code> in both this pipeline and the library which include bindings accessed by shader stages in each <strong class=\"purple\">must</strong> be <em>identically defined</em>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pLibraries-06619",
          "text": "If one element of <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> includes <code>VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT</code> and another element includes <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code>, any descriptor set layout <em>N</em> specified by <code>layout</code> in both libraries which include bindings accessed by shader stages in each <strong class=\"purple\">must</strong> be <em>identically defined</em>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06620",
          "text": "If <a href=\"#VkGraphicsPipelineLibraryCreateInfoEXT\">VkGraphicsPipelineLibraryCreateInfoEXT</a>::<code>flags</code> includes only one of <code>VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT</code> or <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code>, and an element of <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> includes the other flag, push constants specified in <code>layout</code> in both this pipeline and the library which are available to shader stages in each <strong class=\"purple\">must</strong> be <em>identically defined</em>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pLibraries-06621",
          "text": "If one element of <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> includes <code>VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT</code> and another element includes <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code>, push constants specified in <code>layout</code> in both this pipeline and the library which are available to shader stages in each <strong class=\"purple\">must</strong> be <em>identically defined</em>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06679",
          "text": "If <a href=\"#VkGraphicsPipelineLibraryCreateInfoEXT\">VkGraphicsPipelineLibraryCreateInfoEXT</a>::<code>flags</code> includes only one of <code>VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT</code> or <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code>, an element of <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> includes the other subset, any element of the <code>pSetLayouts</code> array when <code>layout</code> was created and the corresponding element of the <code>pSetLayouts</code> array used to create the library&#8217;s <code>layout</code> <strong class=\"purple\">must</strong> not both be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pLibraries-06681",
          "text": "If one element of <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> includes <code>VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT</code> and another element includes <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code>, and any element of the <code>pSetLayouts</code> array used to create each library&#8217;s <code>layout</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the corresponding element of the <code>pSetLayouts</code> array used to create the other library&#8217;s <code>layout</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06756",
          "text": "If <a href=\"#VkGraphicsPipelineLibraryCreateInfoEXT\">VkGraphicsPipelineLibraryCreateInfoEXT</a>::<code>flags</code> includes only one of <code>VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT</code> or <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code>, an element of <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> includes the other subset, and any element of the <code>pSetLayouts</code> array which <code>layout</code> was created with was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the corresponding element of the <code>pSetLayouts</code> array used to create the library&#8217;s <code>layout</code> <strong class=\"purple\">must</strong> not have shader bindings for shaders in the other subset",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06757",
          "text": "If <a href=\"#VkGraphicsPipelineLibraryCreateInfoEXT\">VkGraphicsPipelineLibraryCreateInfoEXT</a>::<code>flags</code> includes only one of <code>VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT</code> or <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code>, an element of <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> includes the other subset, and any element of the <code>pSetLayouts</code> array used to create the library&#8217;s <code>layout</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the corresponding element of the <code>pSetLayouts</code> array used to create this pipeline&#8217;s <code>layout</code> <strong class=\"purple\">must</strong> not have shader bindings for shaders in the other subset",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pLibraries-06758",
          "text": "If one element of <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> includes <code>VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT</code> and another element includes <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code>, and any element of the <code>pSetLayouts</code> array used to create each library&#8217;s <code>layout</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the corresponding element of the <code>pSetLayouts</code> array used to create the other library&#8217;s <code>layout</code> <strong class=\"purple\">must</strong> not have shader bindings for shaders in the other subset",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06682",
          "text": "If <a href=\"#VkGraphicsPipelineLibraryCreateInfoEXT\">VkGraphicsPipelineLibraryCreateInfoEXT</a>::<code>flags</code> includes both <code>VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT</code> and <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code>, <code>layout</code> <strong class=\"purple\">must</strong> have been created with no elements of the <code>pSetLayouts</code> array set to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06683",
          "text": "If <a href=\"#VkGraphicsPipelineLibraryCreateInfoEXT\">VkGraphicsPipelineLibraryCreateInfoEXT</a>::<code>flags</code> includes <code>VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT</code> and <code>pRasterizationState-&gt;rasterizerDiscardEnable</code> is <code>VK_TRUE</code>, <code>layout</code> <strong class=\"purple\">must</strong> have been created with no elements of the <code>pSetLayouts</code> array set to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06684",
          "text": "If <a href=\"#VkGraphicsPipelineLibraryCreateInfoEXT\">VkGraphicsPipelineLibraryCreateInfoEXT</a>::<code>flags</code> includes at least one of and no more than two of <code>VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT</code>, <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code>, or <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT</code>, and an element of <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> includes one of the other flags, the value of <code>subpass</code> <strong class=\"purple\">must</strong> be equal to that used to create the library",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pLibraries-06623",
          "text": "If one element of <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> includes at least one of and no more than two of <code>VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT</code>, <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code>, or <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT</code>, and another element of <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> includes one of the other flags, the value of <code>subpass</code> used to create each library <strong class=\"purple\">must</strong> be identical",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderpass-06624",
          "text": "If <code>renderpass</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <a href=\"#VkGraphicsPipelineLibraryCreateInfoEXT\">VkGraphicsPipelineLibraryCreateInfoEXT</a>::<code>flags</code> includes at least one of and no more than two of <code>VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT</code>, <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code>, or <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT</code>, and an element of <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> includes one of the other flags, <code>renderPass</code> <strong class=\"purple\">must</strong> be compatible with that used to create the library",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderpass-06625",
          "text": "If <code>renderpass</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <a href=\"#VkGraphicsPipelineLibraryCreateInfoEXT\">VkGraphicsPipelineLibraryCreateInfoEXT</a>::<code>flags</code> includes at least one of and no more than two of <code>VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT</code>, <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code>, or <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT</code>, and an element of <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> includes one of the other flags, the value of <code>renderPass</code> used to create that library <strong class=\"purple\">must</strong> also be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06626",
          "text": "If <a href=\"#VkGraphicsPipelineLibraryCreateInfoEXT\">VkGraphicsPipelineLibraryCreateInfoEXT</a>::<code>flags</code> includes at least one of and no more than two of <code>VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT</code>, <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code>, or <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT</code>, an element of <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> includes one of the other flags, and <code>renderPass</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>viewMask</code> used by this pipeline and that specified by the library <strong class=\"purple\">must</strong> be identical",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pLibraries-06627",
          "text": "If one element of <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> includes at least one of and no more than two of <code>VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT</code>, <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code>, or <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT</code>, another element of <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> includes one of the other flags, and <code>renderPass</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> for both libraries, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>viewMask</code> set by each library <strong class=\"purple\">must</strong> be identical",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pLibraries-06628",
          "text": "If one element of <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> includes at least one of and no more than two of <code>VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT</code>, <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code>, or <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT</code>, and another element of <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> includes one of the other flags, the <code>renderPass</code> objects used to create each library <strong class=\"purple\">must</strong> be compatible or all equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderpass-06631",
          "text": "If <code>renderPass</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a>, and the <code><a href=\"#VK_EXT_extended_dynamic_state3\">VK_EXT_extended_dynamic_state3</a></code> extension is not enabled or any of the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code>, <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code>, or <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic states is not set, or <a href=\"#features-alphaToOne\">alphaToOne</a> is enabled on the device and <code>VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT</code> is not set, then <code>pMultisampleState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-Input-06632",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a> with a fragment shader that either enables <a href=\"#primsrast-sampleshading\">sample shading</a> or decorates any variable in the <code>Input</code> storage class with <code>Sample</code>, and the <code><a href=\"#VK_EXT_extended_dynamic_state3\">VK_EXT_extended_dynamic_state3</a></code> extension is not enabled or any of the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code>, <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code>, or <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic states is not set, or <a href=\"#features-alphaToOne\">alphaToOne</a> is enabled on the device and <code>VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT</code> is not set, then <code>pMultisampleState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06633",
          "text": "If <a href=\"#VkGraphicsPipelineLibraryCreateInfoEXT\">VkGraphicsPipelineLibraryCreateInfoEXT</a>::<code>flags</code> includes <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code> with a <code>pMultisampleState</code> that was not <code>NULL</code>, and an element of <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> was created with <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT</code>, <code>pMultisampleState</code> <strong class=\"purple\">must</strong> be <em>identically defined</em> to that used to create the library",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pLibraries-06634",
          "text": "If an element of <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> was created with <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code> with a <code>pMultisampleState</code> that was not <code>NULL</code>, and if <a href=\"#VkGraphicsPipelineLibraryCreateInfoEXT\">VkGraphicsPipelineLibraryCreateInfoEXT</a>::<code>flags</code> includes <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT</code>, <code>pMultisampleState</code> <strong class=\"purple\">must</strong> be <em>identically defined</em> to that used to create the library",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pLibraries-06635",
          "text": "If one element of <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> was created with <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code> with a <code>pMultisampleState</code> that was not <code>NULL</code>, and if a different element of <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> was created with <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT</code>, the <code>pMultisampleState</code> used to create each library <strong class=\"purple\">must</strong> be <em>identically defined</em>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pLibraries-06636",
          "text": "If one element of <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> was created with <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT</code> and a value of <code>pMultisampleState-&gt;sampleShadingEnable</code> equal <code>VK_TRUE</code>, and if a different element of <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> was created with <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code>, the <code>pMultisampleState</code> used to create each library <strong class=\"purple\">must</strong> be <em>identically defined</em>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06637",
          "text": "If <a href=\"#VkGraphicsPipelineLibraryCreateInfoEXT\">VkGraphicsPipelineLibraryCreateInfoEXT</a>::<code>flags</code> includes <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT</code>, <code>pMultisampleState-&gt;sampleShadingEnable</code> is <code>VK_TRUE</code>, and an element of <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> was created with <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code>, <code>pMultisampleState</code> <strong class=\"purple\">must</strong> be <em>identically defined</em> to that used to create the library",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pLibraries-09567",
          "text": "If one element of <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> was created with <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT</code> and a value of <code>pMultisampleState-&gt;sampleShadingEnable</code> equal <code>VK_TRUE</code>, and if <a href=\"#VkGraphicsPipelineLibraryCreateInfoEXT\">VkGraphicsPipelineLibraryCreateInfoEXT</a>::<code>flags</code> includes <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code>, <code>pMultisampleState</code> <strong class=\"purple\">must</strong> be <em>identically defined</em> to that used to create the library",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06638",
          "text": "If <a href=\"#VkGraphicsPipelineLibraryCreateInfoEXT\">VkGraphicsPipelineLibraryCreateInfoEXT</a>::<code>flags</code> includes only one of <code>VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT</code> or <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code>, and an element of <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> includes the other flag, values specified in <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a> for both this pipeline and that library <strong class=\"purple\">must</strong> be identical",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pLibraries-06639",
          "text": "If one element of <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> includes <code>VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT</code> and another element includes <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code>, values specified in <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a> for both this pipeline and that library <strong class=\"purple\">must</strong> be identical",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06640",
          "text": "If <a href=\"#VkGraphicsPipelineLibraryCreateInfoEXT\">VkGraphicsPipelineLibraryCreateInfoEXT</a>::<code>flags</code> includes <code>VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT</code> or <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code>, <code>pStages</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stageCount</code> valid <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06642",
          "text": "If <a href=\"#VkGraphicsPipelineLibraryCreateInfoEXT\">VkGraphicsPipelineLibraryCreateInfoEXT</a>::<code>flags</code> includes <code>VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT</code> or <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code>, <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06643",
          "text": "If <a href=\"#VkGraphicsPipelineLibraryCreateInfoEXT\">VkGraphicsPipelineLibraryCreateInfoEXT</a>::<code>flags</code> includes <code>VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT</code>, or <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code>, <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT</code>, and <code>renderPass</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRenderPass\">VkRenderPass</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06644",
          "text": "If <a href=\"#VkGraphicsPipelineLibraryCreateInfoEXT\">VkGraphicsPipelineLibraryCreateInfoEXT</a>::<code>flags</code> includes <code>VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT</code> or <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code>, <code>stageCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06645",
          "text": "If <a href=\"#VkGraphicsPipelineLibraryCreateInfoEXT\">VkGraphicsPipelineLibraryCreateInfoEXT</a>::<code>flags</code> is non-zero, if <code>flags</code> includes <code>VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR</code>, any libraries <strong class=\"purple\">must</strong> have also been created with <code>VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pLibraries-06646",
          "text": "If <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> includes more than one library, and any library was created with <code>VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR</code>, all libraries <strong class=\"purple\">must</strong> have also been created with <code>VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pLibraries-06647",
          "text": "If <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code> includes at least one library, <a href=\"#VkGraphicsPipelineLibraryCreateInfoEXT\">VkGraphicsPipelineLibraryCreateInfoEXT</a>::<code>flags</code> is non-zero, and any library was created with <code>VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR</code>, <code>flags</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-None-07826",
          "text": "If the pipeline includes a <a href=\"#pipelines-graphics-subsets-complete\">complete set of state</a>, and there are no libraries included in <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>::<code>pLibraries</code>, then <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> <strong class=\"purple\">must</strong> be a valid pipeline layout",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-07827",
          "text": "If the pipeline includes a <a href=\"#pipelines-graphics-subsets-complete\">complete set of state</a> specified entirely by libraries, and each library was created with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> created without <code>VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT</code>, then <code>layout</code> <strong class=\"purple\">must</strong> be <a href=\"#descriptorsets-compatibility\">compatible</a> with the layouts in those libraries",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06729",
          "text": "If <code>flags</code> includes <code>VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT</code>, the pipeline includes a <a href=\"#pipelines-graphics-subsets-complete\">complete set of state</a> specified entirely by libraries, and each library was created with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> created with <code>VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT</code>, then <code>layout</code> <strong class=\"purple\">must</strong> be <a href=\"#descriptorsets-compatibility\">compatible</a> with the union of the libraries' pipeline layouts other than the inclusion/exclusion of <code>VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06730",
          "text": "If <code>flags</code> does not include <code>VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT</code>, the pipeline includes a <a href=\"#pipelines-graphics-subsets-complete\">complete set of state</a> specified entirely by libraries, and each library was created with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> created with <code>VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT</code>, then <code>layout</code> <strong class=\"purple\">must</strong> be <a href=\"#descriptorsets-compatibility\">compatible</a> with the union of the libraries' pipeline layouts",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-conservativePointAndLineRasterization-08892",
          "text": "If <a href=\"#limits-conservativePointAndLineRasterization\"><code>conservativePointAndLineRasterization</code></a> is not supported; the pipeline is being created with <a href=\"#pipelines-graphics-subsets-vertex-input\">vertex input state</a> and <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>; the pipeline does not include a geometry shader; and the value of <a href=\"#VkPipelineInputAssemblyStateCreateInfo\">VkPipelineInputAssemblyStateCreateInfo</a>::<code>topology</code> is <code>VK_PRIMITIVE_TOPOLOGY_POINT_LIST</code>, <code>VK_PRIMITIVE_TOPOLOGY_LINE_LIST</code>, or <code>VK_PRIMITIVE_TOPOLOGY_LINE_STRIP</code>, and either <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY</code> dynamic state is not enabled or <a href=\"#limits-dynamicPrimitiveTopologyUnrestricted\"><code>dynamicPrimitiveTopologyUnrestricted</code></a> is <code>VK_FALSE</code>, then <a href=\"#VkPipelineRasterizationConservativeStateCreateInfoEXT\">VkPipelineRasterizationConservativeStateCreateInfoEXT</a>::<code>conservativeRasterizationMode</code> <strong class=\"purple\">must</strong> be <code>VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-conservativePointAndLineRasterization-06760",
          "text": "If <a href=\"#limits-conservativePointAndLineRasterization\"><code>conservativePointAndLineRasterization</code></a> is not supported, the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, and the pipeline includes a geometry shader with either the <code>OutputPoints</code> or <code>OutputLineStrip</code> execution modes, <a href=\"#VkPipelineRasterizationConservativeStateCreateInfoEXT\">VkPipelineRasterizationConservativeStateCreateInfoEXT</a>::<code>conservativeRasterizationMode</code> <strong class=\"purple\">must</strong> be <code>VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-conservativePointAndLineRasterization-06761",
          "text": "If <a href=\"#limits-conservativePointAndLineRasterization\"><code>conservativePointAndLineRasterization</code></a> is not supported, the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, and the pipeline includes a mesh shader with either the <code>OutputPoints</code> or <code>OutputLinesNV</code> execution modes, <a href=\"#VkPipelineRasterizationConservativeStateCreateInfoEXT\">VkPipelineRasterizationConservativeStateCreateInfoEXT</a>::<code>conservativeRasterizationMode</code> <strong class=\"purple\">must</strong> be <code>VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-06894",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> but not <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a>, elements of <code>pStages</code> <strong class=\"purple\">must</strong> not have <code>stage</code> set to <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-06895",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a> but not <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, elements of <code>pStages</code> <strong class=\"purple\">must</strong> not have <code>stage</code> set to a shader stage which participates in pre-rasterization",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-06896",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, all elements of <code>pStages</code> <strong class=\"purple\">must</strong> have a <code>stage</code> set to a shader stage which participates in <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a> or <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-stage-06897",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a> and/or <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, any value of <code>stage</code> <strong class=\"purple\">must</strong> not be set in more than one element of <code>pStages</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3TessellationDomainOrigin-07370",
          "text": "If the <a href=\"#features-extendedDynamicState3TessellationDomainOrigin\"><code>extendedDynamicState3TessellationDomainOrigin</code></a> feature is not enabled, there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3DepthClampEnable-07371",
          "text": "If the <a href=\"#features-extendedDynamicState3DepthClampEnable\"><code>extendedDynamicState3DepthClampEnable</code></a> feature is not enabled, there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3PolygonMode-07372",
          "text": "If the <a href=\"#features-extendedDynamicState3PolygonMode\"><code>extendedDynamicState3PolygonMode</code></a> feature is not enabled, there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_POLYGON_MODE_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3RasterizationSamples-07373",
          "text": "If the <a href=\"#features-extendedDynamicState3RasterizationSamples\"><code>extendedDynamicState3RasterizationSamples</code></a> feature is not enabled, there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3SampleMask-07374",
          "text": "If the <a href=\"#features-extendedDynamicState3SampleMask\"><code>extendedDynamicState3SampleMask</code></a> feature is not enabled, there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3AlphaToCoverageEnable-07375",
          "text": "If the <a href=\"#features-extendedDynamicState3AlphaToCoverageEnable\"><code>extendedDynamicState3AlphaToCoverageEnable</code></a> feature is not enabled, there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3AlphaToOneEnable-07376",
          "text": "If the <a href=\"#features-extendedDynamicState3AlphaToOneEnable\"><code>extendedDynamicState3AlphaToOneEnable</code></a> feature is not enabled, there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3LogicOpEnable-07377",
          "text": "If the <a href=\"#features-extendedDynamicState3LogicOpEnable\"><code>extendedDynamicState3LogicOpEnable</code></a> feature is not enabled, there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ColorBlendEnable-07378",
          "text": "If the <a href=\"#features-extendedDynamicState3ColorBlendEnable\"><code>extendedDynamicState3ColorBlendEnable</code></a> feature is not enabled, there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ColorBlendEquation-07379",
          "text": "If the <a href=\"#features-extendedDynamicState3ColorBlendEquation\"><code>extendedDynamicState3ColorBlendEquation</code></a> feature is not enabled, there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ColorWriteMask-07380",
          "text": "If the <a href=\"#features-extendedDynamicState3ColorWriteMask\"><code>extendedDynamicState3ColorWriteMask</code></a> feature is not enabled, there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3RasterizationStream-07381",
          "text": "If the <a href=\"#features-extendedDynamicState3RasterizationStream\"><code>extendedDynamicState3RasterizationStream</code></a> feature is not enabled, there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ConservativeRasterizationMode-07382",
          "text": "If the <a href=\"#features-extendedDynamicState3ConservativeRasterizationMode\"><code>extendedDynamicState3ConservativeRasterizationMode</code></a> feature is not enabled, there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ExtraPrimitiveOverestimationSize-07383",
          "text": "If the <a href=\"#features-extendedDynamicState3ExtraPrimitiveOverestimationSize\"><code>extendedDynamicState3ExtraPrimitiveOverestimationSize</code></a> feature is not enabled, there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-09639",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, <code>pDynamicState</code> includes <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code>, and <code>pDynamicState</code> does not include <code>VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT</code>, <code>pRasterizationState</code> <strong class=\"purple\">must</strong> include a <a href=\"#VkPipelineRasterizationConservativeStateCreateInfoEXT\">VkPipelineRasterizationConservativeStateCreateInfoEXT</a> in its <code>pNext</code> chain",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3DepthClipEnable-07384",
          "text": "If the <a href=\"#features-extendedDynamicState3DepthClipEnable\"><code>extendedDynamicState3DepthClipEnable</code></a> feature is not enabled, there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3SampleLocationsEnable-07385",
          "text": "If the <a href=\"#features-extendedDynamicState3SampleLocationsEnable\"><code>extendedDynamicState3SampleLocationsEnable</code></a> feature is not enabled, there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ColorBlendAdvanced-07386",
          "text": "If the <a href=\"#features-extendedDynamicState3ColorBlendAdvanced\"><code>extendedDynamicState3ColorBlendAdvanced</code></a> feature is not enabled, there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ProvokingVertexMode-07387",
          "text": "If the <a href=\"#features-extendedDynamicState3ProvokingVertexMode\"><code>extendedDynamicState3ProvokingVertexMode</code></a> feature is not enabled, there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3LineRasterizationMode-07388",
          "text": "If the <a href=\"#features-extendedDynamicState3LineRasterizationMode\"><code>extendedDynamicState3LineRasterizationMode</code></a> feature is not enabled, there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3LineStippleEnable-07389",
          "text": "If the <a href=\"#features-extendedDynamicState3LineStippleEnable\"><code>extendedDynamicState3LineStippleEnable</code></a> feature is not enabled, there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3DepthClipNegativeOneToOne-07390",
          "text": "If the <a href=\"#features-extendedDynamicState3DepthClipNegativeOneToOne\"><code>extendedDynamicState3DepthClipNegativeOneToOne</code></a> feature is not enabled, there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ViewportWScalingEnable-07391",
          "text": "If the <a href=\"#features-extendedDynamicState3ViewportWScalingEnable\"><code>extendedDynamicState3ViewportWScalingEnable</code></a> feature is not enabled, there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ViewportSwizzle-07392",
          "text": "If the <a href=\"#features-extendedDynamicState3ViewportSwizzle\"><code>extendedDynamicState3ViewportSwizzle</code></a> feature is not enabled, there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3CoverageToColorEnable-07393",
          "text": "If the <a href=\"#features-extendedDynamicState3CoverageToColorEnable\"><code>extendedDynamicState3CoverageToColorEnable</code></a> feature is not enabled, there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3CoverageToColorLocation-07394",
          "text": "If the <a href=\"#features-extendedDynamicState3CoverageToColorLocation\"><code>extendedDynamicState3CoverageToColorLocation</code></a> feature is not enabled, there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3CoverageModulationMode-07395",
          "text": "If the <a href=\"#features-extendedDynamicState3CoverageModulationMode\"><code>extendedDynamicState3CoverageModulationMode</code></a> feature is not enabled, there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3CoverageModulationTableEnable-07396",
          "text": "If the <a href=\"#features-extendedDynamicState3CoverageModulationTableEnable\"><code>extendedDynamicState3CoverageModulationTableEnable</code></a> feature is not enabled, there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3CoverageModulationTable-07397",
          "text": "If the <a href=\"#features-extendedDynamicState3CoverageModulationTable\"><code>extendedDynamicState3CoverageModulationTable</code></a> feature is not enabled, there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3CoverageReductionMode-07398",
          "text": "If the <a href=\"#features-extendedDynamicState3CoverageReductionMode\"><code>extendedDynamicState3CoverageReductionMode</code></a> feature is not enabled, there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3RepresentativeFragmentTestEnable-07399",
          "text": "If the <a href=\"#features-extendedDynamicState3RepresentativeFragmentTestEnable\"><code>extendedDynamicState3RepresentativeFragmentTestEnable</code></a> feature is not enabled, there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ShadingRateImageEnable-07400",
          "text": "If the <a href=\"#features-extendedDynamicState3ShadingRateImageEnable\"><code>extendedDynamicState3ShadingRateImageEnable</code></a> feature is not enabled, there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-07401",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-07997",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07730",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, and no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_VIEWPORT</code> or <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code>, and if <a href=\"#features-multiviewPerViewViewports\"><code>multiviewPerViewViewports</code></a> is enabled, then the index of the most significant bit in each element of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>::<code>pViewMasks</code> <strong class=\"purple\">must</strong> be less than <code>pViewportState-&gt;viewportCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07731",
          "text": "If the pipeline requires <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, and no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_SCISSOR</code> or <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code>, and if <a href=\"#features-multiviewPerViewViewports\"><code>multiviewPerViewViewports</code></a> is enabled, then the index of the most significant bit in each element of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>::<code>pViewMasks</code> <strong class=\"purple\">must</strong> be less than <code>pViewportState-&gt;scissorCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-08711",
          "text": "If <code>pStages</code> includes a fragment shader stage, <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> is not set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpDepthAttachmentReadEXT</code>, the <code>depthWriteEnable</code> member of <a href=\"#VkPipelineDepthStencilStateCreateInfo\">VkPipelineDepthStencilStateCreateInfo</a> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-08712",
          "text": "If <code>pStages</code> includes a fragment shader stage, <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> is not set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpStencilAttachmentReadEXT</code>, the value of <a href=\"#VkStencilOpState\">VkStencilOpState</a>::<code>writeMask</code> for both <code>front</code> and <code>back</code> in <a href=\"#VkPipelineDepthStencilStateCreateInfo\">VkPipelineDepthStencilStateCreateInfo</a> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-08744",
          "text": "If <code>renderPass</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output state</a> or <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a>, the pipeline enables <a href=\"#primsrast-sampleshading\">sample shading</a>, <code>rasterizationSamples</code> is not dynamic, and the <code>pNext</code> chain includes a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a> structure, <code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value that is set in <code>imageCreateSampleCounts</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>) for every element of <code>depthAttachmentFormat</code>, <code>stencilAttachmentFormat</code> and the <code>pColorAttachmentFormats</code> array which is not <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-08897",
          "text": "If <a href=\"#VkGraphicsPipelineLibraryCreateInfoEXT\">VkGraphicsPipelineLibraryCreateInfoEXT</a>::<code>flags</code> includes <code>VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT</code>, <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> is specified either in a library or by the inclusion of <code>VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT</code>, and that state includes a vertex shader stage in <code>pStages</code>, the pipeline <strong class=\"purple\">must</strong> define <a href=\"#pipelines-graphics-subsets-vertex-input\">vertex input state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-08898",
          "text": "If <a href=\"#VkGraphicsPipelineLibraryCreateInfoEXT\">VkGraphicsPipelineLibraryCreateInfoEXT</a>::<code>flags</code> includes <code>VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT</code>, and <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> is not specified, the pipeline <strong class=\"purple\">must</strong> define <a href=\"#pipelines-graphics-subsets-vertex-input\">vertex input state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-08899",
          "text": "If <code>flags</code> does not include <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code>, <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> is specified either in a library or by the inclusion of <code>VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT</code>, and that state includes a vertex shader stage in <code>pStages</code>, the pipeline <strong class=\"purple\">must</strong> either define <a href=\"#pipelines-graphics-subsets-vertex-input\">vertex input state</a> or include that state in a linked pipeline library",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-08900",
          "text": "If <a href=\"#VkGraphicsPipelineLibraryCreateInfoEXT\">VkGraphicsPipelineLibraryCreateInfoEXT</a>::<code>flags</code> includes <code>VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT</code> the pipeline <strong class=\"purple\">must</strong> define <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-08901",
          "text": "If <code>flags</code> does not include <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code>, the pipeline <strong class=\"purple\">must</strong> either define <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> or include that state in a linked pipeline library",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-08903",
          "text": "If <a href=\"#VkGraphicsPipelineLibraryCreateInfoEXT\">VkGraphicsPipelineLibraryCreateInfoEXT</a>::<code>flags</code> includes <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code>, <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> is specified either in a library or by the inclusion of <code>VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT</code>, and that state either includes <code>VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE</code> or has <code>pRasterizationState-&gt;rasterizerDiscardEnable</code> set to <code>VK_FALSE</code>, the pipeline <strong class=\"purple\">must</strong> define <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-08904",
          "text": "If <a href=\"#VkGraphicsPipelineLibraryCreateInfoEXT\">VkGraphicsPipelineLibraryCreateInfoEXT</a>::<code>flags</code> includes <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code>, and <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> is not specified, the pipeline <strong class=\"purple\">must</strong> define <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-08906",
          "text": "If <a href=\"#VkGraphicsPipelineLibraryCreateInfoEXT\">VkGraphicsPipelineLibraryCreateInfoEXT</a>::<code>flags</code> includes <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code>, <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> is specified either in a library or by the inclusion of <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT</code>, and that state either includes <code>VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE</code> or has <code>pRasterizationState-&gt;rasterizerDiscardEnable</code> set to <code>VK_FALSE</code>, the pipeline <strong class=\"purple\">must</strong> define <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-08907",
          "text": "If <a href=\"#VkGraphicsPipelineLibraryCreateInfoEXT\">VkGraphicsPipelineLibraryCreateInfoEXT</a>::<code>flags</code> includes <code>VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT</code>, and <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> is not specified, the pipeline <strong class=\"purple\">must</strong> define <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-08909",
          "text": "If <code>flags</code> does not include <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code>, <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a> is specified either in a library or by the inclusion of <code>VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT</code>, and that state either includes <code>VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE</code> or has <code>pRasterizationState-&gt;rasterizerDiscardEnable</code> set to <code>VK_FALSE</code>, the pipeline <strong class=\"purple\">must</strong> define <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a> and <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a> or include those states in linked pipeline libraries",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-None-09043",
          "text": "If <code>pDynamicState-&gt;pDynamicStates</code> does not include <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code>, and the format of any color attachment is <code>VK_FORMAT_E5B9G9R9_UFLOAT_PACK32</code>, the <code>colorWriteMask</code> member of the corresponding element of <code>pColorBlendState-&gt;pAttachments</code> <strong class=\"purple\">must</strong> either include all of <code>VK_COLOR_COMPONENT_R_BIT</code>, <code>VK_COLOR_COMPONENT_G_BIT</code>, and <code>VK_COLOR_COMPONENT_B_BIT</code>, or none of them",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09301",
          "text": "If the <a href=\"#features-externalFormatResolve\"><code>externalFormatResolve</code></a> feature is enabled, the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, <code>renderPass</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> is not <code>0</code>, <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>viewMask</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09304",
          "text": "If the <a href=\"#features-externalFormatResolve\"><code>externalFormatResolve</code></a> feature is enabled, the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, <code>renderPass</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> is not <code>0</code>, and <code>rasterizationSamples</code> is not dynamic, <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a>::<code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09305",
          "text": "If the <a href=\"#features-externalFormatResolve\"><code>externalFormatResolve</code></a> feature is enabled, the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, <code>renderPass</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> is not <code>0</code>, and <code>blendEnable</code> is not dynamic, the <code>blendEnable</code> member of each element of <code>pColorBlendState-&gt;pAttachments</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09306",
          "text": "If the <a href=\"#features-externalFormatResolve\"><code>externalFormatResolve</code></a> feature is enabled, the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, <code>renderPass</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> is not <code>0</code>, and <code>pDynamicState-&gt;pDynamicStates</code> does not include <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code>, <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>::<code>width</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09307",
          "text": "If the <a href=\"#features-externalFormatResolve\"><code>externalFormatResolve</code></a> feature is enabled, the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, <code>renderPass</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> is not <code>0</code>, and <code>pDynamicState-&gt;pDynamicStates</code> does not include <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code>, <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>::<code>height</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09308",
          "text": "If the <a href=\"#features-externalFormatResolve\"><code>externalFormatResolve</code></a> feature is enabled, the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-output\">pre-rasterization shader state</a> and <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, <code>renderPass</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> is not <code>0</code>, the last <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader stage</a> <strong class=\"purple\">must</strong> not statically use a variable with the <code>PrimitiveShadingRateKHR</code> built-in",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09309",
          "text": "If the <a href=\"#features-externalFormatResolve\"><code>externalFormatResolve</code></a> feature is enabled, the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, <code>renderPass</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> is not <code>0</code>, <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>colorAttachmentCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09310",
          "text": "If the <a href=\"#features-externalFormatResolve\"><code>externalFormatResolve</code></a> feature is enabled, the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a> and <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, <code>renderPass</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> is not <code>0</code>, the fragment shader <strong class=\"purple\">must</strong> not declare the <code>DepthReplacing</code> or <code>StencilRefReplacingEXT</code> execution modes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09313",
          "text": "If the <a href=\"#features-externalFormatResolve\"><code>externalFormatResolve</code></a> feature is enabled, the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, <code>renderPass</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>subpass</code> includes an external format resolve attachment, and <code>rasterizationSamples</code> is not dynamic, <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a>::<code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLE_COUNT_1_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09314",
          "text": "If the <a href=\"#features-externalFormatResolve\"><code>externalFormatResolve</code></a> feature is enabled, the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, <code>renderPass</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>subpass</code> includes an external format resolve attachment, and <code>blendEnable</code> is not dynamic, the <code>blendEnable</code> member of each element of <code>pColorBlendState-&gt;pAttachments</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09315",
          "text": "If the <a href=\"#features-externalFormatResolve\"><code>externalFormatResolve</code></a> feature is enabled, the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, <code>renderPass</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>subpass</code> includes an external format resolve attachment, and <code>pDynamicState-&gt;pDynamicStates</code> does not include <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code>, <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>::<code>width</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09316",
          "text": "If the <a href=\"#features-externalFormatResolve\"><code>externalFormatResolve</code></a> feature is enabled, the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, <code>renderPass</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>subpass</code> includes an external format resolve attachment, and <code>pDynamicState-&gt;pDynamicStates</code> does not include <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code>, <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>::<code>height</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09317",
          "text": "If the <a href=\"#features-externalFormatResolve\"><code>externalFormatResolve</code></a> feature is enabled, the pipeline requires <a href=\"#pipelines-graphics-subsets-fragment-output\">pre-rasterization shader state</a> and <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, <code>renderPass</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and <code>subpass</code> includes an external format resolve attachment, the last <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader stage</a> <strong class=\"purple\">must</strong> not statically use a variable with the <code>PrimitiveShadingRateKHR</code> built-in",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-09531",
          "text": "If the pipeline is being created with <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a> and <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output state</a>, the value of <code>renderPass</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a> is included, <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>::<code>colorAttachmentCount</code> <strong class=\"purple\">must</strong> be equal to <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>colorAttachmentCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-09652",
          "text": "If the pipeline is being created with <a href=\"#pipelines-graphics-subsets-fragment-shader\">fragment shader state</a> and <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output state</a>, the value of <code>renderPass</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a> is not included, the fragment shader <strong class=\"purple\">must</strong> not contain any input attachments with a <code>InputAttachmentIndex</code> greater than or equal to <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>colorAttachmentCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-09532",
          "text": "If the pipeline is being created with <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output state</a>, and the value of <code>renderPass</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <a href=\"#VkRenderingAttachmentLocationInfoKHR\">VkRenderingAttachmentLocationInfoKHR</a>::<code>colorAttachmentCount</code> <strong class=\"purple\">must</strong> be equal to <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>colorAttachmentCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pNext-pNext",
          "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=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a>, <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>, <a href=\"#VkGraphicsPipelineLibraryCreateInfoEXT\">VkGraphicsPipelineLibraryCreateInfoEXT</a>, <a href=\"#VkGraphicsPipelineShaderGroupsCreateInfoNV\">VkGraphicsPipelineShaderGroupsCreateInfoNV</a>, <a href=\"#VkMultiviewPerViewAttributesInfoNVX\">VkMultiviewPerViewAttributesInfoNVX</a>, <a href=\"#VkPipelineBinaryInfoKHR\">VkPipelineBinaryInfoKHR</a>, <a href=\"#VkPipelineCompilerControlCreateInfoAMD\">VkPipelineCompilerControlCreateInfoAMD</a>, <a href=\"#VkPipelineCreateFlags2CreateInfoKHR\">VkPipelineCreateFlags2CreateInfoKHR</a>, <a href=\"#VkPipelineCreationFeedbackCreateInfo\">VkPipelineCreationFeedbackCreateInfo</a>, <a href=\"#VkPipelineDiscardRectangleStateCreateInfoEXT\">VkPipelineDiscardRectangleStateCreateInfoEXT</a>, <a href=\"#VkPipelineFragmentShadingRateEnumStateCreateInfoNV\">VkPipelineFragmentShadingRateEnumStateCreateInfoNV</a>, <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>, <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a>, <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>, <a href=\"#VkPipelineRepresentativeFragmentTestStateCreateInfoNV\">VkPipelineRepresentativeFragmentTestStateCreateInfoNV</a>, <a href=\"#VkPipelineRobustnessCreateInfoEXT\">VkPipelineRobustnessCreateInfoEXT</a>, <a href=\"#VkRenderingAttachmentLocationInfoKHR\">VkRenderingAttachmentLocationInfoKHR</a>, or <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-parameter",
          "text": "If <code>pDynamicState</code> is not <code>NULL</code>, <code>pDynamicState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineCreateInfo-commonparent",
          "text": "Each of <code>basePipelineHandle</code>, <code>layout</code>, and <code>renderPass</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineRenderingCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkPipelineRenderingCreateInfo-colorAttachmentCount-09533",
          "text": "<code>colorAttachmentCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxColorAttachments\"><code>maxColorAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRenderingCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineCreateFlags2CreateInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkPipelineCreateFlags2CreateInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineCreateFlags2CreateInfoKHR-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineCreateFlagBits2KHR\">VkPipelineCreateFlagBits2KHR</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineCreateFlags2CreateInfoKHR-flags-requiredbitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineBinaryInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkPipelineBinaryInfoKHR-binaryCount-09603",
          "text": "<code>binaryCount</code> and the order of the elements in <code>pPipelineBinaries</code> <strong class=\"purple\">must</strong> exactly match that returned by <a href=\"#vkCreatePipelineBinariesKHR\">vkCreatePipelineBinariesKHR</a> for the matching <code>Vk*PipelineCreateInfo</code> structure and its <code>pNext</code> chain, ignoring the presence of the <code>VkPipelineBinaryInfoKHR</code> structure, the presence of the <code>VK_PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR</code> flag, and absence of any shader module identifiers or shader modules, for the same <a href=\"#global-pipeline-key\">global pipeline key</a>, from either:<div class=\"ulist\">\n<ul>\n<li>\n<p><a href=\"#VkPipelineBinaryCreateInfoKHR\">VkPipelineBinaryCreateInfoKHR</a>::<code>pPipelineCreateInfo</code>, or</p>\n</li>\n<li>\n<p><a href=\"#VkPipelineBinaryCreateInfoKHR\">VkPipelineBinaryCreateInfoKHR</a>::<code>pipeline</code></p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineBinaryInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_BINARY_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineBinaryInfoKHR-pPipelineBinaries-parameter",
          "text": "If <code>binaryCount</code> is not <code>0</code>, <code>pPipelineBinaries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>binaryCount</code> valid <a href=\"#VkPipelineBinaryKHR\">VkPipelineBinaryKHR</a> handles",
          "page": "vkspec"
        }
      ]
    },
    "VkGraphicsPipelineLibraryCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkGraphicsPipelineLibraryCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineLibraryCreateInfoEXT-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkGraphicsPipelineLibraryFlagBitsEXT\">VkGraphicsPipelineLibraryFlagBitsEXT</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineLibraryCreateInfoEXT-flags-requiredbitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineDynamicStateCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkPipelineDynamicStateCreateInfo-pDynamicStates-01442",
          "text": "Each element of <code>pDynamicStates</code> <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineDynamicStateCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineDynamicStateCreateInfo-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineDynamicStateCreateInfo-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineDynamicStateCreateInfo-pDynamicStates-parameter",
          "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",
          "page": "vkspec"
        }
      ]
    },
    "VkGraphicsPipelineShaderGroupsCreateInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-groupCount-02879",
          "text": "<code>groupCount</code> <strong class=\"purple\">must</strong> be at least <code>1</code> and as maximum <code>VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</code>::<code>maxGraphicsShaderGroupCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-groupCount-02880",
          "text": "The sum of <code>groupCount</code> including those groups added from referenced <code>pPipelines</code> <strong class=\"purple\">must</strong> also be as maximum <code>VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</code>::<code>maxGraphicsShaderGroupCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02881",
          "text": "The state of the first element of <code>pGroups</code> <strong class=\"purple\">must</strong> match its equivalent within the parent&#8217;s <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02882",
          "text": "Each element of <code>pGroups</code> <strong class=\"purple\">must</strong> in combination with the rest of the pipeline state yield a valid state configuration",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02884",
          "text": "All elements of <code>pGroups</code> <strong class=\"purple\">must</strong> use the same shader stage combinations unless any mesh shader stage is used, then either combination of task and mesh or just mesh shader is valid",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02885",
          "text": "Mesh and regular primitive shading stages cannot be mixed across <code>pGroups</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pPipelines-02886",
          "text": "Each element of <code>pPipelines</code> <strong class=\"purple\">must</strong> have been created with identical state to the pipeline currently created except the state that can be overridden by <a href=\"#VkGraphicsShaderGroupCreateInfoNV\">VkGraphicsShaderGroupCreateInfoNV</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-deviceGeneratedCommands-02887",
          "text": "The <a href=\"#features-deviceGeneratedCommands\"><code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-parameter",
          "text": "If <code>groupCount</code> is not <code>0</code>, <code>pGroups</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>groupCount</code> valid <a href=\"#VkGraphicsShaderGroupCreateInfoNV\">VkGraphicsShaderGroupCreateInfoNV</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pPipelines-parameter",
          "text": "If <code>pipelineCount</code> is not <code>0</code>, <code>pPipelines</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pipelineCount</code> valid <a href=\"#VkPipeline\">VkPipeline</a> handles",
          "page": "vkspec"
        }
      ]
    },
    "VkGraphicsShaderGroupCreateInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkGraphicsShaderGroupCreateInfoNV-stageCount-02888",
          "text": "For <code>stageCount</code>, the same restrictions as in <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>stageCount</code> apply",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsShaderGroupCreateInfoNV-pStages-02889",
          "text": "For <code>pStages</code>, the same restrictions as in <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> apply",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsShaderGroupCreateInfoNV-pVertexInputState-02890",
          "text": "For <code>pVertexInputState</code>, the same restrictions as in <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pVertexInputState</code> apply",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsShaderGroupCreateInfoNV-pTessellationState-02891",
          "text": "For <code>pTessellationState</code>, the same restrictions as in <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pTessellationState</code> apply",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsShaderGroupCreateInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsShaderGroupCreateInfoNV-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsShaderGroupCreateInfoNV-pStages-parameter",
          "text": "<code>pStages</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stageCount</code> valid <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGraphicsShaderGroupCreateInfoNV-stageCount-arraylength",
          "text": "<code>stageCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateRayTracingPipelinesNV": {
      "core": [
        {
          "vuid": "VUID-vkCreateRayTracingPipelinesNV-device-09677",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> support at least one queue family with the <code>VK_QUEUE_COMPUTE_BIT</code> capability",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRayTracingPipelinesNV-flags-03415",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRayTracingPipelinesNV-flags-03416",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRayTracingPipelinesNV-flags-03816",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not contain the <code>VK_PIPELINE_CREATE_DISPATCH_BASE</code> flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRayTracingPipelinesNV-pipelineCache-02903",
          "text": "If <code>pipelineCache</code> was created with <code>VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT</code>, host access to <code>pipelineCache</code> <strong class=\"purple\">must</strong> be <a href=\"#fundamentals-threadingbehavior\">externally synchronized</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRayTracingPipelinesNV-pNext-09616",
          "text": "If <a href=\"#VkPipelineBinaryInfoKHR\">VkPipelineBinaryInfoKHR</a>::<code>binaryCount</code> is not <code>0</code> for any element of <code>pCreateInfos</code>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRayTracingPipelinesNV-pNext-09617",
          "text": "If a <a href=\"#VkPipelineCreateFlags2CreateInfoKHR\">VkPipelineCreateFlags2CreateInfoKHR</a> structure with the <code>VK_PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR</code> flag set is included in the <code>pNext</code> chain of any element of <code>pCreateInfos</code>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRayTracingPipelinesNV-binaryCount-09620",
          "text": "If <a href=\"#VkPipelineBinaryInfoKHR\">VkPipelineBinaryInfoKHR</a>::<code>binaryCount</code> is not <code>0</code> for any element of <code>pCreateInfos</code>, <code>VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT</code> <strong class=\"purple\">must</strong> not be set in the <code>flags</code> of that element",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRayTracingPipelinesNV-binaryCount-09621",
          "text": "If <a href=\"#VkPipelineBinaryInfoKHR\">VkPipelineBinaryInfoKHR</a>::<code>binaryCount</code> is not <code>0</code> for any element of <code>pCreateInfos</code>, <code>VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT</code> <strong class=\"purple\">must</strong> not be set in the <code>flags</code> of that element",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRayTracingPipelinesNV-binaryCount-09622",
          "text": "If <a href=\"#VkPipelineBinaryInfoKHR\">VkPipelineBinaryInfoKHR</a>::<code>binaryCount</code> is not <code>0</code> for any element of <code>pCreateInfos</code>, <code>VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT</code> <strong class=\"purple\">must</strong> not be set in the <code>flags</code> of that element",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRayTracingPipelinesNV-pNext-10150",
          "text": "If a <a href=\"#VkPipelineCreateFlags2CreateInfoKHR\">VkPipelineCreateFlags2CreateInfoKHR</a> structure is included in the <code>pNext</code> chain of any element of <code>pCreateInfos</code>, <code>VK_PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR</code> flag <strong class=\"purple\">must</strong> not be set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRayTracingPipelinesNV-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRayTracingPipelinesNV-pipelineCache-parameter",
          "text": "If <code>pipelineCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineCache\">VkPipelineCache</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRayTracingPipelinesNV-pCreateInfos-parameter",
          "text": "<code>pCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> valid <a href=\"#VkRayTracingPipelineCreateInfoNV\">VkRayTracingPipelineCreateInfoNV</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRayTracingPipelinesNV-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRayTracingPipelinesNV-pPipelines-parameter",
          "text": "<code>pPipelines</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> <a href=\"#VkPipeline\">VkPipeline</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRayTracingPipelinesNV-createInfoCount-arraylength",
          "text": "<code>createInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRayTracingPipelinesNV-pipelineCache-parent",
          "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>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateRayTracingPipelinesKHR": {
      "core": [
        {
          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-device-09677",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> support at least one queue family with the <code>VK_QUEUE_COMPUTE_BIT</code> capability",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-flags-03415",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-flags-03416",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-flags-03816",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not contain the <code>VK_PIPELINE_CREATE_DISPATCH_BASE</code> flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-02903",
          "text": "If <code>pipelineCache</code> was created with <code>VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT</code>, host access to <code>pipelineCache</code> <strong class=\"purple\">must</strong> be <a href=\"#fundamentals-threadingbehavior\">externally synchronized</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-deferredOperation-03678",
          "text": "Any previous deferred operation that was associated with <code>deferredOperation</code> <strong class=\"purple\">must</strong> be complete",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-pNext-09616",
          "text": "If <a href=\"#VkPipelineBinaryInfoKHR\">VkPipelineBinaryInfoKHR</a>::<code>binaryCount</code> is not <code>0</code> for any element of <code>pCreateInfos</code>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-pNext-09617",
          "text": "If a <a href=\"#VkPipelineCreateFlags2CreateInfoKHR\">VkPipelineCreateFlags2CreateInfoKHR</a> structure with the <code>VK_PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR</code> flag set is included in the <code>pNext</code> chain of any element of <code>pCreateInfos</code>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-binaryCount-09620",
          "text": "If <a href=\"#VkPipelineBinaryInfoKHR\">VkPipelineBinaryInfoKHR</a>::<code>binaryCount</code> is not <code>0</code> for any element of <code>pCreateInfos</code>, <code>VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT</code> <strong class=\"purple\">must</strong> not be set in the <code>flags</code> of that element",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-binaryCount-09621",
          "text": "If <a href=\"#VkPipelineBinaryInfoKHR\">VkPipelineBinaryInfoKHR</a>::<code>binaryCount</code> is not <code>0</code> for any element of <code>pCreateInfos</code>, <code>VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT</code> <strong class=\"purple\">must</strong> not be set in the <code>flags</code> of that element",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-binaryCount-09622",
          "text": "If <a href=\"#VkPipelineBinaryInfoKHR\">VkPipelineBinaryInfoKHR</a>::<code>binaryCount</code> is not <code>0</code> for any element of <code>pCreateInfos</code>, <code>VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT</code> <strong class=\"purple\">must</strong> not be set in the <code>flags</code> of that element",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-rayTracingPipeline-03586",
          "text": "The <a href=\"#features-rayTracingPipeline\"><code>rayTracingPipeline</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-deferredOperation-03587",
          "text": "If <code>deferredOperation</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the <code>flags</code> member of elements of <code>pCreateInfos</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-deferredOperation-parameter",
          "text": "If <code>deferredOperation</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>deferredOperation</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-parameter",
          "text": "If <code>pipelineCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineCache\">VkPipelineCache</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-pCreateInfos-parameter",
          "text": "<code>pCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> valid <a href=\"#VkRayTracingPipelineCreateInfoKHR\">VkRayTracingPipelineCreateInfoKHR</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-pPipelines-parameter",
          "text": "<code>pPipelines</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> <a href=\"#VkPipeline\">VkPipeline</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-createInfoCount-arraylength",
          "text": "<code>createInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-deferredOperation-parent",
          "text": "If <code>deferredOperation</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-parent",
          "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>",
          "page": "vkspec"
        }
      ]
    },
    "VkRayTracingPipelineCreateInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-None-09497",
          "text": "If the <code>pNext</code> chain does not include a <a href=\"#VkPipelineCreateFlags2CreateInfoKHR\">VkPipelineCreateFlags2CreateInfoKHR</a> structure, <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineCreateFlagBits\">VkPipelineCreateFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-07984",
          "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 ray tracing <code>VkPipeline</code> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-07985",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-07986",
          "text": "If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be -1 or <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-07987",
          "text": "If a push constant block is declared in a shader, a push constant range in <code>layout</code> <strong class=\"purple\">must</strong> match the shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-10069",
          "text": "If a push constant block is declared in a shader, the block must be contained inside the push constant range in <code>layout</code> that matches the stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-07988",
          "text": "If a <a href=\"#interfaces-resources\">resource variables</a> is declared in a shader, a descriptor slot in <code>layout</code> <strong class=\"purple\">must</strong> match the shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-07990",
          "text": "If a <a href=\"#interfaces-resources\">resource variables</a> is declared in a shader, and the descriptor type is not <code>VK_DESCRIPTOR_TYPE_MUTABLE_EXT</code>, a descriptor slot in <code>layout</code> <strong class=\"purple\">must</strong> match the descriptor type",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-07991",
          "text": "If a <a href=\"#interfaces-resources\">resource variables</a> is declared in a shader as an array, a descriptor slot in <code>layout</code> <strong class=\"purple\">must</strong> match the descriptor count",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pStages-03426",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-03428",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-02904",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-11008",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pipelineCreationCacheControl-02905",
          "text": "If the <a href=\"#features-pipelineCreationCacheControl\"><code>pipelineCreationCacheControl</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT</code> or <code>VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-stage-06232",
          "text": "The <code>stage</code> member of at least one element of <code>pStages</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_STAGE_RAYGEN_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03456",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-maxRecursionDepth-03457",
          "text": "<code>maxRecursionDepth</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxRecursionDepth</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03458",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03459",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03460",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03461",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03462",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03463",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03588",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-04948",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-02957",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include both <code>VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV</code> and <code>VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT</code> at the same time",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pipelineStageCreationFeedbackCount-06651",
          "text": "If <a href=\"#VkPipelineCreationFeedbackCreateInfo\">VkPipelineCreationFeedbackCreateInfo</a>::<code>pipelineStageCreationFeedbackCount</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be equal to <code>stageCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-stage-06898",
          "text": "The <code>stage</code> value in all <code>pStages</code> elements <strong class=\"purple\">must</strong> be one of <code>VK_SHADER_STAGE_RAYGEN_BIT_KHR</code>, <code>VK_SHADER_STAGE_ANY_HIT_BIT_KHR</code>, <code>VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR</code>, <code>VK_SHADER_STAGE_MISS_BIT_KHR</code>, <code>VK_SHADER_STAGE_INTERSECTION_BIT_KHR</code>, or <code>VK_SHADER_STAGE_CALLABLE_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-07402",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-07998",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pNext-pNext",
          "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=\"#VkPipelineCreateFlags2CreateInfoKHR\">VkPipelineCreateFlags2CreateInfoKHR</a> or <a href=\"#VkPipelineCreationFeedbackCreateInfo\">VkPipelineCreationFeedbackCreateInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pStages-parameter",
          "text": "<code>pStages</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stageCount</code> valid <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pGroups-parameter",
          "text": "<code>pGroups</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>groupCount</code> valid <a href=\"#VkRayTracingShaderGroupCreateInfoNV\">VkRayTracingShaderGroupCreateInfoNV</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-parameter",
          "text": "<code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-stageCount-arraylength",
          "text": "<code>stageCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-groupCount-arraylength",
          "text": "<code>groupCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-commonparent",
          "text": "Both of <code>basePipelineHandle</code>, and <code>layout</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkRayTracingPipelineCreateInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-None-09497",
          "text": "If the <code>pNext</code> chain does not include a <a href=\"#VkPipelineCreateFlags2CreateInfoKHR\">VkPipelineCreateFlags2CreateInfoKHR</a> structure, <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineCreateFlagBits\">VkPipelineCreateFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-07984",
          "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 ray tracing <code>VkPipeline</code> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-07985",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-07986",
          "text": "If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be -1 or <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-layout-07987",
          "text": "If a push constant block is declared in a shader, a push constant range in <code>layout</code> <strong class=\"purple\">must</strong> match the shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-layout-10069",
          "text": "If a push constant block is declared in a shader, the block must be contained inside the push constant range in <code>layout</code> that matches the stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-layout-07988",
          "text": "If a <a href=\"#interfaces-resources\">resource variables</a> is declared in a shader, a descriptor slot in <code>layout</code> <strong class=\"purple\">must</strong> match the shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-layout-07990",
          "text": "If a <a href=\"#interfaces-resources\">resource variables</a> is declared in a shader, and the descriptor type is not <code>VK_DESCRIPTOR_TYPE_MUTABLE_EXT</code>, a descriptor slot in <code>layout</code> <strong class=\"purple\">must</strong> match the descriptor type",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-layout-07991",
          "text": "If a <a href=\"#interfaces-resources\">resource variables</a> is declared in a shader as an array, a descriptor slot in <code>layout</code> <strong class=\"purple\">must</strong> match the descriptor count",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pStages-03426",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-layout-03428",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-02904",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-11008",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pipelineCreationCacheControl-02905",
          "text": "If the <a href=\"#features-pipelineCreationCacheControl\"><code>pipelineCreationCacheControl</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT</code> or <code>VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-stage-03425",
          "text": "If <code>flags</code> does not include <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code>, the <code>stage</code> member of at least one element of <code>pStages</code>, including those implicitly added by <code>pLibraryInfo</code>, <strong class=\"purple\">must</strong> be <code>VK_SHADER_STAGE_RAYGEN_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-maxPipelineRayRecursionDepth-03589",
          "text": "<code>maxPipelineRayRecursionDepth</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPipelinePropertiesKHR\">VkPhysicalDeviceRayTracingPipelinePropertiesKHR</a>::<code>maxRayRecursionDepth</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03465",
          "text": "If <code>flags</code> includes <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code>, <code>pLibraryInterface</code> <strong class=\"purple\">must</strong> not be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03590",
          "text": "If <code>pLibraryInfo</code> is not <code>NULL</code> and its <code>libraryCount</code> member is greater than <code>0</code>, <code>pLibraryInterface</code> <strong class=\"purple\">must</strong> not be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraries-03591",
          "text": "Each element of <code>pLibraryInfo-&gt;pLibraries</code> <strong class=\"purple\">must</strong> have been created with the value of <code>maxPipelineRayRecursionDepth</code> equal to that in this pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03592",
          "text": "If <code>pLibraryInfo</code> is not <code>NULL</code>, each element of its <code>pLibraries</code> member <strong class=\"purple\">must</strong> have been created with a <code>layout</code> that is compatible with the <code>layout</code> in this pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03593",
          "text": "If <code>pLibraryInfo</code> is not <code>NULL</code>, each element of its <code>pLibraries</code> member <strong class=\"purple\">must</strong> have been created with values of the <code>maxPipelineRayPayloadSize</code> and <code>maxPipelineRayHitAttributeSize</code> members of <code>pLibraryInterface</code> equal to those in this pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03594",
          "text": "If <code>flags</code> includes <code>VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR</code>, each element of <code>pLibraryInfo-&gt;pLibraries</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-04718",
          "text": "If <code>flags</code> includes <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR</code>, each element of <code>pLibraryInfo-&gt;pLibraries</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-04719",
          "text": "If <code>flags</code> includes <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR</code>, each element of <code>pLibraryInfo-&gt;pLibraries</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-04720",
          "text": "If <code>flags</code> includes <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR</code>, each element of <code>pLibraryInfo-&gt;pLibraries</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-04721",
          "text": "If <code>flags</code> includes <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>, each element of <code>pLibraryInfo-&gt;pLibraries</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-04722",
          "text": "If <code>flags</code> includes <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code>, each element of <code>pLibraryInfo-&gt;pLibraries</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-04723",
          "text": "If <code>flags</code> includes <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR</code>, each element of <code>pLibraryInfo-&gt;pLibraries</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03595",
          "text": "If the <code><a href=\"#VK_KHR_pipeline_library\">VK_KHR_pipeline_library</a></code> extension is not enabled, <code>pLibraryInfo</code> and <code>pLibraryInterface</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03470",
          "text": "If <code>flags</code> includes <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR</code>, for any element of <code>pGroups</code> with a <code>type</code> of <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR</code> or <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR</code>, the <code>anyHitShader</code> of that element <strong class=\"purple\">must</strong> not be <code>VK_SHADER_UNUSED_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03471",
          "text": "If <code>flags</code> includes <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>, for any element of <code>pGroups</code> with a <code>type</code> of <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR</code> or <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR</code>, the <code>closestHitShader</code> of that element <strong class=\"purple\">must</strong> not be <code>VK_SHADER_UNUSED_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-rayTraversalPrimitiveCulling-03596",
          "text": "If the <a href=\"#features-rayTraversalPrimitiveCulling\"><code>rayTraversalPrimitiveCulling</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-rayTraversalPrimitiveCulling-03597",
          "text": "If the <a href=\"#features-rayTraversalPrimitiveCulling\"><code>rayTraversalPrimitiveCulling</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-06546",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include both <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR</code> and <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03598",
          "text": "If <code>flags</code> includes <code>VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR</code>, <a href=\"#features-rayTracingPipelineShaderGroupHandleCaptureReplay\"><code>rayTracingPipelineShaderGroupHandleCaptureReplay</code></a> <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-rayTracingPipelineShaderGroupHandleCaptureReplay-03599",
          "text": "If <a href=\"#VkPhysicalDeviceRayTracingPipelineFeaturesKHR\">VkPhysicalDeviceRayTracingPipelineFeaturesKHR</a>::<code>rayTracingPipelineShaderGroupHandleCaptureReplay</code> is <code>VK_TRUE</code> and the <code>pShaderGroupCaptureReplayHandle</code> member of any element of <code>pGroups</code> is not <code>NULL</code>, <code>flags</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-07999",
          "text": "If <code>pLibraryInfo</code> is <code>NULL</code> or its <code>libraryCount</code> is <code>0</code>, <code>stageCount</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-08700",
          "text": "If <code>flags</code> does not include <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code> and either <code>pLibraryInfo</code> is <code>NULL</code> or its <code>libraryCount</code> is <code>0</code>, <code>groupCount</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pDynamicStates-03602",
          "text": "Any element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> <strong class=\"purple\">must</strong> be <code>VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pipelineStageCreationFeedbackCount-06652",
          "text": "If <a href=\"#VkPipelineCreationFeedbackCreateInfo\">VkPipelineCreationFeedbackCreateInfo</a>::<code>pipelineStageCreationFeedbackCount</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be equal to <code>stageCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-stage-06899",
          "text": "The <code>stage</code> value in all <code>pStages</code> elements <strong class=\"purple\">must</strong> be one of <code>VK_SHADER_STAGE_RAYGEN_BIT_KHR</code>, <code>VK_SHADER_STAGE_ANY_HIT_BIT_KHR</code>, <code>VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR</code>, <code>VK_SHADER_STAGE_MISS_BIT_KHR</code>, <code>VK_SHADER_STAGE_INTERSECTION_BIT_KHR</code>, or <code>VK_SHADER_STAGE_CALLABLE_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-07403",
          "text": "If <code>flags</code> includes <code>VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT</code>, each element of <code>pLibraryInfo-&gt;pLibraries</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-08701",
          "text": "If <code>flags</code> includes <code>VK_PIPELINE_CREATE_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV</code>, each element of <code>pLibraryInfo-&gt;pLibraries</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pNext-pNext",
          "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=\"#VkPipelineBinaryInfoKHR\">VkPipelineBinaryInfoKHR</a>, <a href=\"#VkPipelineCreateFlags2CreateInfoKHR\">VkPipelineCreateFlags2CreateInfoKHR</a>, <a href=\"#VkPipelineCreationFeedbackCreateInfo\">VkPipelineCreationFeedbackCreateInfo</a>, or <a href=\"#VkPipelineRobustnessCreateInfoEXT\">VkPipelineRobustnessCreateInfoEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pStages-parameter",
          "text": "If <code>stageCount</code> is not <code>0</code>, <code>pStages</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stageCount</code> valid <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pGroups-parameter",
          "text": "If <code>groupCount</code> is not <code>0</code>, <code>pGroups</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>groupCount</code> valid <a href=\"#VkRayTracingShaderGroupCreateInfoKHR\">VkRayTracingShaderGroupCreateInfoKHR</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-parameter",
          "text": "If <code>pLibraryInfo</code> is not <code>NULL</code>, <code>pLibraryInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInterface-parameter",
          "text": "If <code>pLibraryInterface</code> is not <code>NULL</code>, <code>pLibraryInterface</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkRayTracingPipelineInterfaceCreateInfoKHR\">VkRayTracingPipelineInterfaceCreateInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pDynamicState-parameter",
          "text": "If <code>pDynamicState</code> is not <code>NULL</code>, <code>pDynamicState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-layout-parameter",
          "text": "<code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-commonparent",
          "text": "Both of <code>basePipelineHandle</code>, and <code>layout</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkRayTracingShaderGroupCreateInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-02413",
          "text": "If <code>type</code> is <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV</code> then <code>generalShader</code> <strong class=\"purple\">must</strong> be a valid index into <a href=\"#VkRayTracingPipelineCreateInfoNV\">VkRayTracingPipelineCreateInfoNV</a>::<code>pStages</code> referring to a shader of <code>VK_SHADER_STAGE_RAYGEN_BIT_NV</code>, <code>VK_SHADER_STAGE_MISS_BIT_NV</code>, or <code>VK_SHADER_STAGE_CALLABLE_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-02414",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-02415",
          "text": "If <code>type</code> is <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV</code> then <code>intersectionShader</code> <strong class=\"purple\">must</strong> be a valid index into <a href=\"#VkRayTracingPipelineCreateInfoNV\">VkRayTracingPipelineCreateInfoNV</a>::<code>pStages</code> referring to a shader of <code>VK_SHADER_STAGE_INTERSECTION_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-02416",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-closestHitShader-02417",
          "text": "<code>closestHitShader</code> <strong class=\"purple\">must</strong> be either <code>VK_SHADER_UNUSED_NV</code> or a valid index into <a href=\"#VkRayTracingPipelineCreateInfoNV\">VkRayTracingPipelineCreateInfoNV</a>::<code>pStages</code> referring to a shader of <code>VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-anyHitShader-02418",
          "text": "<code>anyHitShader</code> <strong class=\"purple\">must</strong> be either <code>VK_SHADER_UNUSED_NV</code> or a valid index into <a href=\"#VkRayTracingPipelineCreateInfoNV\">VkRayTracingPipelineCreateInfoNV</a>::<code>pStages</code> referring to a shader of <code>VK_SHADER_STAGE_ANY_HIT_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-parameter",
          "text": "<code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRayTracingShaderGroupTypeKHR\">VkRayTracingShaderGroupTypeKHR</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkRayTracingShaderGroupCreateInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03474",
          "text": "If <code>type</code> is <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR</code> then <code>generalShader</code> <strong class=\"purple\">must</strong> be a valid index into <a href=\"#VkRayTracingPipelineCreateInfoKHR\">VkRayTracingPipelineCreateInfoKHR</a>::<code>pStages</code> referring to a shader of <code>VK_SHADER_STAGE_RAYGEN_BIT_KHR</code>, <code>VK_SHADER_STAGE_MISS_BIT_KHR</code>, or <code>VK_SHADER_STAGE_CALLABLE_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03475",
          "text": "If <code>type</code> is <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR</code> then <code>closestHitShader</code>, <code>anyHitShader</code>, and <code>intersectionShader</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_UNUSED_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03476",
          "text": "If <code>type</code> is <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR</code> then <code>intersectionShader</code> <strong class=\"purple\">must</strong> be a valid index into <a href=\"#VkRayTracingPipelineCreateInfoKHR\">VkRayTracingPipelineCreateInfoKHR</a>::<code>pStages</code> referring to a shader of <code>VK_SHADER_STAGE_INTERSECTION_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03477",
          "text": "If <code>type</code> is <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR</code> then <code>intersectionShader</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_UNUSED_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-closestHitShader-03478",
          "text": "<code>closestHitShader</code> <strong class=\"purple\">must</strong> be either <code>VK_SHADER_UNUSED_KHR</code> or a valid index into <a href=\"#VkRayTracingPipelineCreateInfoKHR\">VkRayTracingPipelineCreateInfoKHR</a>::<code>pStages</code> referring to a shader of <code>VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-anyHitShader-03479",
          "text": "<code>anyHitShader</code> <strong class=\"purple\">must</strong> be either <code>VK_SHADER_UNUSED_KHR</code> or a valid index into <a href=\"#VkRayTracingPipelineCreateInfoKHR\">VkRayTracingPipelineCreateInfoKHR</a>::<code>pStages</code> referring to a shader of <code>VK_SHADER_STAGE_ANY_HIT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-rayTracingPipelineShaderGroupHandleCaptureReplayMixed-03603",
          "text": "If <a href=\"#VkPhysicalDeviceRayTracingPipelineFeaturesKHR\">VkPhysicalDeviceRayTracingPipelineFeaturesKHR</a>::<code>rayTracingPipelineShaderGroupHandleCaptureReplayMixed</code> is <code>VK_FALSE</code> then <code>pShaderGroupCaptureReplayHandle</code> <strong class=\"purple\">must</strong> not be provided if it has not been provided on a previous call to ray tracing pipeline creation",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-rayTracingPipelineShaderGroupHandleCaptureReplayMixed-03604",
          "text": "If <a href=\"#VkPhysicalDeviceRayTracingPipelineFeaturesKHR\">VkPhysicalDeviceRayTracingPipelineFeaturesKHR</a>::<code>rayTracingPipelineShaderGroupHandleCaptureReplayMixed</code> is <code>VK_FALSE</code> then the caller <strong class=\"purple\">must</strong> guarantee that no ray tracing pipeline creation commands with <code>pShaderGroupCaptureReplayHandle</code> provided execute simultaneously with ray tracing pipeline creation commands without <code>pShaderGroupCaptureReplayHandle</code> provided",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-type-parameter",
          "text": "<code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRayTracingShaderGroupTypeKHR\">VkRayTracingShaderGroupTypeKHR</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkRayTracingPipelineInterfaceCreateInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkRayTracingPipelineInterfaceCreateInfoKHR-maxPipelineRayHitAttributeSize-03605",
          "text": "<code>maxPipelineRayHitAttributeSize</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPipelinePropertiesKHR\">VkPhysicalDeviceRayTracingPipelinePropertiesKHR</a>::<code>maxRayHitAttributeSize</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineInterfaceCreateInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRayTracingPipelineInterfaceCreateInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetRayTracingShaderGroupHandlesKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-pipeline-04619",
          "text": "<code>pipeline</code> <strong class=\"purple\">must</strong> be a ray tracing pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-firstGroup-04050",
          "text": "<code>firstGroup</code> <strong class=\"purple\">must</strong> be less than the number of shader groups in <code>pipeline</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-firstGroup-02419",
          "text": "The sum of <code>firstGroup</code> and <code>groupCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of shader groups in <code>pipeline</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-dataSize-02420",
          "text": "<code>dataSize</code> <strong class=\"purple\">must</strong> be at least <span class=\"eq\"><a href=\"#VkPhysicalDeviceRayTracingPipelinePropertiesKHR\">VkPhysicalDeviceRayTracingPipelinePropertiesKHR</a>::<code>shaderGroupHandleSize</code> × <code>groupCount</code></span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-pipeline-07828",
          "text": "If the <a href=\"#features-pipelineLibraryGroupHandles\">pipelineLibraryGroupHandles</a> feature is not enabled, <code>pipeline</code> <strong class=\"purple\">must</strong> not have been created with <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-pipeline-parameter",
          "text": "<code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-pData-parameter",
          "text": "<code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-dataSize-arraylength",
          "text": "<code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-pipeline-parent",
          "text": "<code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-04620",
          "text": "<code>pipeline</code> <strong class=\"purple\">must</strong> be a ray tracing pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-firstGroup-04051",
          "text": "<code>firstGroup</code> <strong class=\"purple\">must</strong> be less than the number of shader groups in <code>pipeline</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-firstGroup-03483",
          "text": "The sum of <code>firstGroup</code> and <code>groupCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of shader groups in <code>pipeline</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-dataSize-03484",
          "text": "<code>dataSize</code> <strong class=\"purple\">must</strong> be at least <span class=\"eq\"><a href=\"#VkPhysicalDeviceRayTracingPipelinePropertiesKHR\">VkPhysicalDeviceRayTracingPipelinePropertiesKHR</a>::<code>shaderGroupHandleCaptureReplaySize</code> × <code>groupCount</code></span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-rayTracingPipelineShaderGroupHandleCaptureReplay-03606",
          "text": "<code>VkPhysicalDeviceRayTracingPipelineFeaturesKHR</code>::<code>rayTracingPipelineShaderGroupHandleCaptureReplay</code> <strong class=\"purple\">must</strong> be enabled to call this function",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-03607",
          "text": "<code>pipeline</code> <strong class=\"purple\">must</strong> have been created with a <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-07829",
          "text": "If the <a href=\"#features-pipelineLibraryGroupHandles\">pipelineLibraryGroupHandles</a> feature is not enabled, <code>pipeline</code> <strong class=\"purple\">must</strong> not have been created with <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-parameter",
          "text": "<code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pData-parameter",
          "text": "<code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-dataSize-arraylength",
          "text": "<code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-parent",
          "text": "<code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCompileDeferredNV": {
      "core": [
        {
          "vuid": "VUID-vkCompileDeferredNV-pipeline-04621",
          "text": "<code>pipeline</code> <strong class=\"purple\">must</strong> be a ray tracing pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCompileDeferredNV-pipeline-02237",
          "text": "<code>pipeline</code> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCompileDeferredNV-shader-02238",
          "text": "<code>shader</code> <strong class=\"purple\">must</strong> not have been called as a deferred compile before",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCompileDeferredNV-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCompileDeferredNV-pipeline-parameter",
          "text": "<code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCompileDeferredNV-pipeline-parent",
          "text": "<code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetRayTracingShaderGroupStackSizeKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetRayTracingShaderGroupStackSizeKHR-pipeline-04622",
          "text": "<code>pipeline</code> <strong class=\"purple\">must</strong> be a ray tracing pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetRayTracingShaderGroupStackSizeKHR-group-03608",
          "text": "The value of <code>group</code> <strong class=\"purple\">must</strong> be less than the number of shader groups in <code>pipeline</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetRayTracingShaderGroupStackSizeKHR-groupShader-03609",
          "text": "The shader identified by <code>groupShader</code> in <code>group</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_UNUSED_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetRayTracingShaderGroupStackSizeKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetRayTracingShaderGroupStackSizeKHR-pipeline-parameter",
          "text": "<code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetRayTracingShaderGroupStackSizeKHR-groupShader-parameter",
          "text": "<code>groupShader</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderGroupShaderKHR\">VkShaderGroupShaderKHR</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetRayTracingShaderGroupStackSizeKHR-pipeline-parent",
          "text": "<code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetRayTracingPipelineStackSizeKHR": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetRayTracingPipelineStackSizeKHR-pipelineStackSize-03610",
          "text": "<code>pipelineStackSize</code> <strong class=\"purple\">must</strong> be large enough for any dynamic execution through the shaders in the ray tracing pipeline used by a subsequent trace call",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRayTracingPipelineStackSizeKHR-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRayTracingPipelineStackSizeKHR-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRayTracingPipelineStackSizeKHR-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRayTracingPipelineStackSizeKHR-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRayTracingPipelineStackSizeKHR-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroyPipeline": {
      "core": [
        {
          "vuid": "VUID-vkDestroyPipeline-pipeline-00765",
          "text": "All submitted commands that refer to <code>pipeline</code> <strong class=\"purple\">must</strong> have completed execution",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyPipeline-pipeline-00766",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyPipeline-pipeline-00767",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyPipeline-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyPipeline-pipeline-parameter",
          "text": "If <code>pipeline</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyPipeline-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyPipeline-pipeline-parent",
          "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>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreatePipelineCache": {
      "core": [
        {
          "vuid": "VUID-vkCreatePipelineCache-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreatePipelineCache-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineCacheCreateInfo\">VkPipelineCacheCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreatePipelineCache-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreatePipelineCache-pPipelineCache-parameter",
          "text": "<code>pPipelineCache</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPipelineCache\">VkPipelineCache</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineCacheCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkPipelineCacheCreateInfo-initialDataSize-00768",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineCacheCreateInfo-initialDataSize-00769",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineCacheCreateInfo-pipelineCreationCacheControl-02892",
          "text": "If the <a href=\"#features-pipelineCreationCacheControl\"><code>pipelineCreationCacheControl</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineCacheCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineCacheCreateInfo-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineCacheCreateInfo-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineCacheCreateFlagBits\">VkPipelineCacheCreateFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineCacheCreateInfo-pInitialData-parameter",
          "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",
          "page": "vkspec"
        }
      ]
    },
    "vkMergePipelineCaches": {
      "core": [
        {
          "vuid": "VUID-vkMergePipelineCaches-dstCache-00770",
          "text": "<code>dstCache</code> <strong class=\"purple\">must</strong> not appear in the list of source caches",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkMergePipelineCaches-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkMergePipelineCaches-dstCache-parameter",
          "text": "<code>dstCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineCache\">VkPipelineCache</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkMergePipelineCaches-pSrcCaches-parameter",
          "text": "<code>pSrcCaches</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>srcCacheCount</code> valid <a href=\"#VkPipelineCache\">VkPipelineCache</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkMergePipelineCaches-srcCacheCount-arraylength",
          "text": "<code>srcCacheCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkMergePipelineCaches-dstCache-parent",
          "text": "<code>dstCache</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkMergePipelineCaches-pSrcCaches-parent",
          "text": "Each element of <code>pSrcCaches</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPipelineCacheData": {
      "core": [
        {
          "vuid": "VUID-vkGetPipelineCacheData-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPipelineCacheData-pipelineCache-parameter",
          "text": "<code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineCache\">VkPipelineCache</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPipelineCacheData-pDataSize-parameter",
          "text": "<code>pDataSize</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>size_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPipelineCacheData-pData-parameter",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPipelineCacheData-pipelineCache-parent",
          "text": "<code>pipelineCache</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineCacheHeaderVersionOne": {
      "core": [
        {
          "vuid": "VUID-VkPipelineCacheHeaderVersionOne-headerSize-04967",
          "text": "<code>headerSize</code> <strong class=\"purple\">must</strong> be 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineCacheHeaderVersionOne-headerVersion-04968",
          "text": "<code>headerVersion</code> <strong class=\"purple\">must</strong> be <code>VK_PIPELINE_CACHE_HEADER_VERSION_ONE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineCacheHeaderVersionOne-headerSize-08990",
          "text": "<code>headerSize</code> <strong class=\"purple\">must</strong> not exceed the size of the pipeline cache",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineCacheHeaderVersionOne-headerVersion-parameter",
          "text": "<code>headerVersion</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineCacheHeaderVersion\">VkPipelineCacheHeaderVersion</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroyPipelineCache": {
      "core": [
        {
          "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-00771",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-00772",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyPipelineCache-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-parameter",
          "text": "If <code>pipelineCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineCache\">VkPipelineCache</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyPipelineCache-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-parent",
          "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>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPipelineKeyKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetPipelineKeyKHR-pNext-09605",
          "text": "The <code>pNext</code> chain of <code>pPipelineCreateInfo</code> <strong class=\"purple\">must</strong> not set <a href=\"#VkPipelineBinaryInfoKHR\">VkPipelineBinaryInfoKHR</a>::<code>binaryCount</code> to a value greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPipelineKeyKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPipelineKeyKHR-pPipelineCreateInfo-parameter",
          "text": "If <code>pPipelineCreateInfo</code> is not <code>NULL</code>, <code>pPipelineCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineCreateInfoKHR\">VkPipelineCreateInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPipelineKeyKHR-pPipelineKey-parameter",
          "text": "<code>pPipelineKey</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPipelineBinaryKeyKHR\">VkPipelineBinaryKeyKHR</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineCreateInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkPipelineCreateInfoKHR-pNext-09604",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be pointer to a valid instance of     <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>, <a href=\"#VkExecutionGraphPipelineCreateInfoAMDX\">VkExecutionGraphPipelineCreateInfoAMDX</a>, <a href=\"#VkRayTracingPipelineCreateInfoKHR\">VkRayTracingPipelineCreateInfoKHR</a>,     or <a href=\"#VkComputePipelineCreateInfo\">VkComputePipelineCreateInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineCreateInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_CREATE_INFO_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineBinaryKeyKHR": {
      "core": [
        {
          "vuid": "VUID-VkPipelineBinaryKeyKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_BINARY_KEY_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineBinaryKeyKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreatePipelineBinariesKHR": {
      "core": [
        {
          "vuid": "VUID-vkCreatePipelineBinariesKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreatePipelineBinariesKHR-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineBinaryCreateInfoKHR\">VkPipelineBinaryCreateInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreatePipelineBinariesKHR-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreatePipelineBinariesKHR-pBinaries-parameter",
          "text": "<code>pBinaries</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPipelineBinaryHandlesInfoKHR\">VkPipelineBinaryHandlesInfoKHR</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineBinaryHandlesInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkPipelineBinaryHandlesInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_BINARY_HANDLES_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineBinaryHandlesInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineBinaryHandlesInfoKHR-pPipelineBinaries-parameter",
          "text": "If <code>pipelineBinaryCount</code> is not <code>0</code>, and <code>pPipelineBinaries</code> is not <code>NULL</code>, <code>pPipelineBinaries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pipelineBinaryCount</code> <a href=\"#VkPipelineBinaryKHR\">VkPipelineBinaryKHR</a> handles",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineBinaryCreateInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkPipelineBinaryCreateInfoKHR-pipeline-09607",
          "text": "If <code>pipeline</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipeline</code> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineBinaryCreateInfoKHR-pipeline-09608",
          "text": "If <code>pipeline</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <a href=\"#vkReleaseCapturedPipelineDataKHR\">vkReleaseCapturedPipelineDataKHR</a> <strong class=\"purple\">must</strong> not have been called on <code>pipeline</code> prior to this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineBinaryCreateInfoKHR-pipelineBinaryInternalCache-09609",
          "text": "If <a href=\"#limits-pipelineBinaryInternalCache\"><code>pipelineBinaryInternalCache</code></a> is <code>VK_FALSE</code> pPipelineCreateInfo <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineBinaryCreateInfoKHR-device-09610",
          "text": "If <code>device</code> was created with <a href=\"#VkDevicePipelineBinaryInternalCacheControlKHR\">VkDevicePipelineBinaryInternalCacheControlKHR</a>::<code>disableInternalCache</code> set to <code>VK_TRUE</code>, <code>pPipelineCreateInfo</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineBinaryCreateInfoKHR-pKeysAndDataInfo-09619",
          "text": "One and only one of <code>pKeysAndDataInfo</code>, <code>pipeline</code>, or <code>pPipelineCreateInfo</code> <strong class=\"purple\">must</strong> be non-<code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineBinaryCreateInfoKHR-pPipelineCreateInfo-09606",
          "text": "If <code>pPipelineCreateInfo</code> is not <code>NULL</code>, the <code>pNext</code> chain of <code>pPipelineCreateInfo</code> <strong class=\"purple\">must</strong> not set <a href=\"#VkPipelineBinaryInfoKHR\">VkPipelineBinaryInfoKHR</a>::<code>binaryCount</code> to a value greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineBinaryCreateInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_BINARY_CREATE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineBinaryCreateInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineBinaryCreateInfoKHR-pKeysAndDataInfo-parameter",
          "text": "If <code>pKeysAndDataInfo</code> is not <code>NULL</code>, <code>pKeysAndDataInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineBinaryKeysAndDataKHR\">VkPipelineBinaryKeysAndDataKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineBinaryCreateInfoKHR-pipeline-parameter",
          "text": "If <code>pipeline</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineBinaryCreateInfoKHR-pPipelineCreateInfo-parameter",
          "text": "If <code>pPipelineCreateInfo</code> is not <code>NULL</code>, <code>pPipelineCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineCreateInfoKHR\">VkPipelineCreateInfoKHR</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineBinaryKeysAndDataKHR": {
      "core": [
        {
          "vuid": "VUID-VkPipelineBinaryKeysAndDataKHR-pPipelineBinaryKeys-parameter",
          "text": "<code>pPipelineBinaryKeys</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>binaryCount</code> valid <a href=\"#VkPipelineBinaryKeyKHR\">VkPipelineBinaryKeyKHR</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineBinaryKeysAndDataKHR-pPipelineBinaryData-parameter",
          "text": "<code>pPipelineBinaryData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>binaryCount</code> valid <a href=\"#VkPipelineBinaryDataKHR\">VkPipelineBinaryDataKHR</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineBinaryKeysAndDataKHR-binaryCount-arraylength",
          "text": "<code>binaryCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineBinaryDataKHR": {
      "core": [
        {
          "vuid": "VUID-VkPipelineBinaryDataKHR-pData-parameter",
          "text": "<code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineBinaryDataKHR-dataSize-arraylength",
          "text": "<code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPipelineBinaryDataKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetPipelineBinaryDataKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPipelineBinaryDataKHR-pInfo-parameter",
          "text": "<code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineBinaryDataInfoKHR\">VkPipelineBinaryDataInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPipelineBinaryDataKHR-pPipelineBinaryKey-parameter",
          "text": "<code>pPipelineBinaryKey</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPipelineBinaryKeyKHR\">VkPipelineBinaryKeyKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPipelineBinaryDataKHR-pPipelineBinaryDataSize-parameter",
          "text": "<code>pPipelineBinaryDataSize</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>size_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPipelineBinaryDataKHR-pPipelineBinaryData-parameter",
          "text": "If the value referenced by <code>pPipelineBinaryDataSize</code> is not <code>0</code>, and <code>pPipelineBinaryData</code> is not <code>NULL</code>, <code>pPipelineBinaryData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPipelineBinaryDataSize</code> bytes",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineBinaryDataInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkPipelineBinaryDataInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_BINARY_DATA_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineBinaryDataInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineBinaryDataInfoKHR-pipelineBinary-parameter",
          "text": "<code>pipelineBinary</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBinaryKHR\">VkPipelineBinaryKHR</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "vkReleaseCapturedPipelineDataKHR": {
      "core": [
        {
          "vuid": "VUID-vkReleaseCapturedPipelineDataKHR-pipeline-09611",
          "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 in <code>pAllocator</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkReleaseCapturedPipelineDataKHR-pipeline-09612",
          "text": "If no <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> were provided when <code>pipeline</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkReleaseCapturedPipelineDataKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkReleaseCapturedPipelineDataKHR-pInfo-parameter",
          "text": "<code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkReleaseCapturedPipelineDataInfoKHR\">VkReleaseCapturedPipelineDataInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkReleaseCapturedPipelineDataKHR-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkReleaseCapturedPipelineDataInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkReleaseCapturedPipelineDataInfoKHR-pipeline-09613",
          "text": "<code>pipeline</code> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkReleaseCapturedPipelineDataInfoKHR-pipeline-09618",
          "text": "<code>pipeline</code> <strong class=\"purple\">must</strong> not have been used in a previous call to <code>vkReleaseCapturedPipelineDataKHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkReleaseCapturedPipelineDataInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkReleaseCapturedPipelineDataInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkReleaseCapturedPipelineDataInfoKHR-pipeline-parameter",
          "text": "<code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroyPipelineBinaryKHR": {
      "core": [
        {
          "vuid": "VUID-vkDestroyPipelineBinaryKHR-pipelineBinary-09614",
          "text": "If <code>VkAllocationCallbacks</code> were provided when <code>pipelineBinary</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here.",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyPipelineBinaryKHR-pipelineBinary-09615",
          "text": "If no <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> were provided when <code>pipelineBinary</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyPipelineBinaryKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyPipelineBinaryKHR-pipelineBinary-parameter",
          "text": "If <code>pipelineBinary</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineBinary</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBinaryKHR\">VkPipelineBinaryKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyPipelineBinaryKHR-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyPipelineBinaryKHR-pipelineBinary-parent",
          "text": "If <code>pipelineBinary</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkSpecializationInfo": {
      "core": [
        {
          "vuid": "VUID-VkSpecializationInfo-offset-00773",
          "text": "The <code>offset</code> member of each element of <code>pMapEntries</code> <strong class=\"purple\">must</strong> be less than <code>dataSize</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSpecializationInfo-pMapEntries-00774",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSpecializationInfo-constantID-04911",
          "text": "The <code>constantID</code> value of each element of <code>pMapEntries</code> <strong class=\"purple\">must</strong> be unique within <code>pMapEntries</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSpecializationInfo-pMapEntries-parameter",
          "text": "If <code>mapEntryCount</code> is not <code>0</code>, <code>pMapEntries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>mapEntryCount</code> valid <a href=\"#VkSpecializationMapEntry\">VkSpecializationMapEntry</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSpecializationInfo-pData-parameter",
          "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",
          "page": "vkspec"
        }
      ]
    },
    "VkSpecializationMapEntry": {
      "core": [
        {
          "vuid": "VUID-VkSpecializationMapEntry-constantID-00776",
          "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 <a href=\"#VkBool32\">VkBool32</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineLibraryCreateInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkPipelineLibraryCreateInfoKHR-pLibraries-03381",
          "text": "Each element of <code>pLibraries</code> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLibraryCreateInfoKHR-pLibraries-06855",
          "text": "If any library in <code>pLibraries</code> was created with a shader stage with <a href=\"#VkPipelineShaderStageModuleIdentifierCreateInfoEXT\">VkPipelineShaderStageModuleIdentifierCreateInfoEXT</a> and <code>identifierSize</code> not equal to 0, the pipeline <strong class=\"purple\">must</strong> be created with the <code>VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT</code> flag set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLibraryCreateInfoKHR-pLibraries-08096",
          "text": "If any element of <code>pLibraries</code> was created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, all elements <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLibraryCreateInfoKHR-pipeline-07404",
          "text": "If <code>pipeline</code> is being created with <code>VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT</code>, every element of <code>pLibraries</code> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLibraryCreateInfoKHR-pipeline-07405",
          "text": "If <code>pipeline</code> is being created without <code>VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT</code>, every element of <code>pLibraries</code> <strong class=\"purple\">must</strong> have been created without <code>VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLibraryCreateInfoKHR-pipeline-07406",
          "text": "If <code>pipeline</code> is being created with <code>VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT</code>, every element of <code>pLibraries</code> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLibraryCreateInfoKHR-pipeline-07407",
          "text": "If <code>pipeline</code> is being created without <code>VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT</code>, every element of <code>pLibraries</code> <strong class=\"purple\">must</strong> have been created without <code>VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLibraryCreateInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLibraryCreateInfoKHR-pLibraries-parameter",
          "text": "If <code>libraryCount</code> is not <code>0</code>, <code>pLibraries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>libraryCount</code> valid <a href=\"#VkPipeline\">VkPipeline</a> handles",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdBindPipeline": {
      "core": [
        {
          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00777",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00778",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00779",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00780",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindPipeline-pipeline-00781",
          "text": "If the <a href=\"#features-variableMultisampleRate\"><code>variableMultisampleRate</code></a> feature is not supported, <code>pipeline</code> is a graphics pipeline, the current subpass <a href=\"#renderpass-noattachments\">uses no attachments</a>, and this is not the first call to this function with a graphics pipeline after transitioning to the current subpass, then the sample count specified by this pipeline <strong class=\"purple\">must</strong> match that set in the previous pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindPipeline-variableSampleLocations-01525",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindPipeline-None-02323",
          "text": "This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-02391",
          "text": "If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR</code>, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-02392",
          "text": "If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR</code>, <code>pipeline</code> <strong class=\"purple\">must</strong> be a ray tracing pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-06721",
          "text": "If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR</code>, <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindPipeline-pipelineProtectedAccess-07408",
          "text": "If the <a href=\"#features-pipelineProtectedAccess\"><code>pipelineProtectedAccess</code></a> feature is enabled, and <code>commandBuffer</code> is a protected command buffer, <code>pipeline</code> <strong class=\"purple\">must</strong> have been created without <code>VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindPipeline-pipelineProtectedAccess-07409",
          "text": "If the <a href=\"#features-pipelineProtectedAccess\"><code>pipelineProtectedAccess</code></a> feature is enabled, and <code>commandBuffer</code> is not a protected command buffer, <code>pipeline</code> <strong class=\"purple\">must</strong> have been created without <code>VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindPipeline-pipeline-03382",
          "text": "<code>pipeline</code> <strong class=\"purple\">must</strong> not have been created with <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code> set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindPipeline-commandBuffer-04808",
          "text": "If <code>commandBuffer</code> is a secondary command buffer with <a href=\"#VkCommandBufferInheritanceViewportScissorInfoNV\">VkCommandBufferInheritanceViewportScissorInfoNV</a>::<code>viewportScissor2D</code> enabled and <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, then the <code>pipeline</code> <strong class=\"purple\">must</strong> have been created with <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> or <code>VK_DYNAMIC_STATE_VIEWPORT</code>, and <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> or <code>VK_DYNAMIC_STATE_SCISSOR</code> enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindPipeline-commandBuffer-04809",
          "text": "If <code>commandBuffer</code> is a secondary command buffer with <a href=\"#VkCommandBufferInheritanceViewportScissorInfoNV\">VkCommandBufferInheritanceViewportScissorInfoNV</a>::<code>viewportScissor2D</code> enabled and <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> and <code>pipeline</code> was created with <a href=\"#VkPipelineDiscardRectangleStateCreateInfoEXT\">VkPipelineDiscardRectangleStateCreateInfoEXT</a> structure and its <code>discardRectangleCount</code> member is not <code>0</code>, or the pipeline was created with <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT</code> enabled, then the pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT</code> enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-04881",
          "text": "If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> and the <a href=\"#limits-provokingVertexModePerPipeline\"><code>provokingVertexModePerPipeline</code></a> limit is <code>VK_FALSE</code>, then pipeline&#8217;s <a href=\"#VkPipelineRasterizationProvokingVertexStateCreateInfoEXT\">VkPipelineRasterizationProvokingVertexStateCreateInfoEXT</a>::<code>provokingVertexMode</code> <strong class=\"purple\">must</strong> be the same as that of any other pipelines previously bound to this bind point within the current render pass instance, including any pipeline already bound when beginning the render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-04949",
          "text": "If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI</code>, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-04950",
          "text": "If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI</code>, <code>pipeline</code> <strong class=\"purple\">must</strong> be a subpass shading pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindPipeline-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-parameter",
          "text": "<code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindPipeline-pipeline-parameter",
          "text": "<code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindPipeline-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindPipeline-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindPipeline-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindPipeline-commonparent",
          "text": "Both of <code>commandBuffer</code>, and <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdBindPipelineShaderGroupNV": {
      "core": [
        {
          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-groupIndex-02893",
          "text": "<code>groupIndex</code> <strong class=\"purple\">must</strong> be <code>0</code> or less than the effective <a href=\"#VkGraphicsPipelineShaderGroupsCreateInfoNV\">VkGraphicsPipelineShaderGroupsCreateInfoNV</a>::<code>groupCount</code> including the referenced pipelines",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-pipelineBindPoint-02894",
          "text": "The <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-groupIndex-02895",
          "text": "The same restrictions as <a href=\"#vkCmdBindPipeline\">vkCmdBindPipeline</a> apply as if the bound pipeline was created only with the Shader Group from the <code>groupIndex</code> information",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-deviceGeneratedCommands-02896",
          "text": "The <a href=\"#features-deviceGeneratedCommands\"><code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-pipelineBindPoint-parameter",
          "text": "<code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-pipeline-parameter",
          "text": "<code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-commonparent",
          "text": "Both of <code>commandBuffer</code>, and <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPipelineExecutablePropertiesKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-pipelineExecutableInfo-03270",
          "text": "The <a href=\"#features-pipelineExecutableInfo\"><code>pipelineExecutableInfo</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-pipeline-03271",
          "text": "The <code>pipeline</code> member of <code>pPipelineInfo</code> <strong class=\"purple\">must</strong> have been created with <code>device</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-pPipelineInfo-parameter",
          "text": "<code>pPipelineInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineInfoKHR\">VkPipelineInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-pExecutableCount-parameter",
          "text": "<code>pExecutableCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-pProperties-parameter",
          "text": "If the value referenced by <code>pExecutableCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pExecutableCount</code> <a href=\"#VkPipelineExecutablePropertiesKHR\">VkPipelineExecutablePropertiesKHR</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineExecutablePropertiesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPipelineExecutablePropertiesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineExecutablePropertiesKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPipelinePropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-vkGetPipelinePropertiesEXT-pipeline-06738",
          "text": "The <code>pipeline</code> member of <code>pPipelineInfo</code> <strong class=\"purple\">must</strong> have been created with <code>device</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPipelinePropertiesEXT-pPipelineProperties-06739",
          "text": "<code>pPipelineProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPipelinePropertiesIdentifierEXT\">VkPipelinePropertiesIdentifierEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPipelinePropertiesEXT-None-06766",
          "text": "The <a href=\"#features-pipelinePropertiesIdentifier\"><code>pipelinePropertiesIdentifier</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPipelinePropertiesEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPipelinePropertiesEXT-pPipelineInfo-parameter",
          "text": "<code>pPipelineInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineInfoEXT\">VkPipelineInfoEXT</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelinePropertiesIdentifierEXT": {
      "core": [
        {
          "vuid": "VUID-VkPipelinePropertiesIdentifierEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelinePropertiesIdentifierEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkPipelineInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineInfoKHR-pipeline-parameter",
          "text": "<code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPipelineExecutableStatisticsKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pipelineExecutableInfo-03272",
          "text": "The <a href=\"#features-pipelineExecutableInfo\"><code>pipelineExecutableInfo</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pipeline-03273",
          "text": "The <code>pipeline</code> member of <code>pExecutableInfo</code> <strong class=\"purple\">must</strong> have been created with <code>device</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pipeline-03274",
          "text": "The <code>pipeline</code> member of <code>pExecutableInfo</code> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pExecutableInfo-parameter",
          "text": "<code>pExecutableInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineExecutableInfoKHR\">VkPipelineExecutableInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pStatisticCount-parameter",
          "text": "<code>pStatisticCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pStatistics-parameter",
          "text": "If the value referenced by <code>pStatisticCount</code> is not <code>0</code>, and <code>pStatistics</code> is not <code>NULL</code>, <code>pStatistics</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pStatisticCount</code> <a href=\"#VkPipelineExecutableStatisticKHR\">VkPipelineExecutableStatisticKHR</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineExecutableInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkPipelineExecutableInfoKHR-executableIndex-03275",
          "text": "<code>executableIndex</code> <strong class=\"purple\">must</strong> be less than the number of pipeline executables associated with <code>pipeline</code> as returned in the <code>pExecutableCount</code> parameter of <code>vkGetPipelineExecutablePropertiesKHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineExecutableInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineExecutableInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineExecutableInfoKHR-pipeline-parameter",
          "text": "<code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineExecutableStatisticKHR": {
      "core": [
        {
          "vuid": "VUID-VkPipelineExecutableStatisticKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineExecutableStatisticKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPipelineExecutableInternalRepresentationsKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pipelineExecutableInfo-03276",
          "text": "The <a href=\"#features-pipelineExecutableInfo\"><code>pipelineExecutableInfo</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pipeline-03277",
          "text": "The <code>pipeline</code> member of <code>pExecutableInfo</code> <strong class=\"purple\">must</strong> have been created with <code>device</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pipeline-03278",
          "text": "The <code>pipeline</code> member of <code>pExecutableInfo</code> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pExecutableInfo-parameter",
          "text": "<code>pExecutableInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineExecutableInfoKHR\">VkPipelineExecutableInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pInternalRepresentationCount-parameter",
          "text": "<code>pInternalRepresentationCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pInternalRepresentations-parameter",
          "text": "If the value referenced by <code>pInternalRepresentationCount</code> is not <code>0</code>, and <code>pInternalRepresentations</code> is not <code>NULL</code>, <code>pInternalRepresentations</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pInternalRepresentationCount</code> <a href=\"#VkPipelineExecutableInternalRepresentationKHR\">VkPipelineExecutableInternalRepresentationKHR</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineExecutableInternalRepresentationKHR": {
      "core": [
        {
          "vuid": "VUID-VkPipelineExecutableInternalRepresentationKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineExecutableInternalRepresentationKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetShaderInfoAMD": {
      "core": [
        {
          "vuid": "VUID-vkGetShaderInfoAMD-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetShaderInfoAMD-pipeline-parameter",
          "text": "<code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetShaderInfoAMD-shaderStage-parameter",
          "text": "<code>shaderStage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetShaderInfoAMD-infoType-parameter",
          "text": "<code>infoType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderInfoTypeAMD\">VkShaderInfoTypeAMD</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetShaderInfoAMD-pInfoSize-parameter",
          "text": "<code>pInfoSize</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>size_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetShaderInfoAMD-pInfo-parameter",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetShaderInfoAMD-pipeline-parent",
          "text": "<code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineCompilerControlCreateInfoAMD": {
      "core": [
        {
          "vuid": "VUID-VkPipelineCompilerControlCreateInfoAMD-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineCompilerControlCreateInfoAMD-compilerControlFlags-zerobitmask",
          "text": "<code>compilerControlFlags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineCreationFeedbackCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkPipelineCreationFeedbackCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineCreationFeedbackCreateInfo-pPipelineCreationFeedback-parameter",
          "text": "<code>pPipelineCreationFeedback</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPipelineCreationFeedback\">VkPipelineCreationFeedback</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineCreationFeedbackCreateInfo-pPipelineStageCreationFeedbacks-parameter",
          "text": "If <code>pipelineStageCreationFeedbackCount</code> is not <code>0</code>, <code>pPipelineStageCreationFeedbacks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pipelineStageCreationFeedbackCount</code> <a href=\"#VkPipelineCreationFeedback\">VkPipelineCreationFeedback</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkAllocationCallbacks": {
      "core": [
        {
          "vuid": "VUID-VkAllocationCallbacks-pfnAllocation-00632",
          "text": "<code>pfnAllocation</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid application-defined <a href=\"#PFN_vkAllocationFunction\">PFN_vkAllocationFunction</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAllocationCallbacks-pfnReallocation-00633",
          "text": "<code>pfnReallocation</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid application-defined <a href=\"#PFN_vkReallocationFunction\">PFN_vkReallocationFunction</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAllocationCallbacks-pfnFree-00634",
          "text": "<code>pfnFree</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid application-defined <a href=\"#PFN_vkFreeFunction\">PFN_vkFreeFunction</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635",
          "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",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceMemoryProperties": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties-pMemoryProperties-parameter",
          "text": "<code>pMemoryProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPhysicalDeviceMemoryProperties\">VkPhysicalDeviceMemoryProperties</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceMemoryProperties2": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties2-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties2-pMemoryProperties-parameter",
          "text": "<code>pMemoryProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPhysicalDeviceMemoryProperties2\">VkPhysicalDeviceMemoryProperties2</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceMemoryProperties2": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceMemoryProperties2-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceMemoryProperties2-pNext-pNext",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceMemoryProperties2-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceMemoryBudgetPropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceMemoryBudgetPropertiesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkAllocateMemory": {
      "core": [
        {
          "vuid": "VUID-vkAllocateMemory-pAllocateInfo-01713",
          "text": "<code>pAllocateInfo-&gt;allocationSize</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMemoryProperties\">VkPhysicalDeviceMemoryProperties</a>::<code>memoryHeaps</code>[memindex].<code>size</code> where <code>memindex</code> = <a href=\"#VkPhysicalDeviceMemoryProperties\">VkPhysicalDeviceMemoryProperties</a>::<code>memoryTypes</code>[<code>pAllocateInfo-&gt;memoryTypeIndex</code>].<code>heapIndex</code> as returned by <a href=\"#vkGetPhysicalDeviceMemoryProperties\">vkGetPhysicalDeviceMemoryProperties</a> for the <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> that <code>device</code> was created from",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAllocateMemory-pAllocateInfo-01714",
          "text": "<code>pAllocateInfo-&gt;memoryTypeIndex</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkPhysicalDeviceMemoryProperties\">VkPhysicalDeviceMemoryProperties</a>::<code>memoryTypeCount</code> as returned by <a href=\"#vkGetPhysicalDeviceMemoryProperties\">vkGetPhysicalDeviceMemoryProperties</a> for the <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> that <code>device</code> was created from",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAllocateMemory-deviceCoherentMemory-02790",
          "text": "If the <a href=\"#features-deviceCoherentMemory\"><code>deviceCoherentMemory</code></a> feature is not enabled, <code>pAllocateInfo-&gt;memoryTypeIndex</code> <strong class=\"purple\">must</strong> not identify a memory type supporting <code>VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAllocateMemory-maxMemoryAllocationCount-04101",
          "text": "There <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxMemoryAllocationCount</code> device memory allocations currently allocated on the device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAllocateMemory-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAllocateMemory-pAllocateInfo-parameter",
          "text": "<code>pAllocateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAllocateMemory-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAllocateMemory-pMemory-parameter",
          "text": "<code>pMemory</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkMemoryAllocateInfo": {
      "core": [
        {
          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-07897",
          "text": "If the parameters do not define an <a href=\"#memory-import-operation\">import or export operation</a>, <code>allocationSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-None-06657",
          "text": "The parameters <strong class=\"purple\">must</strong> not define more than one <a href=\"#memory-import-operation\">import operation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-07899",
          "text": "If the parameters define an export operation and the handle type is not <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> , <code>allocationSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-buffer-06380",
          "text": "If the parameters define an import operation from an <a href=\"#VkBufferCollectionFUCHSIA\">VkBufferCollectionFUCHSIA</a>, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> is present and non-NULL, <a href=\"#VkImportMemoryBufferCollectionFUCHSIA\">VkImportMemoryBufferCollectionFUCHSIA</a>::<code>collection</code> and <a href=\"#VkImportMemoryBufferCollectionFUCHSIA\">VkImportMemoryBufferCollectionFUCHSIA</a>::<code>index</code> <strong class=\"purple\">must</strong> match <a href=\"#VkBufferCollectionBufferCreateInfoFUCHSIA\">VkBufferCollectionBufferCreateInfoFUCHSIA</a>::<code>collection</code> and <a href=\"#VkBufferCollectionBufferCreateInfoFUCHSIA\">VkBufferCollectionBufferCreateInfoFUCHSIA</a>::<code>index</code>, respectively, of the <a href=\"#VkBufferCollectionBufferCreateInfoFUCHSIA\">VkBufferCollectionBufferCreateInfoFUCHSIA</a> structure used to create the <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-image-06381",
          "text": "If the parameters define an import operation from an <a href=\"#VkBufferCollectionFUCHSIA\">VkBufferCollectionFUCHSIA</a>, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> is present and non-NULL, <a href=\"#VkImportMemoryBufferCollectionFUCHSIA\">VkImportMemoryBufferCollectionFUCHSIA</a>::<code>collection</code> and <a href=\"#VkImportMemoryBufferCollectionFUCHSIA\">VkImportMemoryBufferCollectionFUCHSIA</a>::<code>index</code> <strong class=\"purple\">must</strong> match <a href=\"#VkBufferCollectionImageCreateInfoFUCHSIA\">VkBufferCollectionImageCreateInfoFUCHSIA</a>::<code>collection</code> and <a href=\"#VkBufferCollectionImageCreateInfoFUCHSIA\">VkBufferCollectionImageCreateInfoFUCHSIA</a>::<code>index</code>, respectively, of the <a href=\"#VkBufferCollectionImageCreateInfoFUCHSIA\">VkBufferCollectionImageCreateInfoFUCHSIA</a> structure used to create the <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-06382",
          "text": "If the parameters define an import operation from an <a href=\"#VkBufferCollectionFUCHSIA\">VkBufferCollectionFUCHSIA</a>, <code>allocationSize</code> <strong class=\"purple\">must</strong> match <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a>::<code>size</code> value retrieved by <a href=\"#vkGetImageMemoryRequirements\">vkGetImageMemoryRequirements</a> or <a href=\"#vkGetBufferMemoryRequirements\">vkGetBufferMemoryRequirements</a> for image-based or buffer-based collections respectively",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-pNext-06383",
          "text": "If the parameters define an import operation from an <a href=\"#VkBufferCollectionFUCHSIA\">VkBufferCollectionFUCHSIA</a>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure with either its <code>image</code> or <code>buffer</code> field set to a value other than <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-image-06384",
          "text": "If the parameters define an import operation from an <a href=\"#VkBufferCollectionFUCHSIA\">VkBufferCollectionFUCHSIA</a> and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the <code>image</code> <strong class=\"purple\">must</strong> be created with a <a href=\"#VkBufferCollectionImageCreateInfoFUCHSIA\">VkBufferCollectionImageCreateInfoFUCHSIA</a> structure chained to its <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>pNext</code> pointer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-buffer-06385",
          "text": "If the parameters define an import operation from an <a href=\"#VkBufferCollectionFUCHSIA\">VkBufferCollectionFUCHSIA</a> and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the <code>buffer</code> <strong class=\"purple\">must</strong> be created with a <a href=\"#VkBufferCollectionBufferCreateInfoFUCHSIA\">VkBufferCollectionBufferCreateInfoFUCHSIA</a> structure chained to its <a href=\"#VkBufferCreateInfo\">VkBufferCreateInfo</a>::<code>pNext</code> pointer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-06386",
          "text": "If the parameters define an import operation from an <a href=\"#VkBufferCollectionFUCHSIA\">VkBufferCollectionFUCHSIA</a>, <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> be from <a href=\"#VkBufferCollectionPropertiesFUCHSIA\">VkBufferCollectionPropertiesFUCHSIA</a> as retrieved by <a href=\"#vkGetBufferCollectionPropertiesFUCHSIA\">vkGetBufferCollectionPropertiesFUCHSIA</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-pNext-00639",
          "text": "If the <code>pNext</code> chain includes a <code>VkExportMemoryAllocateInfo</code> structure, and any of the handle types specified in <code>VkExportMemoryAllocateInfo</code>::<code>handleTypes</code> require a dedicated allocation, as reported by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a> in <code>VkExternalImageFormatProperties</code>::<code>externalMemoryProperties.externalMemoryFeatures</code>, or by <a href=\"#vkGetPhysicalDeviceExternalBufferProperties\">vkGetPhysicalDeviceExternalBufferProperties</a> in <code>VkExternalBufferProperties</code>::<code>externalMemoryProperties.externalMemoryFeatures</code>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <code>VkMemoryDedicatedAllocateInfo</code> or <code>VkDedicatedAllocationMemoryAllocateInfoNV</code> structure with either its <code>image</code> or <code>buffer</code> member set to a value other than <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-pNext-00640",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a> structure, it <strong class=\"purple\">must</strong> not include a <a href=\"#VkExportMemoryAllocateInfoNV\">VkExportMemoryAllocateInfoNV</a> or <a href=\"#VkExportMemoryWin32HandleInfoNV\">VkExportMemoryWin32HandleInfoNV</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-pNext-00641",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkImportMemoryWin32HandleInfoKHR\">VkImportMemoryWin32HandleInfoKHR</a> structure, it <strong class=\"purple\">must</strong> not include a <a href=\"#VkImportMemoryWin32HandleInfoNV\">VkImportMemoryWin32HandleInfoNV</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-01742",
          "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</code>, then the values of <code>allocationSize</code> and <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> match those specified when the payload being imported was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-None-00643",
          "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 the mask specified when the payload being imported was allocated",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-None-00644",
          "text": "If the parameters define an import operation and the external handle specified was created by the Vulkan API, the list of physical devices that comprise the logical device passed to <a href=\"#vkAllocateMemory\">vkAllocateMemory</a> <strong class=\"purple\">must</strong> match the list of physical devices that comprise the logical device on which the payload was originally allocated",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-00645",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-01743",
          "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</code> or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT</code>, then the values of <code>allocationSize</code> and <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> match those specified when the payload being imported was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-00647",
          "text": "If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT</code>, <code>allocationSize</code> <strong class=\"purple\">must</strong> match the size specified when creating the Direct3D 12 heap from which the payload was extracted",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-00648",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-01872",
          "text": "If the <a href=\"#features-protectedMemory\"><code>protectedMemory</code></a> 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-01744",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-01745",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02805",
          "text": "If the parameters define an import operation and the external handle is a host pointer, the <code>pNext</code> chain <strong class=\"purple\">must</strong> not include a <a href=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a> structure with either its <code>image</code> or <code>buffer</code> field set to a value other than <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02806",
          "text": "If the parameters define an import operation and the external handle is a host pointer, the <code>pNext</code> chain <strong class=\"purple\">must</strong> not include a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure with either its <code>image</code> or <code>buffer</code> field set to a value other than <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-02383",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02384",
          "text": "If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code>, and the <code>pNext</code> chain does not include a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure or <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the Android hardware buffer <strong class=\"purple\">must</strong> have a <code>AHardwareBuffer_Desc</code>::<code>format</code> of <code>AHARDWAREBUFFER_FORMAT_BLOB</code> and a <code>AHardwareBuffer_Desc</code>::<code>usage</code> that includes <code>AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-02385",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-pNext-01874",
          "text": "If the parameters do not define an import operation, and the <code>pNext</code> chain includes a <code>VkExportMemoryAllocateInfo</code> structure with <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> included in its <code>handleTypes</code> member, and the <code>pNext</code> chain includes a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure with <code>image</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>allocationSize</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-pNext-07900",
          "text": "If the parameters define an export operation, the handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code>, and the <code>pNext</code> does not include a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure, <code>allocationSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-pNext-07901",
          "text": "If the parameters define an export operation, the handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code>, and the <code>pNext</code> chain includes a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure with <code>buffer</code> set to a valid <a href=\"#VkBuffer\">VkBuffer</a> object, <code>allocationSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02386",
          "text": "If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the Android hardware buffer&#8217;s <a href=\"#AHardwareBuffer\">AHardwareBuffer</a>::<code>usage</code> <strong class=\"purple\">must</strong> include at least one of <code>AHARDWAREBUFFER_USAGE_GPU_FRAMEBUFFER</code>, <code>AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE</code> or <code>AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02387",
          "text": "If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the format of <code>image</code> <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code> or the format returned by <a href=\"#vkGetAndroidHardwareBufferPropertiesANDROID\">vkGetAndroidHardwareBufferPropertiesANDROID</a> in <a href=\"#VkAndroidHardwareBufferFormatPropertiesANDROID\">VkAndroidHardwareBufferFormatPropertiesANDROID</a>::<code>format</code> for the Android hardware buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02388",
          "text": "If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the width, height, and array layer dimensions of <code>image</code> and the Android hardware buffer&#8217;s <code>AHardwareBuffer_Desc</code> <strong class=\"purple\">must</strong> be identical",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02389",
          "text": "If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the Android hardware buffer&#8217;s <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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02586",
          "text": "If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the Android hardware buffer&#8217;s <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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02390",
          "text": "If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, each bit set in the usage of <code>image</code> <strong class=\"purple\">must</strong> be listed in <a href=\"#memory-external-android-hardware-buffer-usage\">AHardwareBuffer Usage Equivalence</a>, and if there is a corresponding <code>AHARDWAREBUFFER_USAGE</code> bit listed that bit <strong class=\"purple\">must</strong> be included in the Android hardware buffer&#8217;s <code>AHardwareBuffer_Desc</code>::<code>usage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-screenBufferImport-08941",
          "text": "If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX</code>, <a href=\"#VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX\">VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX</a>::<code>screenBufferImport</code> <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-08942",
          "text": "If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX</code>, <code>allocationSize</code> <strong class=\"purple\">must</strong> be the size returned by <a href=\"#vkGetScreenBufferPropertiesQNX\">vkGetScreenBufferPropertiesQNX</a> for the QNX Screen buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-08943",
          "text": "If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX</code>, <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> be one of those returned by <a href=\"#vkGetScreenBufferPropertiesQNX\">vkGetScreenBufferPropertiesQNX</a> for the QNX Screen buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-pNext-08944",
          "text": "If the parameters define an import operation, the external handle is a QNX Screen buffer, and the <code>pNext</code> chain includes a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the QNX Screen&#8217;s buffer <strong class=\"purple\">must</strong> be a <a href=\"#memory-external-screen-buffer-validity\">valid QNX Screen buffer</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-pNext-08945",
          "text": "If the parameters define an import operation, the external handle is an QNX Screen buffer, and the <code>pNext</code> chain includes a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the format of <code>image</code> <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code> or the format returned by <a href=\"#vkGetScreenBufferPropertiesQNX\">vkGetScreenBufferPropertiesQNX</a> in <a href=\"#VkScreenBufferFormatPropertiesQNX\">VkScreenBufferFormatPropertiesQNX</a>::<code>format</code> for the QNX Screen buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-pNext-08946",
          "text": "If the parameters define an import operation, the external handle is a QNX Screen buffer, and the <code>pNext</code> chain includes a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the width, height, and array layer dimensions of <code>image</code> and the QNX Screen buffer&#8217;s <code>_screen_buffer</code> <strong class=\"purple\">must</strong> be identical",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-opaqueCaptureAddress-03329",
          "text": "If <a href=\"#VkMemoryOpaqueCaptureAddressAllocateInfo\">VkMemoryOpaqueCaptureAddressAllocateInfo</a>::<code>opaqueCaptureAddress</code> is not zero, <code>VkMemoryAllocateFlagsInfo</code>::<code>flags</code> <strong class=\"purple\">must</strong> include <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-flags-03330",
          "text": "If <code>VkMemoryAllocateFlagsInfo</code>::<code>flags</code> includes <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT</code>, the <a href=\"#features-bufferDeviceAddressCaptureReplay\"><code>bufferDeviceAddressCaptureReplay</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-flags-03331",
          "text": "If <code>VkMemoryAllocateFlagsInfo</code>::<code>flags</code> includes <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT</code>, the <a href=\"#features-bufferDeviceAddress\"><code>bufferDeviceAddress</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-pNext-03332",
          "text": "If the <code>pNext</code> chain includes a <code>VkImportMemoryHostPointerInfoEXT</code> structure, <a href=\"#VkMemoryOpaqueCaptureAddressAllocateInfo\">VkMemoryOpaqueCaptureAddressAllocateInfo</a>::<code>opaqueCaptureAddress</code> <strong class=\"purple\">must</strong> be zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-opaqueCaptureAddress-03333",
          "text": "If the parameters define an import operation, <a href=\"#VkMemoryOpaqueCaptureAddressAllocateInfo\">VkMemoryOpaqueCaptureAddressAllocateInfo</a>::<code>opaqueCaptureAddress</code> <strong class=\"purple\">must</strong> be zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-None-04749",
          "text": "If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA</code>, the value of <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> be an index identifying a memory type from the <code>memoryTypeBits</code> field of the <a href=\"#VkMemoryZirconHandlePropertiesFUCHSIA\">VkMemoryZirconHandlePropertiesFUCHSIA</a> structure populated by a call to <a href=\"#vkGetMemoryZirconHandlePropertiesFUCHSIA\">vkGetMemoryZirconHandlePropertiesFUCHSIA</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-07902",
          "text": "If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA</code>, the value of <code>allocationSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-07903",
          "text": "If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA</code>, the value of <code>allocationSize</code> <strong class=\"purple\">must</strong> be less than or equal to the size of the VMO as determined by <code>zx_vmo_get_size</code>(<code>handle</code>) where <code>handle</code> is the VMO handle to the imported external memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-pNext-06780",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkExportMetalObjectCreateInfoEXT\">VkExportMetalObjectCreateInfoEXT</a> structure, its <code>exportObjectType</code> member <strong class=\"purple\">must</strong> be <code>VK_EXPORT_METAL_OBJECT_TYPE_METAL_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-pNext-pNext",
          "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=\"#VkExportMetalObjectCreateInfoEXT\">VkExportMetalObjectCreateInfoEXT</a>, <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a>, <a href=\"#VkImportMemoryBufferCollectionFUCHSIA\">VkImportMemoryBufferCollectionFUCHSIA</a>, <a href=\"#VkImportMemoryFdInfoKHR\">VkImportMemoryFdInfoKHR</a>, <a href=\"#VkImportMemoryHostPointerInfoEXT\">VkImportMemoryHostPointerInfoEXT</a>, <a href=\"#VkImportMemoryWin32HandleInfoKHR\">VkImportMemoryWin32HandleInfoKHR</a>, <a href=\"#VkImportMemoryWin32HandleInfoNV\">VkImportMemoryWin32HandleInfoNV</a>, <a href=\"#VkImportMemoryZirconHandleInfoFUCHSIA\">VkImportMemoryZirconHandleInfoFUCHSIA</a>, <a href=\"#VkImportMetalBufferInfoEXT\">VkImportMetalBufferInfoEXT</a>, <a href=\"#VkImportScreenBufferInfoQNX\">VkImportScreenBufferInfoQNX</a>, <a href=\"#VkMemoryAllocateFlagsInfo\">VkMemoryAllocateFlagsInfo</a>, <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>, <a href=\"#VkMemoryOpaqueCaptureAddressAllocateInfo\">VkMemoryOpaqueCaptureAddressAllocateInfo</a>, or <a href=\"#VkMemoryPriorityAllocateInfoEXT\">VkMemoryPriorityAllocateInfoEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateInfo-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique, with the exception of structures of type <a href=\"#VkExportMetalObjectCreateInfoEXT\">VkExportMetalObjectCreateInfoEXT</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkMemoryDedicatedAllocateInfo": {
      "core": [
        {
          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01432",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-02964",
          "text": "If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>     and the memory is not an imported Android Hardware Buffer or an imported QNX Screen buffer     , <code>VkMemoryAllocateInfo</code>::<code>allocationSize</code> <strong class=\"purple\">must</strong> equal the     <code>VkMemoryRequirements</code>::<code>size</code> of the image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01434",
          "text": "If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> have been created without <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code> set in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-02965",
          "text": "If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>     and the memory is not an imported Android Hardware Buffer or an imported QNX Screen buffer     , <code>VkMemoryAllocateInfo</code>::<code>allocationSize</code> <strong class=\"purple\">must</strong> equal the     <code>VkMemoryRequirements</code>::<code>size</code> of the buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01436",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01876",
          "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> <strong class=\"purple\">must</strong> be identical to the image associated with the imported memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01877",
          "text": "If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation with handle type <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT</code>, or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT</code>, and the external handle was created by the Vulkan API, then the memory being imported <strong class=\"purple\">must</strong> also be a dedicated buffer allocation and <code>buffer</code> <strong class=\"purple\">must</strong> be identical to the buffer associated with the imported memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01878",
          "text": "If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation with handle type <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT</code>, the memory being imported <strong class=\"purple\">must</strong> also be a dedicated image allocation and <code>image</code> <strong class=\"purple\">must</strong> be identical to the image associated with the imported memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01879",
          "text": "If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation with handle type <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT</code>, the memory being imported <strong class=\"purple\">must</strong> also be a dedicated buffer allocation and <code>buffer</code> <strong class=\"purple\">must</strong> be identical to the buffer associated with the imported memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01797",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-04751",
          "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_ZIRCON_VMO_BIT_FUCHSIA</code>, the memory being imported <strong class=\"purple\">must</strong> also be a dedicated image allocation and <code>image</code> <strong class=\"purple\">must</strong> be identical to the image associated with the imported memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-04752",
          "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_ZIRCON_VMO_BIT_FUCHSIA</code>, the memory being imported <strong class=\"purple\">must</strong> also be a dedicated buffer allocation and <code>buffer</code> <strong class=\"purple\">must</strong> be identical to the buffer associated with the imported memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-parameter",
          "text": "If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-parameter",
          "text": "If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-commonparent",
          "text": "Both of <code>buffer</code>, and <code>image</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkDedicatedAllocationMemoryAllocateInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00649",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00650",
          "text": "If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the image <strong class=\"purple\">must</strong> have been created with <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00651",
          "text": "If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the buffer <strong class=\"purple\">must</strong> have been created with <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00652",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00653",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00654",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00655",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-parameter",
          "text": "If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-parameter",
          "text": "If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-commonparent",
          "text": "Both of <code>buffer</code>, and <code>image</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkMemoryPriorityAllocateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkMemoryPriorityAllocateInfoEXT-priority-02602",
          "text": "<code>priority</code> <strong class=\"purple\">must</strong> be between <code>0</code> and <code>1</code>, inclusive",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryPriorityAllocateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkSetDeviceMemoryPriorityEXT": {
      "core": [
        {
          "vuid": "VUID-vkSetDeviceMemoryPriorityEXT-priority-06258",
          "text": "<code>priority</code> <strong class=\"purple\">must</strong> be between <code>0</code> and <code>1</code>, inclusive",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetDeviceMemoryPriorityEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetDeviceMemoryPriorityEXT-memory-parameter",
          "text": "<code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetDeviceMemoryPriorityEXT-memory-parent",
          "text": "<code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkExportMemoryAllocateInfo": {
      "core": [
        {
          "vuid": "VUID-VkExportMemoryAllocateInfo-handleTypes-00656",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportMemoryAllocateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportMemoryAllocateInfo-handleTypes-parameter",
          "text": "<code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> values",
          "page": "vkspec"
        }
      ]
    },
    "VkExportMemoryAllocateInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkExportMemoryAllocateInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportMemoryAllocateInfoNV-handleTypes-parameter",
          "text": "<code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values",
          "page": "vkspec"
        }
      ]
    },
    "VkExportMemoryWin32HandleInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkExportMemoryWin32HandleInfoKHR-handleTypes-00657",
          "text": "If <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> does not include <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, a <code>VkExportMemoryWin32HandleInfoKHR</code> structure <strong class=\"purple\">must</strong> not be included in the <code>pNext</code> chain of <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportMemoryWin32HandleInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportMemoryWin32HandleInfoKHR-pAttributes-parameter",
          "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",
          "page": "vkspec"
        }
      ]
    },
    "VkImportMemoryWin32HandleInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00658",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handle-00659",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00660",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-01439",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-01440",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00661",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handle-01441",
          "text": "If <code>handle</code> is not <code>NULL</code>, <code>name</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handle-01518",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-name-01519",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-parameter",
          "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",
          "page": "vkspec"
        }
      ]
    },
    "vkGetMemoryWin32HandleKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetMemoryWin32HandleKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMemoryWin32HandleKHR-pGetWin32HandleInfo-parameter",
          "text": "<code>pGetWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMemoryGetWin32HandleInfoKHR\">VkMemoryGetWin32HandleInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMemoryWin32HandleKHR-pHandle-parameter",
          "text": "<code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value",
          "page": "vkspec"
        }
      ]
    },
    "VkMemoryGetWin32HandleInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00662",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00663",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00664",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> be defined as an NT handle or a global share handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-memory-parameter",
          "text": "<code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-parameter",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkGetMemoryWin32HandlePropertiesKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-handle-00665",
          "text": "<code>handle</code> <strong class=\"purple\">must</strong> point to a valid Windows memory handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-handleType-00666",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> not be one of the handle types defined as opaque",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-handleType-parameter",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-pMemoryWin32HandleProperties-parameter",
          "text": "<code>pMemoryWin32HandleProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryWin32HandlePropertiesKHR\">VkMemoryWin32HandlePropertiesKHR</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkMemoryWin32HandlePropertiesKHR": {
      "core": [
        {
          "vuid": "VUID-VkMemoryWin32HandlePropertiesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryWin32HandlePropertiesKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkExportMemoryWin32HandleInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkExportMemoryWin32HandleInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportMemoryWin32HandleInfoNV-pAttributes-parameter",
          "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",
          "page": "vkspec"
        }
      ]
    },
    "VkImportMemoryWin32HandleInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-handleType-01327",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> not have more than one bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-handle-01328",
          "text": "<code>handle</code> <strong class=\"purple\">must</strong> be a valid handle to memory, obtained as specified by <code>handleType</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-handleType-parameter",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values",
          "page": "vkspec"
        }
      ]
    },
    "vkGetMemoryWin32HandleNV": {
      "core": [
        {
          "vuid": "VUID-vkGetMemoryWin32HandleNV-handleType-01326",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMemoryWin32HandleNV-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMemoryWin32HandleNV-memory-parameter",
          "text": "<code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMemoryWin32HandleNV-handleType-parameter",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMemoryWin32HandleNV-handleType-requiredbitmask",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMemoryWin32HandleNV-pHandle-parameter",
          "text": "<code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMemoryWin32HandleNV-memory-parent",
          "text": "<code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkImportMemoryFdInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-00667",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportMemoryFdInfoKHR-fd-00668",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-00669",
          "text": "If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT</code> or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-00670",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportMemoryFdInfoKHR-fd-01746",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportMemoryFdInfoKHR-fd-01520",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportMemoryFdInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-parameter",
          "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",
          "page": "vkspec"
        }
      ]
    },
    "vkGetMemoryFdKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetMemoryFdKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMemoryFdKHR-pGetFdInfo-parameter",
          "text": "<code>pGetFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMemoryGetFdInfoKHR\">VkMemoryGetFdInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMemoryFdKHR-pFd-parameter",
          "text": "<code>pFd</code> <strong class=\"purple\">must</strong> be a valid pointer to an <code>int</code> value",
          "page": "vkspec"
        }
      ]
    },
    "VkMemoryGetFdInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkMemoryGetFdInfoKHR-handleType-00671",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryGetFdInfoKHR-handleType-00672",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> be <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT</code> or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryGetFdInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryGetFdInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryGetFdInfoKHR-memory-parameter",
          "text": "<code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryGetFdInfoKHR-handleType-parameter",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkGetMemoryFdPropertiesKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetMemoryFdPropertiesKHR-fd-00673",
          "text": "<code>fd</code> <strong class=\"purple\">must</strong> point to a valid POSIX file descriptor memory handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMemoryFdPropertiesKHR-handleType-00674",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> not be <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMemoryFdPropertiesKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMemoryFdPropertiesKHR-handleType-parameter",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMemoryFdPropertiesKHR-pMemoryFdProperties-parameter",
          "text": "<code>pMemoryFdProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryFdPropertiesKHR\">VkMemoryFdPropertiesKHR</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkMemoryFdPropertiesKHR": {
      "core": [
        {
          "vuid": "VUID-VkMemoryFdPropertiesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryFdPropertiesKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkImportMemoryHostPointerInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01747",
          "text": "If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be supported for import, as reported in <a href=\"#VkExternalMemoryProperties\">VkExternalMemoryProperties</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01748",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-pHostPointer-01749",
          "text": "<code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer aligned to an integer multiple of <code>VkPhysicalDeviceExternalMemoryHostPropertiesEXT</code>::<code>minImportedHostPointerAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01750",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01751",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-parameter",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-pHostPointer-parameter",
          "text": "<code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer value",
          "page": "vkspec"
        }
      ]
    },
    "vkGetMemoryHostPointerPropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01752",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-pHostPointer-01753",
          "text": "<code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer aligned to an integer multiple of <code>VkPhysicalDeviceExternalMemoryHostPropertiesEXT</code>::<code>minImportedHostPointerAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01754",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01755",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-parameter",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-pHostPointer-parameter",
          "text": "<code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-pMemoryHostPointerProperties-parameter",
          "text": "<code>pMemoryHostPointerProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryHostPointerPropertiesEXT\">VkMemoryHostPointerPropertiesEXT</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkMemoryHostPointerPropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-VkMemoryHostPointerPropertiesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryHostPointerPropertiesEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkImportAndroidHardwareBufferInfoANDROID": {
      "core": [
        {
          "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-01880",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-01881",
          "text": "If <code>buffer</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> be a valid Android hardware buffer object with <code>AHardwareBuffer_Desc</code>::<code>usage</code> compatible with Vulkan as described in <a href=\"#memory-external-android-hardware-buffer\">Android Hardware Buffers</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-parameter",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> be a valid pointer to an <a href=\"#AHardwareBuffer\">AHardwareBuffer</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkGetMemoryAndroidHardwareBufferANDROID": {
      "core": [
        {
          "vuid": "VUID-vkGetMemoryAndroidHardwareBufferANDROID-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMemoryAndroidHardwareBufferANDROID-pInfo-parameter",
          "text": "<code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMemoryGetAndroidHardwareBufferInfoANDROID\">VkMemoryGetAndroidHardwareBufferInfoANDROID</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMemoryAndroidHardwareBufferANDROID-pBuffer-parameter",
          "text": "<code>pBuffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid pointer to an <a href=\"#AHardwareBuffer\">AHardwareBuffer</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkMemoryGetAndroidHardwareBufferInfoANDROID": {
      "core": [
        {
          "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-handleTypes-01882",
          "text": "<code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> when <code>memory</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-pNext-01883",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-memory-parameter",
          "text": "<code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "vkGetAndroidHardwareBufferPropertiesANDROID": {
      "core": [
        {
          "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-buffer-01884",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-buffer-parameter",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#AHardwareBuffer\">AHardwareBuffer</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-pProperties-parameter",
          "text": "<code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkAndroidHardwareBufferPropertiesANDROID\">VkAndroidHardwareBufferPropertiesANDROID</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkAndroidHardwareBufferPropertiesANDROID": {
      "core": [
        {
          "vuid": "VUID-VkAndroidHardwareBufferPropertiesANDROID-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAndroidHardwareBufferPropertiesANDROID-pNext-pNext",
          "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=\"#VkAndroidHardwareBufferFormatProperties2ANDROID\">VkAndroidHardwareBufferFormatProperties2ANDROID</a>, <a href=\"#VkAndroidHardwareBufferFormatPropertiesANDROID\">VkAndroidHardwareBufferFormatPropertiesANDROID</a>, or <a href=\"#VkAndroidHardwareBufferFormatResolvePropertiesANDROID\">VkAndroidHardwareBufferFormatResolvePropertiesANDROID</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAndroidHardwareBufferPropertiesANDROID-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        }
      ]
    },
    "VkAndroidHardwareBufferFormatPropertiesANDROID": {
      "core": [
        {
          "vuid": "VUID-VkAndroidHardwareBufferFormatPropertiesANDROID-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkAndroidHardwareBufferFormatProperties2ANDROID": {
      "core": [
        {
          "vuid": "VUID-VkAndroidHardwareBufferFormatProperties2ANDROID-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkAndroidHardwareBufferFormatResolvePropertiesANDROID": {
      "core": [
        {
          "vuid": "VUID-VkAndroidHardwareBufferFormatResolvePropertiesANDROID-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetMemoryRemoteAddressNV": {
      "core": [
        {
          "vuid": "VUID-vkGetMemoryRemoteAddressNV-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMemoryRemoteAddressNV-pMemoryGetRemoteAddressInfo-parameter",
          "text": "<code>pMemoryGetRemoteAddressInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMemoryGetRemoteAddressInfoNV\">VkMemoryGetRemoteAddressInfoNV</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMemoryRemoteAddressNV-pAddress-parameter",
          "text": "<code>pAddress</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkRemoteAddressNV\">VkRemoteAddressNV</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkMemoryGetRemoteAddressInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkMemoryGetRemoteAddressInfoNV-handleType-04966",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryGetRemoteAddressInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryGetRemoteAddressInfoNV-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryGetRemoteAddressInfoNV-memory-parameter",
          "text": "<code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryGetRemoteAddressInfoNV-handleType-parameter",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkImportMemoryZirconHandleInfoFUCHSIA": {
      "core": [
        {
          "vuid": "VUID-VkImportMemoryZirconHandleInfoFUCHSIA-handleType-04771",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> be <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportMemoryZirconHandleInfoFUCHSIA-handle-04772",
          "text": "<code>handle</code> <strong class=\"purple\">must</strong> be a valid VMO handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportMemoryZirconHandleInfoFUCHSIA-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportMemoryZirconHandleInfoFUCHSIA-handleType-parameter",
          "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",
          "page": "vkspec"
        }
      ]
    },
    "vkGetMemoryZirconHandlePropertiesFUCHSIA": {
      "core": [
        {
          "vuid": "VUID-vkGetMemoryZirconHandlePropertiesFUCHSIA-handleType-04773",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> be <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMemoryZirconHandlePropertiesFUCHSIA-zirconHandle-04774",
          "text": "<code>zirconHandle</code> <strong class=\"purple\">must</strong> reference a valid VMO",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMemoryZirconHandlePropertiesFUCHSIA-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMemoryZirconHandlePropertiesFUCHSIA-handleType-parameter",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMemoryZirconHandlePropertiesFUCHSIA-pMemoryZirconHandleProperties-parameter",
          "text": "<code>pMemoryZirconHandleProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryZirconHandlePropertiesFUCHSIA\">VkMemoryZirconHandlePropertiesFUCHSIA</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkMemoryZirconHandlePropertiesFUCHSIA": {
      "core": [
        {
          "vuid": "VUID-VkMemoryZirconHandlePropertiesFUCHSIA-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryZirconHandlePropertiesFUCHSIA-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetMemoryZirconHandleFUCHSIA": {
      "core": [
        {
          "vuid": "VUID-vkGetMemoryZirconHandleFUCHSIA-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMemoryZirconHandleFUCHSIA-pGetZirconHandleInfo-parameter",
          "text": "<code>pGetZirconHandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMemoryGetZirconHandleInfoFUCHSIA\">VkMemoryGetZirconHandleInfoFUCHSIA</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMemoryZirconHandleFUCHSIA-pZirconHandle-parameter",
          "text": "<code>pZirconHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>zx_handle_t</code> value",
          "page": "vkspec"
        }
      ]
    },
    "VkMemoryGetZirconHandleInfoFUCHSIA": {
      "core": [
        {
          "vuid": "VUID-VkMemoryGetZirconHandleInfoFUCHSIA-handleType-04775",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> be <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryGetZirconHandleInfoFUCHSIA-handleType-04776",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> have been included in the <code>handleTypes</code> field of the <code>VkExportMemoryAllocateInfo</code> structure when the external memory was allocated",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryGetZirconHandleInfoFUCHSIA-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryGetZirconHandleInfoFUCHSIA-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryGetZirconHandleInfoFUCHSIA-memory-parameter",
          "text": "<code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryGetZirconHandleInfoFUCHSIA-handleType-parameter",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkExportMetalObjectCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkExportMetalObjectCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportMetalObjectCreateInfoEXT-exportObjectType-parameter",
          "text": "If <code>exportObjectType</code> is not <code>0</code>, <code>exportObjectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExportMetalObjectTypeFlagBitsEXT\">VkExportMetalObjectTypeFlagBitsEXT</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkExportMetalObjectsEXT": {
      "core": [
        {
          "vuid": "VUID-vkExportMetalObjectsEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkExportMetalObjectsEXT-pMetalObjectsInfo-parameter",
          "text": "<code>pMetalObjectsInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkExportMetalObjectsInfoEXT\">VkExportMetalObjectsInfoEXT</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkExportMetalObjectsInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkExportMetalObjectsInfoEXT-pNext-06791",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkExportMetalDeviceInfoEXT\">VkExportMetalDeviceInfoEXT</a> structure, the <a href=\"#VkInstance\">VkInstance</a> <strong class=\"purple\">must</strong> have been created with <code>VK_EXPORT_METAL_OBJECT_TYPE_METAL_DEVICE_BIT_EXT</code> in the <code>exportObjectType</code> member of a <a href=\"#VkExportMetalObjectCreateInfoEXT\">VkExportMetalObjectCreateInfoEXT</a> structure in the <code>pNext</code> chain of the <a href=\"#VkInstanceCreateInfo\">VkInstanceCreateInfo</a> structure in the <a href=\"#vkCreateInstance\">vkCreateInstance</a> command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportMetalObjectsInfoEXT-pNext-06792",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkExportMetalCommandQueueInfoEXT\">VkExportMetalCommandQueueInfoEXT</a> structure, the <a href=\"#VkInstance\">VkInstance</a> <strong class=\"purple\">must</strong> have been created with <code>VK_EXPORT_METAL_OBJECT_TYPE_METAL_COMMAND_QUEUE_BIT_EXT</code> in the <code>exportObjectType</code> member of a <a href=\"#VkExportMetalObjectCreateInfoEXT\">VkExportMetalObjectCreateInfoEXT</a> structure in the <code>pNext</code> chain of the <a href=\"#VkInstanceCreateInfo\">VkInstanceCreateInfo</a> structure in the <a href=\"#vkCreateInstance\">vkCreateInstance</a> command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportMetalObjectsInfoEXT-pNext-06793",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkExportMetalBufferInfoEXT\">VkExportMetalBufferInfoEXT</a> structure, the <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> in its <code>memory</code> member <strong class=\"purple\">must</strong> have been allocated with <code>VK_EXPORT_METAL_OBJECT_TYPE_METAL_BUFFER_BIT_EXT</code> in the <code>exportObjectType</code> member of a <a href=\"#VkExportMetalObjectCreateInfoEXT\">VkExportMetalObjectCreateInfoEXT</a> structure in the <code>pNext</code> chain of the <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> structure in the <a href=\"#vkAllocateMemory\">vkAllocateMemory</a> command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportMetalObjectsInfoEXT-pNext-06794",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkExportMetalTextureInfoEXT\">VkExportMetalTextureInfoEXT</a> structure, exactly one of its <code>image</code>, <code>imageView</code>, or <code>bufferView</code> members <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportMetalObjectsInfoEXT-pNext-06795",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkExportMetalTextureInfoEXT\">VkExportMetalTextureInfoEXT</a> structure, and its <code>image</code> member is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the <a href=\"#VkImage\">VkImage</a> in its <code>image</code> member <strong class=\"purple\">must</strong> have been created with <code>VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT</code> in the <code>exportObjectType</code> member of a <a href=\"#VkExportMetalObjectCreateInfoEXT\">VkExportMetalObjectCreateInfoEXT</a> structure in the <code>pNext</code> chain of the <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> structure in the <a href=\"#vkCreateImage\">vkCreateImage</a> command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportMetalObjectsInfoEXT-pNext-06796",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkExportMetalTextureInfoEXT\">VkExportMetalTextureInfoEXT</a> structure, and its <code>imageView</code> member is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the <a href=\"#VkImageView\">VkImageView</a> in its <code>imageView</code> member <strong class=\"purple\">must</strong> have been created with <code>VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT</code> in the <code>exportObjectType</code> member of a <a href=\"#VkExportMetalObjectCreateInfoEXT\">VkExportMetalObjectCreateInfoEXT</a> structure in the <code>pNext</code> chain of the <a href=\"#VkImageViewCreateInfo\">VkImageViewCreateInfo</a> structure in the <a href=\"#vkCreateImageView\">vkCreateImageView</a> command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportMetalObjectsInfoEXT-pNext-06797",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkExportMetalTextureInfoEXT\">VkExportMetalTextureInfoEXT</a> structure, and its <code>bufferView</code> member is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the <a href=\"#VkBufferView\">VkBufferView</a> in its <code>bufferView</code> member <strong class=\"purple\">must</strong> have been created with <code>VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT</code> in the <code>exportObjectType</code> member of a <a href=\"#VkExportMetalObjectCreateInfoEXT\">VkExportMetalObjectCreateInfoEXT</a> structure in the <code>pNext</code> chain of the <a href=\"#VkBufferViewCreateInfo\">VkBufferViewCreateInfo</a> structure in the <a href=\"#vkCreateBufferView\">vkCreateBufferView</a> command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportMetalObjectsInfoEXT-pNext-06798",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkExportMetalTextureInfoEXT\">VkExportMetalTextureInfoEXT</a> structure, and if either its <code>image</code> or <code>imageView</code> member is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>plane</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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportMetalObjectsInfoEXT-pNext-06799",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkExportMetalTextureInfoEXT\">VkExportMetalTextureInfoEXT</a> structure, and if the <a href=\"#VkImage\">VkImage</a> in its <code>image</code> member does not have a multi-planar format, then its <code>plane</code> member <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportMetalObjectsInfoEXT-pNext-06800",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkExportMetalTextureInfoEXT\">VkExportMetalTextureInfoEXT</a> structure, and if the <a href=\"#VkImage\">VkImage</a> in its <code>image</code> member has a multi-planar format with only two planes, then its <code>plane</code> member <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportMetalObjectsInfoEXT-pNext-06801",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkExportMetalTextureInfoEXT\">VkExportMetalTextureInfoEXT</a> structure, and if the <a href=\"#VkImageView\">VkImageView</a> in its <code>imageView</code> member does not have a multi-planar format, then its <code>plane</code> member <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportMetalObjectsInfoEXT-pNext-06802",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkExportMetalTextureInfoEXT\">VkExportMetalTextureInfoEXT</a> structure, and if the <a href=\"#VkImageView\">VkImageView</a> in its <code>imageView</code> member has a multi-planar format with only two planes, then its <code>plane</code> member <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportMetalObjectsInfoEXT-pNext-06803",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkExportMetalIOSurfaceInfoEXT\">VkExportMetalIOSurfaceInfoEXT</a> structure, the <a href=\"#VkImage\">VkImage</a> in its <code>image</code> member <strong class=\"purple\">must</strong> have been created with <code>VK_EXPORT_METAL_OBJECT_TYPE_METAL_IOSURFACE_BIT_EXT</code> in the <code>exportObjectType</code> member of a <a href=\"#VkExportMetalObjectCreateInfoEXT\">VkExportMetalObjectCreateInfoEXT</a> structure in the <code>pNext</code> chain of the <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> structure in the <a href=\"#vkCreateImage\">vkCreateImage</a> command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportMetalObjectsInfoEXT-pNext-06804",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkExportMetalSharedEventInfoEXT\">VkExportMetalSharedEventInfoEXT</a> structure, exactly one of its <code>semaphore</code> or <code>event</code> members <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportMetalObjectsInfoEXT-pNext-06805",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkExportMetalSharedEventInfoEXT\">VkExportMetalSharedEventInfoEXT</a> structure, and its <code>semaphore</code> member is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the <a href=\"#VkSemaphore\">VkSemaphore</a> in its <code>semaphore</code> member <strong class=\"purple\">must</strong> have been created with <code>VK_EXPORT_METAL_OBJECT_TYPE_METAL_SHARED_EVENT_BIT_EXT</code> in the <code>exportObjectType</code> member of a <a href=\"#VkExportMetalObjectCreateInfoEXT\">VkExportMetalObjectCreateInfoEXT</a> structure in the <code>pNext</code> chain of the <a href=\"#VkSemaphoreCreateInfo\">VkSemaphoreCreateInfo</a> structure in the <a href=\"#vkCreateSemaphore\">vkCreateSemaphore</a> command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportMetalObjectsInfoEXT-pNext-06806",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkExportMetalSharedEventInfoEXT\">VkExportMetalSharedEventInfoEXT</a> structure, and its <code>event</code> member is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the <a href=\"#VkEvent\">VkEvent</a> in its <code>event</code> member <strong class=\"purple\">must</strong> have been created with <code>VK_EXPORT_METAL_OBJECT_TYPE_METAL_SHARED_EVENT_BIT_EXT</code> in the <code>exportObjectType</code> member of a <a href=\"#VkExportMetalObjectCreateInfoEXT\">VkExportMetalObjectCreateInfoEXT</a> structure in the <code>pNext</code> chain of the <a href=\"#VkEventCreateInfo\">VkEventCreateInfo</a> structure in the <a href=\"#vkCreateEvent\">vkCreateEvent</a> command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportMetalObjectsInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportMetalObjectsInfoEXT-pNext-pNext",
          "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=\"#VkExportMetalBufferInfoEXT\">VkExportMetalBufferInfoEXT</a>, <a href=\"#VkExportMetalCommandQueueInfoEXT\">VkExportMetalCommandQueueInfoEXT</a>, <a href=\"#VkExportMetalDeviceInfoEXT\">VkExportMetalDeviceInfoEXT</a>, <a href=\"#VkExportMetalIOSurfaceInfoEXT\">VkExportMetalIOSurfaceInfoEXT</a>, <a href=\"#VkExportMetalSharedEventInfoEXT\">VkExportMetalSharedEventInfoEXT</a>, or <a href=\"#VkExportMetalTextureInfoEXT\">VkExportMetalTextureInfoEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportMetalObjectsInfoEXT-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique, with the exception of structures of type <a href=\"#VkExportMetalBufferInfoEXT\">VkExportMetalBufferInfoEXT</a>, <a href=\"#VkExportMetalCommandQueueInfoEXT\">VkExportMetalCommandQueueInfoEXT</a>, <a href=\"#VkExportMetalIOSurfaceInfoEXT\">VkExportMetalIOSurfaceInfoEXT</a>, <a href=\"#VkExportMetalSharedEventInfoEXT\">VkExportMetalSharedEventInfoEXT</a>, or <a href=\"#VkExportMetalTextureInfoEXT\">VkExportMetalTextureInfoEXT</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkExportMetalDeviceInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkExportMetalDeviceInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkExportMetalCommandQueueInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkExportMetalCommandQueueInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_METAL_COMMAND_QUEUE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportMetalCommandQueueInfoEXT-queue-parameter",
          "text": "<code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkExportMetalBufferInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkExportMetalBufferInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_METAL_BUFFER_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportMetalBufferInfoEXT-memory-parameter",
          "text": "<code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkImportMetalBufferInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkImportMetalBufferInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_METAL_BUFFER_INFO_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkExportMetalTextureInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkExportMetalTextureInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_METAL_TEXTURE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportMetalTextureInfoEXT-image-parameter",
          "text": "If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportMetalTextureInfoEXT-imageView-parameter",
          "text": "If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>imageView</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageView\">VkImageView</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportMetalTextureInfoEXT-bufferView-parameter",
          "text": "If <code>bufferView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>bufferView</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBufferView\">VkBufferView</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportMetalTextureInfoEXT-plane-parameter",
          "text": "<code>plane</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportMetalTextureInfoEXT-commonparent",
          "text": "Each of <code>bufferView</code>, <code>image</code>, and <code>imageView</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkImportMetalTextureInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkImportMetalTextureInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_METAL_TEXTURE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportMetalTextureInfoEXT-plane-parameter",
          "text": "<code>plane</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkExportMetalIOSurfaceInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkExportMetalIOSurfaceInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_METAL_IO_SURFACE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportMetalIOSurfaceInfoEXT-image-parameter",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkImportMetalIOSurfaceInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkImportMetalIOSurfaceInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkExportMetalSharedEventInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkExportMetalSharedEventInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportMetalSharedEventInfoEXT-semaphore-parameter",
          "text": "If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphore\">VkSemaphore</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportMetalSharedEventInfoEXT-event-parameter",
          "text": "If <code>event</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>event</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkEvent\">VkEvent</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExportMetalSharedEventInfoEXT-commonparent",
          "text": "Both of <code>event</code>, and <code>semaphore</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkImportMetalSharedEventInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkImportMetalSharedEventInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkImportScreenBufferInfoQNX": {
      "core": [
        {
          "vuid": "VUID-VkImportScreenBufferInfoQNX-buffer-08966",
          "text": "If <code>buffer</code> is not <code>NULL</code>, QNX Screen Buffers <strong class=\"purple\">must</strong> be supported for import, as reported by <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a> or <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportScreenBufferInfoQNX-buffer-08967",
          "text": "<code>buffer</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> be a pointer to <a href=\"#memory-external-screen-buffer-validity\">valid QNX Screen buffer</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportScreenBufferInfoQNX-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetScreenBufferPropertiesQNX": {
      "core": [
        {
          "vuid": "VUID-vkGetScreenBufferPropertiesQNX-buffer-08968",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> be a <a href=\"#memory-external-screen-buffer-validity\">valid QNX Screen buffer</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetScreenBufferPropertiesQNX-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetScreenBufferPropertiesQNX-buffer-parameter",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>_screen_buffer</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetScreenBufferPropertiesQNX-pProperties-parameter",
          "text": "<code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkScreenBufferPropertiesQNX\">VkScreenBufferPropertiesQNX</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkScreenBufferPropertiesQNX": {
      "core": [
        {
          "vuid": "VUID-VkScreenBufferPropertiesQNX-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkScreenBufferPropertiesQNX-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkScreenBufferFormatPropertiesQNX\">VkScreenBufferFormatPropertiesQNX</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkScreenBufferPropertiesQNX-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        }
      ]
    },
    "VkScreenBufferFormatPropertiesQNX": {
      "core": [
        {
          "vuid": "VUID-VkScreenBufferFormatPropertiesQNX-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkMemoryAllocateFlagsInfo": {
      "core": [
        {
          "vuid": "VUID-VkMemoryAllocateFlagsInfo-deviceMask-00675",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateFlagsInfo-deviceMask-00676",
          "text": "If <code>VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT</code> is set, <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateFlagsInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryAllocateFlagsInfo-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkMemoryAllocateFlagBits\">VkMemoryAllocateFlagBits</a> values",
          "page": "vkspec"
        }
      ]
    },
    "VkMemoryOpaqueCaptureAddressAllocateInfo": {
      "core": [
        {
          "vuid": "VUID-VkMemoryOpaqueCaptureAddressAllocateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkFreeMemory": {
      "core": [
        {
          "vuid": "VUID-vkFreeMemory-memory-00677",
          "text": "All submitted commands that refer to <code>memory</code> (via images or buffers) <strong class=\"purple\">must</strong> have completed execution",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkFreeMemory-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkFreeMemory-memory-parameter",
          "text": "If <code>memory</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkFreeMemory-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkFreeMemory-memory-parent",
          "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>",
          "page": "vkspec"
        }
      ]
    },
    "vkMapMemory": {
      "core": [
        {
          "vuid": "VUID-vkMapMemory-memory-00678",
          "text": "<code>memory</code> <strong class=\"purple\">must</strong> not be currently host mapped",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkMapMemory-offset-00679",
          "text": "<code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkMapMemory-size-00680",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkMapMemory-size-00681",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkMapMemory-memory-00682",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkMapMemory-memory-00683",
          "text": "<code>memory</code> <strong class=\"purple\">must</strong> not have been allocated with multiple instances",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkMapMemory-flags-09568",
          "text": "<code>VK_MEMORY_MAP_PLACED_BIT_EXT</code> <strong class=\"purple\">must</strong> not be set in <code>flags</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkMapMemory-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkMapMemory-memory-parameter",
          "text": "<code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkMapMemory-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkMemoryMapFlagBits\">VkMemoryMapFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkMapMemory-ppData-parameter",
          "text": "<code>ppData</code> <strong class=\"purple\">must</strong> be a valid pointer to a pointer value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkMapMemory-memory-parent",
          "text": "<code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkMapMemory2KHR": {
      "core": [
        {
          "vuid": "VUID-vkMapMemory2KHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkMapMemory2KHR-pMemoryMapInfo-parameter",
          "text": "<code>pMemoryMapInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMemoryMapInfoKHR\">VkMemoryMapInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkMapMemory2KHR-ppData-parameter",
          "text": "<code>ppData</code> <strong class=\"purple\">must</strong> be a valid pointer to a pointer value",
          "page": "vkspec"
        }
      ]
    },
    "VkMemoryMapInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkMemoryMapInfoKHR-memory-07958",
          "text": "<code>memory</code> <strong class=\"purple\">must</strong> not be currently host mapped",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryMapInfoKHR-offset-07959",
          "text": "<code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryMapInfoKHR-size-07960",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryMapInfoKHR-size-07961",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryMapInfoKHR-memory-07962",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryMapInfoKHR-memory-07963",
          "text": "<code>memory</code> <strong class=\"purple\">must</strong> not have been allocated with multiple instances",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryMapInfoKHR-flags-09569",
          "text": "If <code>VK_MEMORY_MAP_PLACED_BIT_EXT</code> is set in <code>flags</code>, the <a href=\"#features-memoryMapPlaced\"><code>memoryMapPlaced</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryMapInfoKHR-flags-09570",
          "text": "If <code>VK_MEMORY_MAP_PLACED_BIT_EXT</code> is set in <code>flags</code>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkMemoryMapPlacedInfoEXT\">VkMemoryMapPlacedInfoEXT</a> structure and <code>VkMemoryMapPlacedInfoEXT</code>::<code>pPlacedAddress</code> <strong class=\"purple\">must</strong> not be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryMapInfoKHR-flags-09571",
          "text": "If <code>VK_MEMORY_MAP_PLACED_BIT_EXT</code> is set in <code>flags</code> and the <a href=\"#features-memoryMapRangePlaced\"><code>memoryMapRangePlaced</code></a> feature is not enabled, <code>offset</code> <strong class=\"purple\">must</strong> be zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryMapInfoKHR-flags-09572",
          "text": "If <code>VK_MEMORY_MAP_PLACED_BIT_EXT</code> is set in <code>flags</code> and the <a href=\"#features-memoryMapRangePlaced\"><code>memoryMapRangePlaced</code></a> feature is not enabled, <code>size</code> <strong class=\"purple\">must</strong> be <code>VK_WHOLE_SIZE</code> or <code>VkMemoryAllocateInfo</code>::<code>allocationSize</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryMapInfoKHR-flags-09573",
          "text": "If <code>VK_MEMORY_MAP_PLACED_BIT_EXT</code> is set in <code>flags</code> and the <a href=\"#features-memoryMapRangePlaced\"><code>memoryMapRangePlaced</code></a> feature is enabled, <code>offset</code> <strong class=\"purple\">must</strong> be aligned to an integer multiple of <code>VkPhysicalDeviceMapMemoryPlacedPropertiesEXT</code>::<code>minPlacedMemoryMapAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryMapInfoKHR-flags-09574",
          "text": "If <code>VK_MEMORY_MAP_PLACED_BIT_EXT</code> is set in <code>flags</code> and <code>size</code> is not <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be aligned to an integer multiple of <code>VkPhysicalDeviceMapMemoryPlacedPropertiesEXT</code>::<code>minPlacedMemoryMapAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryMapInfoKHR-flags-09651",
          "text": "If <code>VK_MEMORY_MAP_PLACED_BIT_EXT</code> is set in <code>flags</code> and <code>size</code> is <code>VK_WHOLE_SIZE</code>, <code>VkMemoryAllocateInfo</code>::<code>allocationSize</code> <strong class=\"purple\">must</strong> be aligned to an integer multiple of <code>VkPhysicalDeviceMapMemoryPlacedPropertiesEXT</code>::<code>minPlacedMemoryMapAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryMapInfoKHR-flags-09575",
          "text": "If <code>VK_MEMORY_MAP_PLACED_BIT_EXT</code> is set in <code>flags</code>, the memory object <strong class=\"purple\">must</strong> not have been imported from a handle type of <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryMapInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryMapInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkMemoryMapPlacedInfoEXT\">VkMemoryMapPlacedInfoEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryMapInfoKHR-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryMapInfoKHR-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkMemoryMapFlagBits\">VkMemoryMapFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryMapInfoKHR-memory-parameter",
          "text": "<code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkMemoryMapPlacedInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkMemoryMapPlacedInfoEXT-flags-09576",
          "text": "If <code>VkMemoryMapInfoKHR</code>::<code>flags</code> contains <code>VK_MEMORY_MAP_PLACED_BIT_EXT</code>, <code>pPlacedAddress</code> <strong class=\"purple\">must</strong> not be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryMapPlacedInfoEXT-pPlacedAddress-09577",
          "text": "<code>pPlacedAddress</code> <strong class=\"purple\">must</strong> be aligned to an integer multiple of <code>VkPhysicalDeviceMapMemoryPlacedPropertiesEXT</code>::<code>minPlacedMemoryMapAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryMapPlacedInfoEXT-pPlacedAddress-09578",
          "text": "The address range specified by <code>pPlacedAddress</code> and <code>VkMemoryMapInfoKHR</code>::<code>size</code> <strong class=\"purple\">must</strong> not overlap any existing Vulkan memory object mapping",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryMapPlacedInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_MAP_PLACED_INFO_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkFlushMappedMemoryRanges": {
      "core": [
        {
          "vuid": "VUID-vkFlushMappedMemoryRanges-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkFlushMappedMemoryRanges-pMemoryRanges-parameter",
          "text": "<code>pMemoryRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>memoryRangeCount</code> valid <a href=\"#VkMappedMemoryRange\">VkMappedMemoryRange</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkFlushMappedMemoryRanges-memoryRangeCount-arraylength",
          "text": "<code>memoryRangeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkInvalidateMappedMemoryRanges": {
      "core": [
        {
          "vuid": "VUID-vkInvalidateMappedMemoryRanges-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkInvalidateMappedMemoryRanges-pMemoryRanges-parameter",
          "text": "<code>pMemoryRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>memoryRangeCount</code> valid <a href=\"#VkMappedMemoryRange\">VkMappedMemoryRange</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkInvalidateMappedMemoryRanges-memoryRangeCount-arraylength",
          "text": "<code>memoryRangeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkMappedMemoryRange": {
      "core": [
        {
          "vuid": "VUID-VkMappedMemoryRange-memory-00684",
          "text": "<code>memory</code> <strong class=\"purple\">must</strong> be currently host mapped",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMappedMemoryRange-size-00685",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMappedMemoryRange-size-00686",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMappedMemoryRange-offset-00687",
          "text": "<code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>nonCoherentAtomSize</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMappedMemoryRange-size-01389",
          "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> either be a multiple of <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>nonCoherentAtomSize</code> bytes from the beginning of the memory object, or be equal to the end of the memory object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMappedMemoryRange-size-01390",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMappedMemoryRange-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMappedMemoryRange-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMappedMemoryRange-memory-parameter",
          "text": "<code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "vkUnmapMemory": {
      "core": [
        {
          "vuid": "VUID-vkUnmapMemory-memory-00689",
          "text": "<code>memory</code> <strong class=\"purple\">must</strong> be currently host mapped",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUnmapMemory-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUnmapMemory-memory-parameter",
          "text": "<code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUnmapMemory-memory-parent",
          "text": "<code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkUnmapMemory2KHR": {
      "core": [
        {
          "vuid": "VUID-vkUnmapMemory2KHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUnmapMemory2KHR-pMemoryUnmapInfo-parameter",
          "text": "<code>pMemoryUnmapInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMemoryUnmapInfoKHR\">VkMemoryUnmapInfoKHR</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkMemoryUnmapInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkMemoryUnmapInfoKHR-memory-07964",
          "text": "<code>memory</code> <strong class=\"purple\">must</strong> be currently host mapped",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryUnmapInfoKHR-flags-09579",
          "text": "If <code>VK_MEMORY_UNMAP_RESERVE_BIT_EXT</code> is set in <code>flags</code>, the <a href=\"#features-memoryUnmapReserve\"><code>memoryUnmapReserve</code></a> <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryUnmapInfoKHR-flags-09580",
          "text": "If <code>VK_MEMORY_UNMAP_RESERVE_BIT_EXT</code> is set in <code>flags</code>, the memory object <strong class=\"purple\">must</strong> not have been imported from a handle type of <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryUnmapInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryUnmapInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryUnmapInfoKHR-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkMemoryUnmapFlagBitsKHR\">VkMemoryUnmapFlagBitsKHR</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryUnmapInfoKHR-memory-parameter",
          "text": "<code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "vkGetDeviceMemoryCommitment": {
      "core": [
        {
          "vuid": "VUID-vkGetDeviceMemoryCommitment-memory-00690",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceMemoryCommitment-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceMemoryCommitment-memory-parameter",
          "text": "<code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceMemoryCommitment-pCommittedMemoryInBytes-parameter",
          "text": "<code>pCommittedMemoryInBytes</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDeviceSize\">VkDeviceSize</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceMemoryCommitment-memory-parent",
          "text": "<code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetDeviceGroupPeerMemoryFeatures": {
      "core": [
        {
          "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-heapIndex-00691",
          "text": "<code>heapIndex</code> <strong class=\"purple\">must</strong> be less than <code>memoryHeapCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-localDeviceIndex-00692",
          "text": "<code>localDeviceIndex</code> <strong class=\"purple\">must</strong> be a valid device index",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-remoteDeviceIndex-00693",
          "text": "<code>remoteDeviceIndex</code> <strong class=\"purple\">must</strong> be a valid device index",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-localDeviceIndex-00694",
          "text": "<code>localDeviceIndex</code> <strong class=\"purple\">must</strong> not equal <code>remoteDeviceIndex</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-pPeerMemoryFeatures-parameter",
          "text": "<code>pPeerMemoryFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPeerMemoryFeatureFlags\">VkPeerMemoryFeatureFlags</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkGetDeviceMemoryOpaqueCaptureAddress": {
      "core": [
        {
          "vuid": "VUID-vkGetDeviceMemoryOpaqueCaptureAddress-None-03334",
          "text": "The <a href=\"#features-bufferDeviceAddress\"><code>bufferDeviceAddress</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceMemoryOpaqueCaptureAddress-device-03335",
          "text": "If <code>device</code> was created with multiple physical devices, then the <a href=\"#features-bufferDeviceAddressMultiDevice\"><code>bufferDeviceAddressMultiDevice</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceMemoryOpaqueCaptureAddress-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceMemoryOpaqueCaptureAddress-pInfo-parameter",
          "text": "<code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDeviceMemoryOpaqueCaptureAddressInfo\">VkDeviceMemoryOpaqueCaptureAddressInfo</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkDeviceMemoryOpaqueCaptureAddressInfo": {
      "core": [
        {
          "vuid": "VUID-VkDeviceMemoryOpaqueCaptureAddressInfo-memory-03336",
          "text": "<code>memory</code> <strong class=\"purple\">must</strong> have been allocated with <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceMemoryOpaqueCaptureAddressInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceMemoryOpaqueCaptureAddressInfo-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceMemoryOpaqueCaptureAddressInfo-memory-parameter",
          "text": "<code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateBuffer": {
      "core": [
        {
          "vuid": "VUID-vkCreateBuffer-device-09664",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> support at least one queue family with one of the     <code>VK_QUEUE_VIDEO_ENCODE_BIT_KHR</code>,     <code>VK_QUEUE_VIDEO_DECODE_BIT_KHR</code>, <code>VK_QUEUE_SPARSE_BINDING_BIT</code>,     <code>VK_QUEUE_TRANSFER_BIT</code>, <code>VK_QUEUE_COMPUTE_BIT</code>, or     <code>VK_QUEUE_GRAPHICS_BIT</code> capabilities",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateBuffer-flags-00911",
          "text": "If the <code>flags</code> member of <code>pCreateInfo</code> includes <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>, and the <a href=\"#features-extendedSparseAddressSpace\"><code>extendedSparseAddressSpace</code></a> feature is not enabled, 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateBuffer-flags-09383",
          "text": "If the <code>flags</code> member of <code>pCreateInfo</code> includes <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>, the <a href=\"#features-extendedSparseAddressSpace\"><code>extendedSparseAddressSpace</code></a> feature is enabled, and the <code>usage</code> member of <code>pCreateInfo</code> contains bits not in <code>VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV</code>::<code>extendedSparseBufferUsageFlags</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, excluding <code>VkBuffer</code> created with <code>usage</code> member of <code>pCreateInfo</code> containing bits in <code>VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV</code>::<code>extendedSparseBufferUsageFlags</code> and <code>VkImage</code> created with <code>usage</code> member of <code>pCreateInfo</code> containing bits in <code>VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV</code>::<code>extendedSparseImageUsageFlags</code>, to exceed <code>VkPhysicalDeviceLimits</code>::<code>sparseAddressSpaceSize</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateBuffer-flags-09384",
          "text": "If the <code>flags</code> member of <code>pCreateInfo</code> includes <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code> and the <a href=\"#features-extendedSparseAddressSpace\"><code>extendedSparseAddressSpace</code></a> feature is enabled, 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>VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV</code>::<code>extendedSparseAddressSpaceSize</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateBuffer-pNext-06387",
          "text": "If using the <a href=\"#VkBuffer\">VkBuffer</a> for an import operation from a <a href=\"#VkBufferCollectionFUCHSIA\">VkBufferCollectionFUCHSIA</a> where a <a href=\"#VkBufferCollectionBufferCreateInfoFUCHSIA\">VkBufferCollectionBufferCreateInfoFUCHSIA</a> has been chained to <code>pNext</code>, <code>pCreateInfo</code> <strong class=\"purple\">must</strong> match the <a href=\"#VkBufferConstraintsInfoFUCHSIA\">VkBufferConstraintsInfoFUCHSIA</a>::<code>createInfo</code> used when setting the constraints on the buffer collection with <a href=\"#vkSetBufferCollectionBufferConstraintsFUCHSIA\">vkSetBufferCollectionBufferConstraintsFUCHSIA</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateBuffer-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateBuffer-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkBufferCreateInfo\">VkBufferCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateBuffer-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateBuffer-pBuffer-parameter",
          "text": "<code>pBuffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkBufferCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkBufferCreateInfo-None-09499",
          "text": "If the <code>pNext</code> chain does not include a <a href=\"#VkBufferUsageFlags2CreateInfoKHR\">VkBufferUsageFlags2CreateInfoKHR</a> structure, <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferUsageFlagBits\">VkBufferUsageFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCreateInfo-None-09500",
          "text": "If the <code>pNext</code> chain does not include a <a href=\"#VkBufferUsageFlags2CreateInfoKHR\">VkBufferUsageFlags2CreateInfoKHR</a> structure, <code>usage</code> <strong class=\"purple\">must</strong> not be 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCreateInfo-size-00912",
          "text": "<code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCreateInfo-sharingMode-00913",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCreateInfo-sharingMode-00914",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCreateInfo-sharingMode-01419",
          "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=\"#vkGetPhysicalDeviceQueueFamilyProperties2\">vkGetPhysicalDeviceQueueFamilyProperties2</a> or <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties\">vkGetPhysicalDeviceQueueFamilyProperties</a> for the <code>physicalDevice</code> that was used to create <code>device</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCreateInfo-flags-00915",
          "text": "If the <a href=\"#features-sparseBinding\"><code>sparseBinding</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCreateInfo-flags-00916",
          "text": "If the <a href=\"#features-sparseResidencyBuffer\"><code>sparseResidencyBuffer</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCreateInfo-flags-00917",
          "text": "If the <a href=\"#features-sparseResidencyAliased\"><code>sparseResidencyAliased</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_BUFFER_CREATE_SPARSE_ALIASED_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCreateInfo-flags-00918",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCreateInfo-pNext-00920",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a> structure, its <code>handleTypes</code> member <strong class=\"purple\">must</strong> only contain bits that are also in <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a>::<code>externalMemoryProperties.compatibleHandleTypes</code>, as returned by <a href=\"#vkGetPhysicalDeviceExternalBufferProperties\">vkGetPhysicalDeviceExternalBufferProperties</a> with <code>pExternalBufferInfo-&gt;handleType</code> equal to any one of the handle types specified in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCreateInfo-flags-01887",
          "text": "If the <a href=\"#features-protectedMemory\"><code>protectedMemory</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_BUFFER_CREATE_PROTECTED_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCreateInfo-None-01888",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCreateInfo-pNext-01571",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a> structure, and the <code>dedicatedAllocation</code> member of the chained structure is <code>VK_TRUE</code>, then <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_BUFFER_CREATE_SPARSE_ALIASED_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCreateInfo-deviceAddress-02604",
          "text": "If <a href=\"#VkBufferDeviceAddressCreateInfoEXT\">VkBufferDeviceAddressCreateInfoEXT</a>::<code>deviceAddress</code> is not zero, <code>flags</code> <strong class=\"purple\">must</strong> include <code>VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCreateInfo-opaqueCaptureAddress-03337",
          "text": "If <a href=\"#VkBufferOpaqueCaptureAddressCreateInfo\">VkBufferOpaqueCaptureAddressCreateInfo</a>::<code>opaqueCaptureAddress</code> is not zero, <code>flags</code> <strong class=\"purple\">must</strong> include <code>VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCreateInfo-flags-03338",
          "text": "If <code>flags</code> includes <code>VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT</code>, the <a href=\"#features-bufferDeviceAddressCaptureReplayEXT\"><code>bufferDeviceAddressCaptureReplay</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCreateInfo-usage-04813",
          "text": "If <code>usage</code> includes <code>VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR</code> or <code>VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR</code>, and <code>flags</code> does not include <code>VK_BUFFER_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoProfileListInfoKHR\">VkVideoProfileListInfoKHR</a> structure with <code>profileCount</code> greater than <code>0</code> and <code>pProfiles</code> including at least one <a href=\"#VkVideoProfileInfoKHR\">VkVideoProfileInfoKHR</a> structure with a <code>videoCodecOperation</code> member specifying a decode operation",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCreateInfo-usage-04814",
          "text": "If <code>usage</code> includes <code>VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR</code> or <code>VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR</code>, and <code>flags</code> does not include <code>VK_BUFFER_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoProfileListInfoKHR\">VkVideoProfileListInfoKHR</a> structure with <code>profileCount</code> greater than <code>0</code> and <code>pProfiles</code> including at least one <a href=\"#VkVideoProfileInfoKHR\">VkVideoProfileInfoKHR</a> structure with a <code>videoCodecOperation</code> member specifying an encode operation",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCreateInfo-flags-08325",
          "text": "If <code>flags</code> includes <code>VK_BUFFER_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR</code>, then <a href=\"#features-videoMaintenance1\"><code>videoMaintenance1</code></a> <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCreateInfo-size-06409",
          "text": "<code>size</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMaintenance4Properties\">VkPhysicalDeviceMaintenance4Properties</a>::<code>maxBufferSize</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCreateInfo-usage-08097",
          "text": "If <code>usage</code> includes <code>VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT</code>, creating this <code>VkBuffer</code> <strong class=\"purple\">must</strong> not cause the total required space for all currently valid buffers using this flag on the device to exceed <a href=\"#VkPhysicalDeviceDescriptorBufferPropertiesEXT\">VkPhysicalDeviceDescriptorBufferPropertiesEXT</a>::<code>samplerDescriptorBufferAddressSpaceSize</code> or <a href=\"#VkPhysicalDeviceDescriptorBufferPropertiesEXT\">VkPhysicalDeviceDescriptorBufferPropertiesEXT</a>::<code>descriptorBufferAddressSpaceSize</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCreateInfo-usage-08098",
          "text": "If <code>usage</code> includes <code>VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT</code>, creating this <code>VkBuffer</code> <strong class=\"purple\">must</strong> not cause the total required space for all currently valid buffers using this flag on the device to exceed <a href=\"#VkPhysicalDeviceDescriptorBufferPropertiesEXT\">VkPhysicalDeviceDescriptorBufferPropertiesEXT</a>::<code>resourceDescriptorBufferAddressSpaceSize</code> or <a href=\"#VkPhysicalDeviceDescriptorBufferPropertiesEXT\">VkPhysicalDeviceDescriptorBufferPropertiesEXT</a>::<code>descriptorBufferAddressSpaceSize</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCreateInfo-flags-08099",
          "text": "If <code>flags</code> includes <code>VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT</code>, the <a href=\"#features-descriptorBufferCaptureReplay\"><code>descriptorBufferCaptureReplay</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCreateInfo-pNext-08100",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkOpaqueCaptureDescriptorDataCreateInfoEXT\">VkOpaqueCaptureDescriptorDataCreateInfoEXT</a> structure, <code>flags</code> <strong class=\"purple\">must</strong> contain <code>VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCreateInfo-usage-08101",
          "text": "If <code>usage</code> includes <code>VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT</code>, the <a href=\"#features-descriptorBufferPushDescriptors\"><code>descriptorBufferPushDescriptors</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCreateInfo-usage-08102",
          "text": "If <code>usage</code> includes <code>VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT</code> <a href=\"#limits-bufferlessPushDescriptors\"><code>VkPhysicalDeviceDescriptorBufferPropertiesEXT</code>::<code>bufferlessPushDescriptors</code></a> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCreateInfo-usage-08103",
          "text": "If <code>usage</code> includes <code>VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT</code>, <code>usage</code> <strong class=\"purple\">must</strong> contain at least one of <code>VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT</code> or <code>VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCreateInfo-flags-09641",
          "text": "If <code>flags</code> includes <code>VK_BUFFER_CREATE_PROTECTED_BIT</code>, then <code>usage</code> <strong class=\"purple\">must</strong> not contain any of the following bits<div class=\"ulist\">\n<ul>\n<li>\n<p><code>VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT</code></p>\n</li>\n<li>\n<p><code>VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT</code></p>\n</li>\n<li>\n<p><code>VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT</code></p>\n</li>\n<li>\n<p><code>VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR</code></p>\n</li>\n<li>\n<p><code>VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR</code></p>\n</li>\n<li>\n<p><code>VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR</code></p>\n</li>\n<li>\n<p><code>VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT</code></p>\n</li>\n<li>\n<p><code>VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT</code></p>\n</li>\n<li>\n<p><code>VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT</code></p>\n</li>\n<li>\n<p><code>VK_BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT</code></p>\n</li>\n<li>\n<p><code>VK_BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT</code></p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCreateInfo-pNext-pNext",
          "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=\"#VkBufferCollectionBufferCreateInfoFUCHSIA\">VkBufferCollectionBufferCreateInfoFUCHSIA</a>, <a href=\"#VkBufferDeviceAddressCreateInfoEXT\">VkBufferDeviceAddressCreateInfoEXT</a>, <a href=\"#VkBufferOpaqueCaptureAddressCreateInfo\">VkBufferOpaqueCaptureAddressCreateInfo</a>, <a href=\"#VkBufferUsageFlags2CreateInfoKHR\">VkBufferUsageFlags2CreateInfoKHR</a>, <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>, <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>, <a href=\"#VkOpaqueCaptureDescriptorDataCreateInfoEXT\">VkOpaqueCaptureDescriptorDataCreateInfoEXT</a>, or <a href=\"#VkVideoProfileListInfoKHR\">VkVideoProfileListInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCreateInfo-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCreateInfo-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferCreateFlagBits\">VkBufferCreateFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCreateInfo-sharingMode-parameter",
          "text": "<code>sharingMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSharingMode\">VkSharingMode</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkBufferUsageFlags2CreateInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkBufferUsageFlags2CreateInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferUsageFlags2CreateInfoKHR-usage-parameter",
          "text": "<code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferUsageFlagBits2KHR\">VkBufferUsageFlagBits2KHR</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferUsageFlags2CreateInfoKHR-usage-requiredbitmask",
          "text": "<code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkDedicatedAllocationBufferCreateInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkDedicatedAllocationBufferCreateInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkExternalMemoryBufferCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkExternalMemoryBufferCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExternalMemoryBufferCreateInfo-handleTypes-parameter",
          "text": "<code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> values",
          "page": "vkspec"
        }
      ]
    },
    "VkBufferOpaqueCaptureAddressCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkBufferOpaqueCaptureAddressCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkBufferDeviceAddressCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkBufferDeviceAddressCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkBufferCollectionBufferCreateInfoFUCHSIA": {
      "core": [
        {
          "vuid": "VUID-VkBufferCollectionBufferCreateInfoFUCHSIA-index-06388",
          "text": "<code>index</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkBufferCollectionPropertiesFUCHSIA\">VkBufferCollectionPropertiesFUCHSIA</a>::<code>bufferCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCollectionBufferCreateInfoFUCHSIA-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCollectionBufferCreateInfoFUCHSIA-collection-parameter",
          "text": "<code>collection</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBufferCollectionFUCHSIA\">VkBufferCollectionFUCHSIA</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroyBuffer": {
      "core": [
        {
          "vuid": "VUID-vkDestroyBuffer-buffer-00922",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyBuffer-buffer-00923",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyBuffer-buffer-00924",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyBuffer-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyBuffer-buffer-parameter",
          "text": "If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyBuffer-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyBuffer-buffer-parent",
          "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>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateBufferView": {
      "core": [
        {
          "vuid": "VUID-vkCreateBufferView-device-09665",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> support at least one queue family with one of the <code>VK_QUEUE_COMPUTE_BIT</code> or <code>VK_QUEUE_GRAPHICS_BIT</code> capabilities",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateBufferView-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateBufferView-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkBufferViewCreateInfo\">VkBufferViewCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateBufferView-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateBufferView-pView-parameter",
          "text": "<code>pView</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkBufferView\">VkBufferView</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkBufferViewCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkBufferViewCreateInfo-offset-00925",
          "text": "<code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferViewCreateInfo-range-00928",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferViewCreateInfo-range-00929",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferViewCreateInfo-range-00930",
          "text": "If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, the number of texel buffer elements given by <span class=\"eq\">(⌊<code>range</code> / (texel block size)⌋ × (texels per block))</span> where texel block size and texels per block are as defined in the <a href=\"#formats-compatibility\">Compatible Formats</a> table for <code>format</code>, <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxTexelBufferElements</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferViewCreateInfo-offset-00931",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferViewCreateInfo-range-04059",
          "text": "If <code>range</code> is equal to <code>VK_WHOLE_SIZE</code>, the number of texel buffer elements given by <span class=\"eq\">(⌊(size - <code>offset</code>) / (texel block size)⌋ × (texels per block))</span> where size is the size of <code>buffer</code>, and texel block size and texels per block are as defined in the <a href=\"#formats-compatibility\">Compatible Formats</a> table for <code>format</code>, <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxTexelBufferElements</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferViewCreateInfo-buffer-00932",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferViewCreateInfo-format-08778",
          "text": "If the <a href=\"#resources-buffer-views-usage\">buffer view usage</a> contains <code>VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT</code>, then <a href=\"#resources-buffer-view-format-features\">format features</a> of <code>format</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferViewCreateInfo-format-08779",
          "text": "If the <a href=\"#resources-buffer-views-usage\">buffer view usage</a> contains <code>VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT</code>, then <a href=\"#resources-buffer-view-format-features\">format features</a> of <code>format</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferViewCreateInfo-buffer-00935",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferViewCreateInfo-offset-02749",
          "text": "If the <a href=\"#features-texelBufferAlignment\"><code>texelBufferAlignment</code></a> feature is not enabled, <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceLimits</code>::<code>minTexelBufferOffsetAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferViewCreateInfo-buffer-02750",
          "text": "If the <a href=\"#features-texelBufferAlignment\"><code>texelBufferAlignment</code></a> feature is enabled and if <code>buffer</code> was created with <code>usage</code> containing <code>VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT</code>, <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of the lesser of <a href=\"#VkPhysicalDeviceTexelBufferAlignmentProperties\">VkPhysicalDeviceTexelBufferAlignmentProperties</a>::<code>storageTexelBufferOffsetAlignmentBytes</code> or, if <a href=\"#VkPhysicalDeviceTexelBufferAlignmentProperties\">VkPhysicalDeviceTexelBufferAlignmentProperties</a>::<code>storageTexelBufferOffsetSingleTexelAlignment</code> is <code>VK_TRUE</code>, the size of a texel of the requested <code>format</code>. If the size of a texel is a multiple of three bytes, then the size of a single component of <code>format</code> is used instead",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferViewCreateInfo-buffer-02751",
          "text": "If the <a href=\"#features-texelBufferAlignment\"><code>texelBufferAlignment</code></a> feature is enabled and if <code>buffer</code> was created with <code>usage</code> containing <code>VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT</code>, <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of the lesser of <a href=\"#VkPhysicalDeviceTexelBufferAlignmentProperties\">VkPhysicalDeviceTexelBufferAlignmentProperties</a>::<code>uniformTexelBufferOffsetAlignmentBytes</code> or, if <a href=\"#VkPhysicalDeviceTexelBufferAlignmentProperties\">VkPhysicalDeviceTexelBufferAlignmentProperties</a>::<code>uniformTexelBufferOffsetSingleTexelAlignment</code> is <code>VK_TRUE</code>, the size of a texel of the requested <code>format</code>. If the size of a texel is a multiple of three bytes, then the size of a single component of <code>format</code> is used instead",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferViewCreateInfo-pNext-06782",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkExportMetalObjectCreateInfoEXT\">VkExportMetalObjectCreateInfoEXT</a> structure, its <code>exportObjectType</code> member <strong class=\"purple\">must</strong> be <code>VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferViewCreateInfo-pNext-08780",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkBufferUsageFlags2CreateInfoKHR\">VkBufferUsageFlags2CreateInfoKHR</a>, its <code>usage</code> <strong class=\"purple\">must</strong> not contain any other bit than <code>VK_BUFFER_USAGE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR</code> or <code>VK_BUFFER_USAGE_2_STORAGE_TEXEL_BUFFER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferViewCreateInfo-pNext-08781",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkBufferUsageFlags2CreateInfoKHR\">VkBufferUsageFlags2CreateInfoKHR</a>, its <code>usage</code> <strong class=\"purple\">must</strong> be a subset of the <a href=\"#VkBufferCreateInfo\">VkBufferCreateInfo</a>::<code>usage</code> specified or <a href=\"#VkBufferUsageFlags2CreateInfoKHR\">VkBufferUsageFlags2CreateInfoKHR</a>::<code>usage</code> from <a href=\"#VkBufferCreateInfo\">VkBufferCreateInfo</a>::<code>pNext</code> when creating <code>buffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferViewCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferViewCreateInfo-pNext-pNext",
          "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=\"#VkBufferUsageFlags2CreateInfoKHR\">VkBufferUsageFlags2CreateInfoKHR</a> or <a href=\"#VkExportMetalObjectCreateInfoEXT\">VkExportMetalObjectCreateInfoEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferViewCreateInfo-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique, with the exception of structures of type <a href=\"#VkExportMetalObjectCreateInfoEXT\">VkExportMetalObjectCreateInfoEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferViewCreateInfo-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferViewCreateInfo-buffer-parameter",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferViewCreateInfo-format-parameter",
          "text": "<code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroyBufferView": {
      "core": [
        {
          "vuid": "VUID-vkDestroyBufferView-bufferView-00936",
          "text": "All submitted commands that refer to <code>bufferView</code> <strong class=\"purple\">must</strong> have completed execution",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyBufferView-bufferView-00937",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyBufferView-bufferView-00938",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyBufferView-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyBufferView-bufferView-parameter",
          "text": "If <code>bufferView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>bufferView</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBufferView\">VkBufferView</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyBufferView-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyBufferView-bufferView-parent",
          "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>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateImage": {
      "core": [
        {
          "vuid": "VUID-vkCreateImage-device-09666",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> support at least one queue family with one of the     <code>VK_QUEUE_VIDEO_ENCODE_BIT_KHR</code>,     <code>VK_QUEUE_VIDEO_DECODE_BIT_KHR</code>,     <code>VK_QUEUE_OPTICAL_FLOW_BIT_NV</code>, <code>VK_QUEUE_SPARSE_BINDING_BIT</code>,     <code>VK_QUEUE_TRANSFER_BIT</code>, <code>VK_QUEUE_COMPUTE_BIT</code>, or     <code>VK_QUEUE_GRAPHICS_BIT</code> capabilities",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateImage-flags-00939",
          "text": "If the <code>flags</code> member of <code>pCreateInfo</code> includes <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, and the <a href=\"#features-extendedSparseAddressSpace\"><code>extendedSparseAddressSpace</code></a> feature is not enabled, 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateImage-flags-09385",
          "text": "If the <code>flags</code> member of <code>pCreateInfo</code> includes <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, the <a href=\"#features-extendedSparseAddressSpace\"><code>extendedSparseAddressSpace</code></a> feature is enabled, and the <code>usage</code> member of <code>pCreateInfo</code> contains bits not in <code>VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV</code>::<code>extendedSparseImageUsageFlags</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, excluding <code>VkBuffer</code> created with <code>usage</code> member of <code>pCreateInfo</code> containing bits in <code>VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV</code>::<code>extendedSparseBufferUsageFlags</code> and <code>VkImage</code> created with <code>usage</code> member of <code>pCreateInfo</code> containing bits in <code>VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV</code>::<code>extendedSparseImageUsageFlags</code>, to exceed <code>VkPhysicalDeviceLimits</code>::<code>sparseAddressSpaceSize</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateImage-flags-09386",
          "text": "If the <code>flags</code> member of <code>pCreateInfo</code> includes <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code> and the <a href=\"#features-extendedSparseAddressSpace\"><code>extendedSparseAddressSpace</code></a> feature is enabled, 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>VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV</code>::<code>extendedSparseAddressSpaceSize</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateImage-pNext-06389",
          "text": "If a <a href=\"#VkBufferCollectionImageCreateInfoFUCHSIA\">VkBufferCollectionImageCreateInfoFUCHSIA</a> has been chained to <code>pNext</code>, <code>pCreateInfo</code> <strong class=\"purple\">must</strong> match the <a href=\"#sysmem-chosen-create-infos\">Sysmem chosen <code>VkImageCreateInfo</code></a> excepting members <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>extent</code> and <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>usage</code> in the match criteria",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateImage-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateImage-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateImage-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateImage-pImage-parameter",
          "text": "<code>pImage</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkImageCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkImageCreateInfo-imageCreateMaxMipLevels-02251",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-sharingMode-00941",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-sharingMode-00942",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-sharingMode-01420",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-pNext-01974",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a> structure, and its <code>externalFormat</code> member is non-zero the <code>format</code> <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-pNext-01975",
          "text": "If the <code>pNext</code> chain does not include a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a> structure, or does and its <code>externalFormat</code> member is <code>0</code>, the <code>format</code> <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-extent-00944",
          "text": "<code>extent.width</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-extent-00945",
          "text": "<code>extent.height</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-extent-00946",
          "text": "<code>extent.depth</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-mipLevels-00947",
          "text": "<code>mipLevels</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-arrayLayers-00948",
          "text": "<code>arrayLayers</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-flags-00949",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-flags-08865",
          "text": "If <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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-flags-08866",
          "text": "If <code>flags</code> contains <code>VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT</code>, <code>arrayLayers</code> <strong class=\"purple\">must</strong> be greater than or equal to 6",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-flags-02557",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-flags-00950",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-flags-09403",
          "text": "If <code>flags</code> contains <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code>, <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, or <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-flags-07755",
          "text": "If <code>flags</code> contains <code>VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT</code>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_3D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-extent-02252",
          "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>)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-extent-02253",
          "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>)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-extent-02254",
          "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>)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-imageType-00956",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-imageType-00957",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-mipLevels-00958",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-mipLevels-02255",
          "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>)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-arrayLayers-02256",
          "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>)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-imageType-00961",
          "text": "If <code>imageType</code> is <code>VK_IMAGE_TYPE_3D</code>, <code>arrayLayers</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-samples-02257",
          "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>VK_FALSE</code>,",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-samples-02558",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-usage-00963",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-usage-00964",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-usage-00965",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-fragmentDensityMapOffset-06514",
          "text": "If the <a href=\"#features-fragmentDensityMapOffset\"><code>fragmentDensityMapOffset</code></a> feature is not enabled and <code>usage</code> includes <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be less than or equal to \\(\\left\\lceil{\\frac{maxFramebufferWidth}{minFragmentDensityTexelSize_{width}}}\\right\\rceil\\)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-fragmentDensityMapOffset-06515",
          "text": "If the <a href=\"#features-fragmentDensityMapOffset\"><code>fragmentDensityMapOffset</code></a> feature is not enabled and <code>usage</code> includes <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be less than or equal to \\(\\left\\lceil{\\frac{maxFramebufferHeight}{minFragmentDensityTexelSize_{height}}}\\right\\rceil\\)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-usage-00966",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-samples-02258",
          "text": "<code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value that is set in <code>imageCreateSampleCounts</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-usage-00968",
          "text": "If the <a href=\"#features-shaderStorageImageMultisample\"><code>shaderStorageImageMultisample</code></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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-flags-00969",
          "text": "If the <a href=\"#features-sparseBinding\"><code>sparseBinding</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-flags-01924",
          "text": "If the <a href=\"#features-sparseResidencyAliased\"><code>sparseResidencyAliased</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-tiling-04121",
          "text": "If <code>tiling</code> is <code>VK_IMAGE_TILING_LINEAR</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-imageType-00970",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-imageType-00971",
          "text": "If the <a href=\"#features-sparseResidencyImage2D\"><code>sparseResidencyImage2D</code></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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-imageType-00972",
          "text": "If the <a href=\"#features-sparseResidencyImage3D\"><code>sparseResidencyImage3D</code></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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-imageType-00973",
          "text": "If the <a href=\"#features-sparseResidency2Samples\"><code>sparseResidency2Samples</code></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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-imageType-00974",
          "text": "If the <a href=\"#features-sparseResidency4Samples\"><code>sparseResidency4Samples</code></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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-imageType-00975",
          "text": "If the <a href=\"#features-sparseResidency8Samples\"><code>sparseResidency8Samples</code></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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-imageType-00976",
          "text": "If the <a href=\"#features-sparseResidency16Samples\"><code>sparseResidency16Samples</code></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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-flags-00987",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-None-01925",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-flags-01890",
          "text": "If the <a href=\"#features-protectedMemory\"><code>protectedMemory</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_PROTECTED_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-None-01891",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-pNext-00988",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkExternalMemoryImageCreateInfoNV\">VkExternalMemoryImageCreateInfoNV</a> structure, it <strong class=\"purple\">must</strong> not contain a <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-pNext-00990",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a> structure, its <code>handleTypes</code> member <strong class=\"purple\">must</strong> only contain bits that are also in <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a>::<code>externalMemoryProperties.compatibleHandleTypes</code>, as returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a> with <code>format</code>, <code>imageType</code>, <code>tiling</code>, <code>usage</code>, and <code>flags</code> equal to those in this structure, and with a <a href=\"#VkPhysicalDeviceExternalImageFormatInfo\">VkPhysicalDeviceExternalImageFormatInfo</a> structure included in the <code>pNext</code> chain, with a <code>handleType</code> equal to any one of the handle types specified in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-pNext-00991",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkExternalMemoryImageCreateInfoNV\">VkExternalMemoryImageCreateInfoNV</a> structure, its <code>handleTypes</code> member <strong class=\"purple\">must</strong> only contain bits that are also in <a href=\"#VkExternalImageFormatPropertiesNV\">VkExternalImageFormatPropertiesNV</a>::<code>externalMemoryProperties.compatibleHandleTypes</code>, as returned by <a href=\"#vkGetPhysicalDeviceExternalImageFormatPropertiesNV\">vkGetPhysicalDeviceExternalImageFormatPropertiesNV</a> with <code>format</code>, <code>imageType</code>, <code>tiling</code>, <code>usage</code>, and <code>flags</code> equal to those in this structure, and with <code>externalHandleType</code> equal to any one of the handle types specified in <a href=\"#VkExternalMemoryImageCreateInfoNV\">VkExternalMemoryImageCreateInfoNV</a>::<code>handleTypes</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-physicalDeviceCount-01421",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-flags-02259",
          "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>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-flags-01572",
          "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=\"#compressed_image_formats\">compressed image format</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-flags-01573",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-initialLayout-00993",
          "text": "<code>initialLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-pNext-01443",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a> or <code>VkExternalMemoryImageCreateInfoNV</code> structure whose <code>handleTypes</code> member is not <code>0</code>, <code>initialLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-format-06410",
          "text": "If the image <code>format</code> is one of the <a href=\"#formats-requiring-sampler-ycbcr-conversion\">formats that require a sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, <code>mipLevels</code> <strong class=\"purple\">must</strong> be 1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-format-06411",
          "text": "If the image <code>format</code> is one of the <a href=\"#formats-requiring-sampler-ycbcr-conversion\">formats that require a sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, <code>samples</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLE_COUNT_1_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-format-06412",
          "text": "If the image <code>format</code> is one of the <a href=\"#formats-requiring-sampler-ycbcr-conversion\">formats that require a sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-imageCreateFormatFeatures-02260",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-format-01577",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-format-04712",
          "text": "If <code>format</code> has a <code>_422</code> or <code>_420</code> suffix, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of 2",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-format-04713",
          "text": "If <code>format</code> has a <code>_420</code> suffix, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of 2",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-format-09583",
          "text": "If <code>format</code> is one of the <code>VK_FORMAT_PVTRC1_*_IMG</code> formats, <code>extent.width</code> <strong class=\"purple\">must</strong> be a power of 2",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-format-09584",
          "text": "If <code>format</code> is one of the <code>VK_FORMAT_PVTRC1_*_IMG</code> formats, <code>extent.height</code> <strong class=\"purple\">must</strong> be a power of 2",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-tiling-02261",
          "text": "If <code>tiling</code> is <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include exactly one of <a href=\"#VkImageDrmFormatModifierListCreateInfoEXT\">VkImageDrmFormatModifierListCreateInfoEXT</a> or <a href=\"#VkImageDrmFormatModifierExplicitCreateInfoEXT\">VkImageDrmFormatModifierExplicitCreateInfoEXT</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-pNext-02262",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkImageDrmFormatModifierListCreateInfoEXT\">VkImageDrmFormatModifierListCreateInfoEXT</a> or <a href=\"#VkImageDrmFormatModifierExplicitCreateInfoEXT\">VkImageDrmFormatModifierExplicitCreateInfoEXT</a> structure, then <code>tiling</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-tiling-02353",
          "text": "If <code>tiling</code> is <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code> and <code>flags</code> contains <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a> structure with non-zero <code>viewFormatCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-flags-01533",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-pNext-02393",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-pNext-02394",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-pNext-02396",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-pNext-02397",
          "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_INPUT_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, or <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-pNext-09457",
          "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>, and <a href=\"#features-externalFormatResolve\"><code>externalFormatResolve</code></a> feature is not enabled, <code>usage</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code> or <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-pNext-02398",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-pNext-08951",
          "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_SCREEN_BUFFER_BIT_QNX</code>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-pNext-08952",
          "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_SCREEN_BUFFER_BIT_QNX</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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-pNext-08953",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkExternalFormatQNX\">VkExternalFormatQNX</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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-pNext-08954",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkExternalFormatQNX\">VkExternalFormatQNX</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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-pNext-08955",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkExternalFormatQNX\">VkExternalFormatQNX</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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-format-02795",
          "text": "If <code>format</code> is a depth-stencil format, <code>usage</code> includes <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, and the <code>pNext</code> chain includes a <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a> structure, then its <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a>::<code>stencilUsage</code> member <strong class=\"purple\">must</strong> also include <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-format-02796",
          "text": "If <code>format</code> is a depth-stencil format, <code>usage</code> does not include <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, and the <code>pNext</code> chain includes a <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a> structure, then its <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a>::<code>stencilUsage</code> member <strong class=\"purple\">must</strong> also not include <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-format-02797",
          "text": "If <code>format</code> is a depth-stencil format, <code>usage</code> includes <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code>, and the <code>pNext</code> chain includes a <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a> structure, then its <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a>::<code>stencilUsage</code> member <strong class=\"purple\">must</strong> also include <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-format-02798",
          "text": "If <code>format</code> is a depth-stencil format, <code>usage</code> does not include <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code>, and the <code>pNext</code> chain includes a <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a> structure, then its <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a>::<code>stencilUsage</code> member <strong class=\"purple\">must</strong> also not include <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-Format-02536",
          "text": "If <code>Format</code> is a depth-stencil format and the <code>pNext</code> chain includes a <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a> structure with its <code>stencilUsage</code> member including <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferWidth</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-format-02537",
          "text": "If <code>format</code> is a depth-stencil format and the <code>pNext</code> chain includes a <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a> structure with its <code>stencilUsage</code> member including <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferHeight</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-format-02538",
          "text": "If the <a href=\"#features-shaderStorageImageMultisample\"><code>shaderStorageImageMultisample</code></a> feature is not enabled, <code>format</code> is a depth-stencil format and the <code>pNext</code> chain includes a <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a> structure with its <code>stencilUsage</code> including <code>VK_IMAGE_USAGE_STORAGE_BIT</code>, <code>samples</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLE_COUNT_1_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-flags-02050",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-flags-02051",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-flags-02052",
          "text": "If <code>flags</code> contains <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> and <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, <code>extent.width</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be greater than <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-flags-02053",
          "text": "If <code>flags</code> contains <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> and <code>imageType</code> is <code>VK_IMAGE_TYPE_3D</code>, <code>extent.width</code>, <code>extent.height</code>, and <code>extent.depth</code> <strong class=\"purple\">must</strong> be greater than <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-imageType-02082",
          "text": "If <code>usage</code> includes <code>VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-samples-02083",
          "text": "If <code>usage</code> includes <code>VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>, <code>samples</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLE_COUNT_1_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-shadingRateImage-07727",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled and <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-flags-02565",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-flags-02566",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-flags-02567",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-flags-02568",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-usage-04992",
          "text": "If <code>usage</code> includes <code>VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI</code>, <code>tiling</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TILING_LINEAR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-imageView2DOn3DImage-04459",
          "text": "If the <code><a href=\"#VK_KHR_portability_subset\">VK_KHR_portability_subset</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>imageView2DOn3DImage</code> is <code>VK_FALSE</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-multisampleArrayImage-04460",
          "text": "If the <code><a href=\"#VK_KHR_portability_subset\">VK_KHR_portability_subset</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>multisampleArrayImage</code> is <code>VK_FALSE</code>, and <code>samples</code> is not <code>VK_SAMPLE_COUNT_1_BIT</code>, then <code>arrayLayers</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-pNext-06722",
          "text": "If a <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a> structure was included in the <code>pNext</code> chain and <code>format</code> is not a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar</a> format and <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>::<code>viewFormatCount</code> is not zero, then each format in <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>::<code>pViewFormats</code> <strong class=\"purple\">must</strong> either be compatible with the <code>format</code> as described in the <a href=\"#formats-compatibility\">compatibility table</a> or, if <code>flags</code> contains <code>VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT</code>, be an uncompressed format that is size-compatible with <code>format</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-pNext-10062",
          "text": "If a <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a> structure was included in the <code>pNext</code> chain and <code>format</code> is a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar</a> format and <code>flags</code> contains <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code> and <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>::<code>viewFormatCount</code> is not zero, then each format in <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>::<code>pViewFormats</code> <strong class=\"purple\">must</strong> be compatible with the <code>VkFormat</code> for the plane of the image format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-flags-04738",
          "text": "If <code>flags</code> does not contain <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code> and the <code>pNext</code> chain includes a <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a> structure, then <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>::<code>viewFormatCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-usage-04815",
          "text": "If <code>usage</code> includes <code>VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR</code>, <code>VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR</code>, or <code>VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR</code>, and <code>flags</code> does not include <code>VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoProfileListInfoKHR\">VkVideoProfileListInfoKHR</a> structure with <code>profileCount</code> greater than <code>0</code> and <code>pProfiles</code> including at least one <a href=\"#VkVideoProfileInfoKHR\">VkVideoProfileInfoKHR</a> structure with a <code>videoCodecOperation</code> member specifying a decode operation",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-usage-04816",
          "text": "If <code>usage</code> includes <code>VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR</code>, <code>VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR</code>, or <code>VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR</code>, and <code>flags</code> does not include <code>VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoProfileListInfoKHR\">VkVideoProfileListInfoKHR</a> structure with <code>profileCount</code> greater than <code>0</code> and <code>pProfiles</code> including at least one <a href=\"#VkVideoProfileInfoKHR\">VkVideoProfileInfoKHR</a> structure with a <code>videoCodecOperation</code> member specifying an encode operation",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-flags-08328",
          "text": "If <code>flags</code> includes <code>VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR</code>, then <a href=\"#features-videoMaintenance1\"><code>videoMaintenance1</code></a> <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-flags-08329",
          "text": "If <code>flags</code> includes <code>VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR</code> and <code>usage</code> does not include <code>VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR</code>, then <code>usage</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-flags-08331",
          "text": "If <code>flags</code> includes <code>VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR</code>, then <code>usage</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-pNext-06811",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkVideoProfileListInfoKHR\">VkVideoProfileListInfoKHR</a> structure with <code>profileCount</code> greater than <code>0</code>, then <code>supportedVideoFormat</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-pNext-06390",
          "text": "If the <a href=\"#VkImage\">VkImage</a> is to be used to import memory from a <a href=\"#VkBufferCollectionFUCHSIA\">VkBufferCollectionFUCHSIA</a>, a <a href=\"#VkBufferCollectionImageCreateInfoFUCHSIA\">VkBufferCollectionImageCreateInfoFUCHSIA</a> structure <strong class=\"purple\">must</strong> be chained to <code>pNext</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-multisampledRenderToSingleSampled-06882",
          "text": "If the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-flags-06883",
          "text": "If <code>flags</code> contains <code>VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT</code>, <code>samples</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLE_COUNT_1_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-pNext-06743",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkImageCompressionControlEXT\">VkImageCompressionControlEXT</a> structure, <code>format</code> is a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar</a> format, and <a href=\"#VkImageCompressionControlEXT\">VkImageCompressionControlEXT</a>::<code>flags</code> includes <code>VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT</code>, then <a href=\"#VkImageCompressionControlEXT\">VkImageCompressionControlEXT</a>::<code>compressionControlPlaneCount</code> <strong class=\"purple\">must</strong> be equal to the number of planes in <code>format</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-pNext-06744",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkImageCompressionControlEXT\">VkImageCompressionControlEXT</a> structure, <code>format</code> is not a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar</a> format, and <a href=\"#VkImageCompressionControlEXT\">VkImageCompressionControlEXT</a>::<code>flags</code> includes <code>VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT</code>, then <a href=\"#VkImageCompressionControlEXT\">VkImageCompressionControlEXT</a>::<code>compressionControlPlaneCount</code> <strong class=\"purple\">must</strong> be 1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-pNext-06746",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkImageCompressionControlEXT\">VkImageCompressionControlEXT</a> structure, it <strong class=\"purple\">must</strong> not contain a <a href=\"#VkImageDrmFormatModifierExplicitCreateInfoEXT\">VkImageDrmFormatModifierExplicitCreateInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-flags-08104",
          "text": "If <code>flags</code> includes <code>VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT</code>, the <a href=\"#features-descriptorBufferCaptureReplay\"><code>descriptorBufferCaptureReplay</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-pNext-08105",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkOpaqueCaptureDescriptorDataCreateInfoEXT\">VkOpaqueCaptureDescriptorDataCreateInfoEXT</a> structure, <code>flags</code> <strong class=\"purple\">must</strong> contain <code>VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-pNext-06783",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkExportMetalObjectCreateInfoEXT\">VkExportMetalObjectCreateInfoEXT</a> structure, its <code>exportObjectType</code> member <strong class=\"purple\">must</strong> be either <code>VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT</code> or <code>VK_EXPORT_METAL_OBJECT_TYPE_METAL_IOSURFACE_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-pNext-06784",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkImportMetalTextureInfoEXT\">VkImportMetalTextureInfoEXT</a> structure its <code>plane</code> member <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-pNext-06785",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkImportMetalTextureInfoEXT\">VkImportMetalTextureInfoEXT</a> structure and the image does not have a multi-planar format, then <a href=\"#VkImportMetalTextureInfoEXT\">VkImportMetalTextureInfoEXT</a>::<code>plane</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-pNext-06786",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkImportMetalTextureInfoEXT\">VkImportMetalTextureInfoEXT</a> structure and the image has a multi-planar format with only two planes, then <a href=\"#VkImportMetalTextureInfoEXT\">VkImportMetalTextureInfoEXT</a>::<code>plane</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-imageCreateFormatFeatures-09048",
          "text": "If <code>imageCreateFormatFeatures</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>) does not contain <code>VK_FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT_EXT</code>, then <code>usage</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-pNext-09653",
          "text": "If the <code>pNext</code> chain contains a <a href=\"#VkImageAlignmentControlCreateInfoMESA\">VkImageAlignmentControlCreateInfoMESA</a> structure, <code>tiling</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TILING_OPTIMAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-pNext-09654",
          "text": "If the <code>pNext</code> chain contains a <a href=\"#VkImageAlignmentControlCreateInfoMESA\">VkImageAlignmentControlCreateInfoMESA</a> structure, it <strong class=\"purple\">must</strong> not contain a <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-pNext-pNext",
          "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=\"#VkBufferCollectionImageCreateInfoFUCHSIA\">VkBufferCollectionImageCreateInfoFUCHSIA</a>, <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>, <a href=\"#VkExportMetalObjectCreateInfoEXT\">VkExportMetalObjectCreateInfoEXT</a>, <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>, <a href=\"#VkExternalFormatQNX\">VkExternalFormatQNX</a>, <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>, <a href=\"#VkExternalMemoryImageCreateInfoNV\">VkExternalMemoryImageCreateInfoNV</a>, <a href=\"#VkImageAlignmentControlCreateInfoMESA\">VkImageAlignmentControlCreateInfoMESA</a>, <a href=\"#VkImageCompressionControlEXT\">VkImageCompressionControlEXT</a>, <a href=\"#VkImageDrmFormatModifierExplicitCreateInfoEXT\">VkImageDrmFormatModifierExplicitCreateInfoEXT</a>, <a href=\"#VkImageDrmFormatModifierListCreateInfoEXT\">VkImageDrmFormatModifierListCreateInfoEXT</a>, <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>, <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a>, <a href=\"#VkImageSwapchainCreateInfoKHR\">VkImageSwapchainCreateInfoKHR</a>, <a href=\"#VkImportMetalIOSurfaceInfoEXT\">VkImportMetalIOSurfaceInfoEXT</a>, <a href=\"#VkImportMetalTextureInfoEXT\">VkImportMetalTextureInfoEXT</a>, <a href=\"#VkOpaqueCaptureDescriptorDataCreateInfoEXT\">VkOpaqueCaptureDescriptorDataCreateInfoEXT</a>, <a href=\"#VkOpticalFlowImageFormatInfoNV\">VkOpticalFlowImageFormatInfoNV</a>, or <a href=\"#VkVideoProfileListInfoKHR\">VkVideoProfileListInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique, with the exception of structures of type <a href=\"#VkExportMetalObjectCreateInfoEXT\">VkExportMetalObjectCreateInfoEXT</a> or <a href=\"#VkImportMetalTextureInfoEXT\">VkImportMetalTextureInfoEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-imageType-parameter",
          "text": "<code>imageType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-format-parameter",
          "text": "<code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-samples-parameter",
          "text": "<code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-tiling-parameter",
          "text": "<code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-usage-parameter",
          "text": "<code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-usage-requiredbitmask",
          "text": "<code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-sharingMode-parameter",
          "text": "<code>sharingMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSharingMode\">VkSharingMode</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCreateInfo-initialLayout-parameter",
          "text": "<code>initialLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkBufferCollectionImageCreateInfoFUCHSIA": {
      "core": [
        {
          "vuid": "VUID-VkBufferCollectionImageCreateInfoFUCHSIA-index-06391",
          "text": "<code>index</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkBufferCollectionPropertiesFUCHSIA\">VkBufferCollectionPropertiesFUCHSIA</a>::<code>bufferCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCollectionImageCreateInfoFUCHSIA-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCollectionImageCreateInfoFUCHSIA-collection-parameter",
          "text": "<code>collection</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBufferCollectionFUCHSIA\">VkBufferCollectionFUCHSIA</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkImageStencilUsageCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkImageStencilUsageCreateInfo-stencilUsage-02539",
          "text": "If <code>stencilUsage</code> includes <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code>, it <strong class=\"purple\">must</strong> not include bits other than <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageStencilUsageCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageStencilUsageCreateInfo-stencilUsage-parameter",
          "text": "<code>stencilUsage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageStencilUsageCreateInfo-stencilUsage-requiredbitmask",
          "text": "<code>stencilUsage</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkDedicatedAllocationImageCreateInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkDedicatedAllocationImageCreateInfoNV-dedicatedAllocation-00994",
          "text": "If <code>dedicatedAllocation</code> is <code>VK_TRUE</code>, <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDedicatedAllocationImageCreateInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkExternalMemoryImageCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkExternalMemoryImageCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExternalMemoryImageCreateInfo-handleTypes-parameter",
          "text": "<code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> values",
          "page": "vkspec"
        }
      ]
    },
    "VkExternalMemoryImageCreateInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkExternalMemoryImageCreateInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExternalMemoryImageCreateInfoNV-handleTypes-parameter",
          "text": "<code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values",
          "page": "vkspec"
        }
      ]
    },
    "VkExternalFormatANDROID": {
      "core": [
        {
          "vuid": "VUID-VkExternalFormatANDROID-externalFormat-01894",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExternalFormatANDROID-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkExternalFormatQNX": {
      "core": [
        {
          "vuid": "VUID-VkExternalFormatQNX-externalFormat-08956",
          "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=\"#VkScreenBufferFormatPropertiesQNX\">VkScreenBufferFormatPropertiesQNX</a> by an earlier call to <a href=\"#vkGetScreenBufferPropertiesQNX\">vkGetScreenBufferPropertiesQNX</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExternalFormatQNX-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkImageSwapchainCreateInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkImageSwapchainCreateInfoKHR-swapchain-00995",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageSwapchainCreateInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageSwapchainCreateInfoKHR-swapchain-parameter",
          "text": "If <code>swapchain</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkImageFormatListCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkImageFormatListCreateInfo-viewFormatCount-09540",
          "text": "If <code>viewFormatCount</code> is not 0, each element of <code>pViewFormats</code> <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageFormatListCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageFormatListCreateInfo-pViewFormats-parameter",
          "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",
          "page": "vkspec"
        }
      ]
    },
    "VkImageDrmFormatModifierListCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkImageDrmFormatModifierListCreateInfoEXT-pDrmFormatModifiers-02263",
          "text": "Each <em>modifier</em> in <code>pDrmFormatModifiers</code> <strong class=\"purple\">must</strong> be compatible with the parameters in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> and its <code>pNext</code> chain, as determined by querying <a href=\"#VkPhysicalDeviceImageFormatInfo2\">VkPhysicalDeviceImageFormatInfo2</a> extended with <a href=\"#VkPhysicalDeviceImageDrmFormatModifierInfoEXT\">VkPhysicalDeviceImageDrmFormatModifierInfoEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageDrmFormatModifierListCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageDrmFormatModifierListCreateInfoEXT-pDrmFormatModifiers-parameter",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageDrmFormatModifierListCreateInfoEXT-drmFormatModifierCount-arraylength",
          "text": "<code>drmFormatModifierCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkImageDrmFormatModifierExplicitCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-drmFormatModifier-02264",
          "text": "<code>drmFormatModifier</code> <strong class=\"purple\">must</strong> be compatible with the parameters in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> and its <code>pNext</code> chain, as determined by querying <a href=\"#VkPhysicalDeviceImageFormatInfo2\">VkPhysicalDeviceImageFormatInfo2</a> extended with <a href=\"#VkPhysicalDeviceImageDrmFormatModifierInfoEXT\">VkPhysicalDeviceImageDrmFormatModifierInfoEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-drmFormatModifierPlaneCount-02265",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-size-02267",
          "text": "For each element of <code>pPlaneLayouts</code>, <code>size</code> <strong class=\"purple\">must</strong> be 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-arrayPitch-02268",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-depthPitch-02269",
          "text": "For each element of <code>pPlaneLayouts</code>, <code>depthPitch</code> <strong class=\"purple\">must</strong> be 0 if <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>extent.depth</code> is 1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-pPlaneLayouts-parameter",
          "text": "<code>pPlaneLayouts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>drmFormatModifierPlaneCount</code> <a href=\"#VkSubresourceLayout\">VkSubresourceLayout</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-drmFormatModifierPlaneCount-arraylength",
          "text": "<code>drmFormatModifierPlaneCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkImageCompressionControlEXT": {
      "core": [
        {
          "vuid": "VUID-VkImageCompressionControlEXT-flags-06747",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be one of <code>VK_IMAGE_COMPRESSION_DEFAULT_EXT</code>, <code>VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT</code>, <code>VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT</code>, or <code>VK_IMAGE_COMPRESSION_DISABLED_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCompressionControlEXT-flags-06748",
          "text": "If <code>flags</code> includes <code>VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT</code>, <code>pFixedRateFlags</code> <strong class=\"purple\">must</strong> not be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCompressionControlEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkImageCompressionPropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-VkImageCompressionPropertiesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkImageAlignmentControlCreateInfoMESA": {
      "core": [
        {
          "vuid": "VUID-VkImageAlignmentControlCreateInfoMESA-maximumRequestedAlignment-09655",
          "text": "If <code>maximumRequestedAlignment</code> is not 0, <code>maximumRequestedAlignment</code> <strong class=\"purple\">must</strong> be a power of two",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageAlignmentControlCreateInfoMESA-maximumRequestedAlignment-09656",
          "text": "If <code>maximumRequestedAlignment</code> is not 0, the bitwise-and of <code>maximumRequestedAlignment</code> and <a href=\"#limits-supportedImageAlignmentMask\"><code>supportedImageAlignmentMask</code></a> <strong class=\"purple\">must</strong> be non-zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageAlignmentControlCreateInfoMESA-imageAlignmentControl-09657",
          "text": "<a href=\"#features-imageAlignmentControl\"><code>imageAlignmentControl</code></a> <strong class=\"purple\">must</strong> be enabled on the device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageAlignmentControlCreateInfoMESA-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetImageSubresourceLayout": {
      "core": [
        {
          "vuid": "VUID-vkGetImageSubresourceLayout-image-07790",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageSubresourceLayout-aspectMask-00997",
          "text": "The <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> only have a single bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageSubresourceLayout-mipLevel-01716",
          "text": "The <code>mipLevel</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <code>image</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageSubresourceLayout-arrayLayer-01717",
          "text": "The <code>arrayLayer</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <code>image</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageSubresourceLayout-format-08886",
          "text": "If <code>format</code> of the <code>image</code> is a color format that is not a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a>, and <code>tiling</code> of the <code>image</code> is <code>VK_IMAGE_TILING_LINEAR</code> or <code>VK_IMAGE_TILING_OPTIMAL</code>, the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageSubresourceLayout-format-04462",
          "text": "If <code>format</code> of the <code>image</code> has a depth component, the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> contain <code>VK_IMAGE_ASPECT_DEPTH_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageSubresourceLayout-format-04463",
          "text": "If <code>format</code> of the <code>image</code> has a stencil component, the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> contain <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageSubresourceLayout-format-04464",
          "text": "If <code>format</code> of the <code>image</code> does not contain a stencil or depth component, the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> or <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageSubresourceLayout-tiling-08717",
          "text": "If the <code>tiling</code> of the <code>image</code> is <code>VK_IMAGE_TILING_LINEAR</code> and has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a>, then the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be a single valid <a href=\"#formats-planes-image-aspect\">multi-planar aspect mask</a> bit",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageSubresourceLayout-image-09432",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageSubresourceLayout-tiling-09433",
          "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<em>_i_</em>BIT_EXT</code> and the index <em>i</em> <strong class=\"purple\">must</strong> be less than the <a href=\"#VkDrmFormatModifierPropertiesEXT\">VkDrmFormatModifierPropertiesEXT</a>::<code>drmFormatModifierPlaneCount</code> associated with the image&#8217;s <code>format</code> and <a href=\"#VkImageDrmFormatModifierPropertiesEXT\">VkImageDrmFormatModifierPropertiesEXT</a>::<code>drmFormatModifier</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageSubresourceLayout-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageSubresourceLayout-image-parameter",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageSubresourceLayout-pSubresource-parameter",
          "text": "<code>pSubresource</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImageSubresource\">VkImageSubresource</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageSubresourceLayout-pLayout-parameter",
          "text": "<code>pLayout</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSubresourceLayout\">VkSubresourceLayout</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageSubresourceLayout-image-parent",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkImageSubresource": {
      "core": [
        {
          "vuid": "VUID-VkImageSubresource-aspectMask-parameter",
          "text": "<code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageSubresource-aspectMask-requiredbitmask",
          "text": "<code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetImageSubresourceLayout2KHR": {
      "core": [
        {
          "vuid": "VUID-vkGetImageSubresourceLayout2KHR-aspectMask-00997",
          "text": "The <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> only have a single bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageSubresourceLayout2KHR-mipLevel-01716",
          "text": "The <code>mipLevel</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <code>image</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageSubresourceLayout2KHR-arrayLayer-01717",
          "text": "The <code>arrayLayer</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <code>image</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageSubresourceLayout2KHR-format-08886",
          "text": "If <code>format</code> of the <code>image</code> is a color format that is not a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a>, and <code>tiling</code> of the <code>image</code> is <code>VK_IMAGE_TILING_LINEAR</code> or <code>VK_IMAGE_TILING_OPTIMAL</code>, the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageSubresourceLayout2KHR-format-04462",
          "text": "If <code>format</code> of the <code>image</code> has a depth component, the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> contain <code>VK_IMAGE_ASPECT_DEPTH_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageSubresourceLayout2KHR-format-04463",
          "text": "If <code>format</code> of the <code>image</code> has a stencil component, the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> contain <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageSubresourceLayout2KHR-format-04464",
          "text": "If <code>format</code> of the <code>image</code> does not contain a stencil or depth component, the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> or <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageSubresourceLayout2KHR-tiling-08717",
          "text": "If the <code>tiling</code> of the <code>image</code> is <code>VK_IMAGE_TILING_LINEAR</code> and has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a>, then the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be a single valid <a href=\"#formats-planes-image-aspect\">multi-planar aspect mask</a> bit",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageSubresourceLayout2KHR-image-09434",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageSubresourceLayout2KHR-tiling-09435",
          "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<em>_i_</em>BIT_EXT</code> and the index <em>i</em> <strong class=\"purple\">must</strong> be less than the <a href=\"#VkDrmFormatModifierPropertiesEXT\">VkDrmFormatModifierPropertiesEXT</a>::<code>drmFormatModifierPlaneCount</code> associated with the image&#8217;s <code>format</code> and <a href=\"#VkImageDrmFormatModifierPropertiesEXT\">VkImageDrmFormatModifierPropertiesEXT</a>::<code>drmFormatModifier</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageSubresourceLayout2KHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageSubresourceLayout2KHR-image-parameter",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageSubresourceLayout2KHR-pSubresource-parameter",
          "text": "<code>pSubresource</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImageSubresource2KHR\">VkImageSubresource2KHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageSubresourceLayout2KHR-pLayout-parameter",
          "text": "<code>pLayout</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSubresourceLayout2KHR\">VkSubresourceLayout2KHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageSubresourceLayout2KHR-image-parent",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkImageSubresource2KHR": {
      "core": [
        {
          "vuid": "VUID-VkImageSubresource2KHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageSubresource2KHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageSubresource2KHR-imageSubresource-parameter",
          "text": "<code>imageSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresource\">VkImageSubresource</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkSubresourceLayout2KHR": {
      "core": [
        {
          "vuid": "VUID-VkSubresourceLayout2KHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubresourceLayout2KHR-pNext-pNext",
          "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=\"#VkImageCompressionPropertiesEXT\">VkImageCompressionPropertiesEXT</a> or <a href=\"#VkSubresourceHostMemcpySizeEXT\">VkSubresourceHostMemcpySizeEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSubresourceLayout2KHR-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        }
      ]
    },
    "VkSubresourceHostMemcpySizeEXT": {
      "core": [
        {
          "vuid": "VUID-VkSubresourceHostMemcpySizeEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetDeviceImageSubresourceLayoutKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetDeviceImageSubresourceLayoutKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceImageSubresourceLayoutKHR-pInfo-parameter",
          "text": "<code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDeviceImageSubresourceInfoKHR\">VkDeviceImageSubresourceInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceImageSubresourceLayoutKHR-pLayout-parameter",
          "text": "<code>pLayout</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSubresourceLayout2KHR\">VkSubresourceLayout2KHR</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkDeviceImageSubresourceInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkDeviceImageSubresourceInfoKHR-aspectMask-00997",
          "text": "The <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> only have a single bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceImageSubresourceInfoKHR-mipLevel-01716",
          "text": "The <code>mipLevel</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <code>pCreateInfo</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceImageSubresourceInfoKHR-arrayLayer-01717",
          "text": "The <code>arrayLayer</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <code>pCreateInfo</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceImageSubresourceInfoKHR-format-08886",
          "text": "If <code>format</code> of the <code>image</code> is a color format that is not a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a>, and <code>tiling</code> of the <code>pCreateInfo</code> is <code>VK_IMAGE_TILING_LINEAR</code> or <code>VK_IMAGE_TILING_OPTIMAL</code>, the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceImageSubresourceInfoKHR-format-04462",
          "text": "If <code>format</code> of the <code>pCreateInfo</code> has a depth component, the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> contain <code>VK_IMAGE_ASPECT_DEPTH_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceImageSubresourceInfoKHR-format-04463",
          "text": "If <code>format</code> of the <code>pCreateInfo</code> has a stencil component, the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> contain <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceImageSubresourceInfoKHR-format-04464",
          "text": "If <code>format</code> of the <code>pCreateInfo</code> does not contain a stencil or depth component, the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> or <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceImageSubresourceInfoKHR-tiling-08717",
          "text": "If the <code>tiling</code> of the <code>pCreateInfo</code> is <code>VK_IMAGE_TILING_LINEAR</code> and has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a>, then the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be a single valid <a href=\"#formats-planes-image-aspect\">multi-planar aspect mask</a> bit",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceImageSubresourceInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceImageSubresourceInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceImageSubresourceInfoKHR-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceImageSubresourceInfoKHR-pSubresource-parameter",
          "text": "<code>pSubresource</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImageSubresource2KHR\">VkImageSubresource2KHR</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "vkGetImageDrmFormatModifierPropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-image-02272",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-image-parameter",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-pProperties-parameter",
          "text": "<code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkImageDrmFormatModifierPropertiesEXT\">VkImageDrmFormatModifierPropertiesEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-image-parent",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkImageDrmFormatModifierPropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-VkImageDrmFormatModifierPropertiesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageDrmFormatModifierPropertiesEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroyImage": {
      "core": [
        {
          "vuid": "VUID-vkDestroyImage-image-01000",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyImage-image-01001",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyImage-image-01002",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyImage-image-04882",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> not have been acquired from <a href=\"#vkGetSwapchainImagesKHR\">vkGetSwapchainImagesKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyImage-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyImage-image-parameter",
          "text": "If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyImage-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyImage-image-parent",
          "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>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateImageView": {
      "core": [
        {
          "vuid": "VUID-vkCreateImageView-device-09667",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> support at least one queue family with one of the <code>VK_QUEUE_VIDEO_ENCODE_BIT_KHR</code>, <code>VK_QUEUE_VIDEO_DECODE_BIT_KHR</code>, <code>VK_QUEUE_COMPUTE_BIT</code>, or <code>VK_QUEUE_GRAPHICS_BIT</code> capabilities",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateImageView-image-09179",
          "text": "<a href=\"#VkImageViewCreateInfo\">VkImageViewCreateInfo</a>::<code>image</code> <strong class=\"purple\">must</strong> have been created from <code>device</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateImageView-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateImageView-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImageViewCreateInfo\">VkImageViewCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateImageView-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateImageView-pView-parameter",
          "text": "<code>pView</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkImageView\">VkImageView</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkImageViewCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkImageViewCreateInfo-image-01003",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-viewType-01004",
          "text": "If the <a href=\"#features-imageCubeArray\"><code>imageCubeArray</code></a> feature is not enabled, <code>viewType</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-image-06723",
          "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_ARRAY</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-image-06728",
          "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> or <code>VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT</code> set, then <code>viewType</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_VIEW_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-image-04970",
          "text": "If <code>image</code> was created with <code>VK_IMAGE_TYPE_3D</code> and <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> then <code>subresourceRange.levelCount</code> <strong class=\"purple\">must</strong> be 1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-image-04971",
          "text": "If <code>image</code> was created with <code>VK_IMAGE_TYPE_3D</code> and <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> then <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> <strong class=\"purple\">must</strong> not contain any of <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>, and <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-image-04972",
          "text": "If <code>image</code> was created with a <code>samples</code> value not equal to <code>VK_SAMPLE_COUNT_1_BIT</code> then <code>viewType</code> <strong class=\"purple\">must</strong> be either <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-image-04441",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value containing at least one of the usages defined in the <a href=\"#valid-imageview-imageusage\">valid image usage</a> list for image views",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-None-02273",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-usage-02274",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-usage-02275",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-usage-08931",
          "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> or <code>VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-usage-02277",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-image-08333",
          "text": "If <code>image</code> was created with <code>VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR</code> and <code>usage</code> contains <code>VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR</code>, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-image-08334",
          "text": "If <code>image</code> was created with <code>VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR</code> and <code>usage</code> contains <code>VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR</code>, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-image-08335",
          "text": "If <code>image</code> was created with <code>VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR</code>, then <code>usage</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-image-08336",
          "text": "If <code>image</code> was created with <code>VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR</code> and <code>usage</code> contains <code>VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR</code>, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-image-08337",
          "text": "If <code>image</code> was created with <code>VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR</code> and <code>usage</code> contains <code>VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR</code>, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-image-08338",
          "text": "If <code>image</code> was created with <code>VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR</code>, then <code>usage</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-usage-08932",
          "text": "If <code>usage</code> contains <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, and any of the following is true:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <a href=\"#features-externalFormatResolve\"><code>externalFormatResolve</code></a>\nfeature is not enabled</p>\n</li>\n<li>\n<p>the <a href=\"#limits-nullColorAttachmentWithExternalFormatResolve\"><code>nullColorAttachmentWithExternalFormatResolve</code></a> property is\n<code>VK_FALSE</code></p>\n</li>\n<li>\n<p><code>image</code> was created with an\n<a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value of 0</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format\nfeatures</a> <strong class=\"purple\">must</strong> contain at least one of\n<code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code> or\n<code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>\n    or <code>VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV</code></p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01478",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01718",
          "text": "If <code>subresourceRange.levelCount</code> is not <code>VK_REMAINING_MIP_LEVELS</code>, <span class=\"eq\"><code>subresourceRange.baseMipLevel</code> +  <code>subresourceRange.levelCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-image-02571",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-image-06724",
          "text": "If <code>image</code> is not a 3D image created with <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code> or <code>VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT</code> set, or <code>viewType</code> is not <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>, <code>subresourceRange.baseArrayLayer</code> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-06725",
          "text": "If <code>subresourceRange.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <code>image</code> is not a 3D image created with <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code> or <code>VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT</code> set, or <code>viewType</code> is not <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>, <code>subresourceRange.layerCount</code> <strong class=\"purple\">must</strong> be non-zero and <span class=\"eq\"><code>subresourceRange.baseArrayLayer</code> +  <code>subresourceRange.layerCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-image-02724",
          "text": "If <code>image</code> is a 3D image created with <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code> set, and <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>, <code>subresourceRange.baseArrayLayer</code> <strong class=\"purple\">must</strong> be less than the depth computed from <code>baseMipLevel</code> and <code>extent.depth</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created, according to the formula defined in <a href=\"#resources-image-mip-level-sizing\">Image Mip Level Sizing</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-02725",
          "text": "If <code>subresourceRange.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <code>image</code> is a 3D image created with <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code> set, and <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>, <code>subresourceRange.layerCount</code> <strong class=\"purple\">must</strong> be non-zero and <span class=\"eq\"><code>subresourceRange.baseArrayLayer</code> +  <code>subresourceRange.layerCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the depth computed from <code>baseMipLevel</code> and <code>extent.depth</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created, according to the formula defined in <a href=\"#resources-image-mip-level-sizing\">Image Mip Level Sizing</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-image-01761",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-image-01583",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-image-07072",
          "text": "If <code>image</code> was created with the <code>VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT</code> flag and <code>format</code> is a non-compressed format, the <code>levelCount</code> member of <code>subresourceRange</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-image-09487",
          "text": "If <code>image</code> was created with the <code>VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT</code> flag, the <code>VkPhysicalDeviceMaintenance6PropertiesKHR</code>::<code>blockTexelViewCompatibleMultipleLayers</code> property is not set to <code>VK_TRUE</code>, and <code>format</code> is a non-compressed format, then the <code>layerCount</code> member of <code>subresourceRange</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-pNext-01585",
          "text": "If a <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a> structure was included in the <code>pNext</code> chain of the <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> structure used when creating <code>image</code> and <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>::<code>viewFormatCount</code> is not zero then <code>format</code> <strong class=\"purple\">must</strong> be one of the formats in <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>::<code>pViewFormats</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-image-01586",
          "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 the <a href=\"#formats-planes-image-aspect\">multi-planar aspect mask</a> bits, 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-07818",
          "text": "<code>subresourceRange.aspectMask</code> <strong class=\"purple\">must</strong> only have at most 1 valid <a href=\"#formats-planes-image-aspect\">multi-planar aspect mask</a> bit",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-image-01762",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-format-06415",
          "text": "If the image view <a href=\"#image-views-requiring-sampler-ycbcr-conversion\">requires a sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a> and <code>usage</code> contains <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkSamplerYcbcrConversionInfo\">VkSamplerYcbcrConversionInfo</a> structure with a conversion value other than <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-format-04714",
          "text": "If <code>format</code> has a <code>_422</code> or <code>_420</code> suffix then <code>image</code> <strong class=\"purple\">must</strong> have been created with a width that is a multiple of 2",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-format-04715",
          "text": "If <code>format</code> has a <code>_420</code> suffix then <code>image</code> <strong class=\"purple\">must</strong> have been created with a height that is a multiple of 2",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-pNext-01970",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkSamplerYcbcrConversionInfo\">VkSamplerYcbcrConversionInfo</a> structure with a <code>conversion</code> value other than <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, all members of <code>components</code> <strong class=\"purple\">must</strong> have the <a href=\"#resources-image-views-identity-mappings\">identity swizzle</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-pNext-06658",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkSamplerYcbcrConversionInfo\">VkSamplerYcbcrConversionInfo</a> structure with a <code>conversion</code> value other than <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>format</code> <strong class=\"purple\">must</strong> be the same used in <a href=\"#VkSamplerYcbcrConversionCreateInfo\">VkSamplerYcbcrConversionCreateInfo</a>::<code>format</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-image-01020",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-subResourceRange-01021",
          "text": "<code>viewType</code> <strong class=\"purple\">must</strong> be compatible with the type of <code>image</code> as shown in the <a href=\"#resources-image-views-compatibility\">view type compatibility table</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-image-02399",
          "text": "If <code>image</code> has an <a href=\"#memory-external-android-hardware-buffer-external-formats\">Android external format</a>, <code>format</code> <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-image-02400",
          "text": "If <code>image</code> has an <a href=\"#memory-external-android-hardware-buffer-external-formats\">Android external format</a>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkSamplerYcbcrConversionInfo\">VkSamplerYcbcrConversionInfo</a> structure with a <code>conversion</code> object created with the same external format as <code>image</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-image-02401",
          "text": "If <code>image</code> has an <a href=\"#memory-external-android-hardware-buffer-external-formats\">Android external format</a>, all members of <code>components</code> <strong class=\"purple\">must</strong> be the <a href=\"#resources-image-views-identity-mappings\">identity swizzle</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-image-08957",
          "text": "If <code>image</code> has an <a href=\"#memory-external-screen-buffer-external-formats\">QNX Screen external format</a>, <code>format</code> <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-image-08958",
          "text": "If <code>image</code> has an <a href=\"#memory-external-screen-buffer-external-formats\">QNX Screen external format</a>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkSamplerYcbcrConversionInfo\">VkSamplerYcbcrConversionInfo</a> structure with a <code>conversion</code> object created with the same external format as <code>image</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-image-08959",
          "text": "If <code>image</code> has an <a href=\"#memory-external-screen-buffer-external-formats\">QNX Screen external format</a>, all members of <code>components</code> <strong class=\"purple\">must</strong> be the <a href=\"#resources-image-views-identity-mappings\">identity swizzle</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-image-02086",
          "text": "If <code>image</code> was created with <code>usage</code> containing <code>VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>, <code>viewType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-image-02087",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-usage-04550",
          "text": "If the <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> feature is enabled, and the <code>usage</code> for the image view includes <code>VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-usage-04551",
          "text": "If the <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> feature is enabled, the <code>usage</code> for the image view includes <code>VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>, and <a href=\"#limits-layeredShadingRateAttachments\"><code>layeredShadingRateAttachments</code></a> is <code>VK_FALSE</code>, <code>subresourceRange.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-flags-02572",
          "text": "If the <a href=\"#features-fragmentDensityMapDynamic\"><code>fragmentDensityMapDynamic</code></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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-flags-03567",
          "text": "If the <a href=\"#features-fragmentDensityMapDeferred\"><code>fragmentDensityMapDeferred</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-flags-03568",
          "text": "If <code>flags</code> contains <code>VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-image-03569",
          "text": "If <code>image</code> was created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code> and <code>usage</code> containing <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, <code>subresourceRange.layerCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxSubsampledArrayLayers\"><code>VkPhysicalDeviceFragmentDensityMap2PropertiesEXT</code>::<code>maxSubsampledArrayLayers</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-invocationMask-04993",
          "text": "If the <a href=\"#features-invocationMask\"><code>invocationMask</code></a> feature is enabled, and if <code>image</code> was created with <code>usage</code> containing <code>VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI</code>, <code>format</code> <strong class=\"purple\">must</strong> be <code>VK_FORMAT_R8_UINT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-flags-04116",
          "text": "If <code>flags</code> does not contain <code>VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT</code> and <code>image</code> was created with <code>usage</code> containing <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>, its <code>flags</code> <strong class=\"purple\">must</strong> not contain any of <code>VK_IMAGE_CREATE_PROTECTED_BIT</code>, <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-pNext-02662",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkImageViewUsageCreateInfo\">VkImageViewUsageCreateInfo</a> structure, and <code>image</code> was not created with a <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a> structure included in the <code>pNext</code> chain of <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>, its <code>usage</code> member <strong class=\"purple\">must</strong> not include any bits that were not set in the <code>usage</code> member of the <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> structure used to create <code>image</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-pNext-02663",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkImageViewUsageCreateInfo\">VkImageViewUsageCreateInfo</a> structure, <code>image</code> was created with a <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a> structure included in the <code>pNext</code> chain of <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>, and <code>subresourceRange.aspectMask</code> includes <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>, the <code>usage</code> member of the <a href=\"#VkImageViewUsageCreateInfo\">VkImageViewUsageCreateInfo</a> structure <strong class=\"purple\">must</strong> not include any bits that were not set in the <code>usage</code> member of the <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a> structure used to create <code>image</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-pNext-02664",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkImageViewUsageCreateInfo\">VkImageViewUsageCreateInfo</a> structure, <code>image</code> was created with a <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a> structure included in the <code>pNext</code> chain of <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>, and <code>subresourceRange.aspectMask</code> includes bits other than <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>, the <code>usage</code> member of the <a href=\"#VkImageViewUsageCreateInfo\">VkImageViewUsageCreateInfo</a> structure <strong class=\"purple\">must</strong> not include any bits that were not set in the <code>usage</code> member of the <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> structure used to create <code>image</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-imageViewType-04973",
          "text": "If <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_1D</code>, <code>VK_IMAGE_VIEW_TYPE_2D</code>, or <code>VK_IMAGE_VIEW_TYPE_3D</code>; and <code>subresourceRange.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, then <code>subresourceRange.layerCount</code> <strong class=\"purple\">must</strong> be 1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-imageViewType-04974",
          "text": "If <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_1D</code>, <code>VK_IMAGE_VIEW_TYPE_2D</code>, or <code>VK_IMAGE_VIEW_TYPE_3D</code>; and <code>subresourceRange.layerCount</code> is <code>VK_REMAINING_ARRAY_LAYERS</code>, then the remaining number of layers <strong class=\"purple\">must</strong> be 1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-viewType-02960",
          "text": "If <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_CUBE</code> and <code>subresourceRange.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <code>subresourceRange.layerCount</code> <strong class=\"purple\">must</strong> be <code>6</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-viewType-02961",
          "text": "If <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code> and <code>subresourceRange.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <code>subresourceRange.layerCount</code> <strong class=\"purple\">must</strong> be a multiple of <code>6</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-viewType-02962",
          "text": "If <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_CUBE</code> and <code>subresourceRange.layerCount</code> is <code>VK_REMAINING_ARRAY_LAYERS</code>, the remaining number of layers <strong class=\"purple\">must</strong> be <code>6</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-viewType-02963",
          "text": "If <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code> and <code>subresourceRange.layerCount</code> is <code>VK_REMAINING_ARRAY_LAYERS</code>, the remaining number of layers <strong class=\"purple\">must</strong> be a multiple of <code>6</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-imageViewFormatSwizzle-04465",
          "text": "If the <code><a href=\"#VK_KHR_portability_subset\">VK_KHR_portability_subset</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>imageViewFormatSwizzle</code> is <code>VK_FALSE</code>, all elements of <code>components</code> <strong class=\"purple\">must</strong> have the <a href=\"#resources-image-views-identity-mappings\">identity swizzle</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-imageViewFormatReinterpretation-04466",
          "text": "If the <code><a href=\"#VK_KHR_portability_subset\">VK_KHR_portability_subset</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>imageViewFormatReinterpretation</code> is <code>VK_FALSE</code>, the <a href=\"#VkFormat\">VkFormat</a> in <code>format</code> <strong class=\"purple\">must</strong> not contain a different number of components, or a different number of bits in each component, than the format of the <code>VkImage</code> in <code>image</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-image-04817",
          "text": "If <code>image</code> was created with <code>usage</code> containing <code>VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR</code>, <code>VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR</code>, or <code>VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR</code>, then the <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-image-04818",
          "text": "If <code>image</code> was created with <code>usage</code> containing <code>VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR</code>, <code>VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR</code>, or <code>VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR</code>, then the <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-flags-08106",
          "text": "If <code>flags</code> includes <code>VK_IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT</code>, the <a href=\"#features-descriptorBufferCaptureReplay\"><code>descriptorBufferCaptureReplay</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-pNext-08107",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkOpaqueCaptureDescriptorDataCreateInfoEXT\">VkOpaqueCaptureDescriptorDataCreateInfoEXT</a> structure, <code>flags</code> <strong class=\"purple\">must</strong> contain <code>VK_IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-pNext-06787",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkExportMetalObjectCreateInfoEXT\">VkExportMetalObjectCreateInfoEXT</a> structure, its <code>exportObjectType</code> member <strong class=\"purple\">must</strong> be <code>VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-pNext-06944",
          "text": "If the <code>pNext</code> chain includes <a href=\"#VkImageViewSampleWeightCreateInfoQCOM\">VkImageViewSampleWeightCreateInfoQCOM</a> structure, then <a href=\"#features-textureSampleWeighted\"><code>textureSampleWeighted</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-pNext-06945",
          "text": "If the <code>pNext</code> chain includes <a href=\"#VkImageViewSampleWeightCreateInfoQCOM\">VkImageViewSampleWeightCreateInfoQCOM</a> structure, then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>usage</code> containing <code>VK_IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-pNext-06946",
          "text": "If the <code>pNext</code> chain includes <a href=\"#VkImageViewSampleWeightCreateInfoQCOM\">VkImageViewSampleWeightCreateInfoQCOM</a> structure, then <code>components</code> <strong class=\"purple\">must</strong> be <code>VK_COMPONENT_SWIZZLE_IDENTITY</code> for all components",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-pNext-06947",
          "text": "If the <code>pNext</code> chain includes <a href=\"#VkImageViewSampleWeightCreateInfoQCOM\">VkImageViewSampleWeightCreateInfoQCOM</a> structure, then <code>subresourceRange.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-pNext-06948",
          "text": "If the <code>pNext</code> chain includes <a href=\"#VkImageViewSampleWeightCreateInfoQCOM\">VkImageViewSampleWeightCreateInfoQCOM</a> structure, then <code>subresourceRange.levelCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-pNext-06949",
          "text": "If the <code>pNext</code> chain includes <a href=\"#VkImageViewSampleWeightCreateInfoQCOM\">VkImageViewSampleWeightCreateInfoQCOM</a> structure, then <code>viewType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-pNext-06950",
          "text": "If the <code>pNext</code> chain includes <a href=\"#VkImageViewSampleWeightCreateInfoQCOM\">VkImageViewSampleWeightCreateInfoQCOM</a> structure and if <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>imageType</code> <code>VK_IMAGE_TYPE_1D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-pNext-06951",
          "text": "If the <code>pNext</code> chain includes <a href=\"#VkImageViewSampleWeightCreateInfoQCOM\">VkImageViewSampleWeightCreateInfoQCOM</a> structure and <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, then <code>subresourceRange.layerCount</code> <strong class=\"purple\">must</strong> be equal to <code>2</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-pNext-06952",
          "text": "If the <code>pNext</code> chain includes <a href=\"#VkImageViewSampleWeightCreateInfoQCOM\">VkImageViewSampleWeightCreateInfoQCOM</a> structure and <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>width</code> equal to or greater than \\((numPhases \\times \\mathbin{max}\\left( \\mathbin{align}\\left(filterSize.width,4\\right), filterSize.height\\right))\\)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-pNext-06953",
          "text": "If the <code>pNext</code> chain includes <a href=\"#VkImageViewSampleWeightCreateInfoQCOM\">VkImageViewSampleWeightCreateInfoQCOM</a> structure and if <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>, then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>imageType</code> <code>VK_IMAGE_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-pNext-06954",
          "text": "If the <code>pNext</code> chain includes <a href=\"#VkImageViewSampleWeightCreateInfoQCOM\">VkImageViewSampleWeightCreateInfoQCOM</a> structure and <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>, then <code>subresourceRange.layerCount</code> <strong class=\"purple\">must</strong> be equal or greater than <span class=\"eq\">numPhases</span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-pNext-06955",
          "text": "If the <code>pNext</code> chain includes <a href=\"#VkImageViewSampleWeightCreateInfoQCOM\">VkImageViewSampleWeightCreateInfoQCOM</a> structure and <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>, then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>width</code> equal to or greater than <code>filterSize.width</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-pNext-06956",
          "text": "If the <code>pNext</code> chain includes <a href=\"#VkImageViewSampleWeightCreateInfoQCOM\">VkImageViewSampleWeightCreateInfoQCOM</a> structure and <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>, then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>height</code> equal to or greater than <code>filterSize.height</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-pNext-06957",
          "text": "If the <code>pNext</code> chain includes <a href=\"#VkImageViewSampleWeightCreateInfoQCOM\">VkImageViewSampleWeightCreateInfoQCOM</a> structure then <a href=\"#VkImageViewSampleWeightCreateInfoQCOM\">VkImageViewSampleWeightCreateInfoQCOM</a>::<code>filterSize.height</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-weightfilter-maxdimension\"><code>VkPhysicalDeviceImageProcessingPropertiesQCOM</code>::<code>maxWeightFilterDimension.height</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-09594",
          "text": "<code>subresourceRange.aspectMask</code> <strong class=\"purple\">must</strong> be valid for the <code>format</code> the <code>image</code> was created with",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-pNext-pNext",
          "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=\"#VkExportMetalObjectCreateInfoEXT\">VkExportMetalObjectCreateInfoEXT</a>, <a href=\"#VkImageViewASTCDecodeModeEXT\">VkImageViewASTCDecodeModeEXT</a>, <a href=\"#VkImageViewMinLodCreateInfoEXT\">VkImageViewMinLodCreateInfoEXT</a>, <a href=\"#VkImageViewSampleWeightCreateInfoQCOM\">VkImageViewSampleWeightCreateInfoQCOM</a>, <a href=\"#VkImageViewSlicedCreateInfoEXT\">VkImageViewSlicedCreateInfoEXT</a>, <a href=\"#VkImageViewUsageCreateInfo\">VkImageViewUsageCreateInfo</a>, <a href=\"#VkOpaqueCaptureDescriptorDataCreateInfoEXT\">VkOpaqueCaptureDescriptorDataCreateInfoEXT</a>, or <a href=\"#VkSamplerYcbcrConversionInfo\">VkSamplerYcbcrConversionInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique, with the exception of structures of type <a href=\"#VkExportMetalObjectCreateInfoEXT\">VkExportMetalObjectCreateInfoEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageViewCreateFlagBits\">VkImageViewCreateFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-image-parameter",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-viewType-parameter",
          "text": "<code>viewType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageViewType\">VkImageViewType</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-format-parameter",
          "text": "<code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-components-parameter",
          "text": "<code>components</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentMapping\">VkComponentMapping</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-parameter",
          "text": "<code>subresourceRange</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkImageViewUsageCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkImageViewUsageCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewUsageCreateInfo-usage-parameter",
          "text": "<code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewUsageCreateInfo-usage-requiredbitmask",
          "text": "<code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkImageViewSlicedCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkImageViewSlicedCreateInfoEXT-sliceOffset-07867",
          "text": "<code>sliceOffset</code> <strong class=\"purple\">must</strong> be less than the effective view depth as specified in <a href=\"#resources-image-mip-level-sizing\">Image Mip Level Sizing</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewSlicedCreateInfoEXT-sliceCount-07868",
          "text": "If <code>sliceCount</code> is not <code>VK_REMAINING_3D_SLICES_EXT</code>, it <strong class=\"purple\">must</strong> be non-zero and <span class=\"eq\"><code>sliceOffset</code> +  <code>sliceCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the effective view depth as specified in <a href=\"#resources-image-mip-level-sizing\">Image Mip Level Sizing</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewSlicedCreateInfoEXT-image-07869",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> have been created with <code>imageType</code> equal to <code>VK_IMAGE_TYPE_3D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewSlicedCreateInfoEXT-viewType-07909",
          "text": "<code>viewType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_VIEW_TYPE_3D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewSlicedCreateInfoEXT-None-07870",
          "text": "The image view <strong class=\"purple\">must</strong> reference exactly 1 mip level",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewSlicedCreateInfoEXT-None-07871",
          "text": "The <a href=\"#features-imageSlicedViewOf3D\">imageSlicedViewOf3D</a> feature <strong class=\"purple\">must</strong> be enabled on the device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewSlicedCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkImageSubresourceRange": {
      "core": [
        {
          "vuid": "VUID-VkImageSubresourceRange-levelCount-01720",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageSubresourceRange-layerCount-01721",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageSubresourceRange-aspectMask-01670",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageSubresourceRange-aspectMask-02278",
          "text": "<code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_MEMORY_PLANE<em>_i_</em>BIT_EXT</code> for any index <em>i</em>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageSubresourceRange-aspectMask-parameter",
          "text": "<code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageSubresourceRange-aspectMask-requiredbitmask",
          "text": "<code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkComponentMapping": {
      "core": [
        {
          "vuid": "VUID-VkComponentMapping-r-parameter",
          "text": "<code>r</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentSwizzle\">VkComponentSwizzle</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComponentMapping-g-parameter",
          "text": "<code>g</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentSwizzle\">VkComponentSwizzle</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComponentMapping-b-parameter",
          "text": "<code>b</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentSwizzle\">VkComponentSwizzle</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkComponentMapping-a-parameter",
          "text": "<code>a</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentSwizzle\">VkComponentSwizzle</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkImageViewASTCDecodeModeEXT": {
      "core": [
        {
          "vuid": "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02230",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02231",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02232",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewASTCDecodeModeEXT-format-04084",
          "text": "<code>format</code> of the image view <strong class=\"purple\">must</strong> be one of the <a href=\"#appendix-compressedtex-astc\">ASTC Compressed Image Formats</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewASTCDecodeModeEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-parameter",
          "text": "<code>decodeMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkImageViewSampleWeightCreateInfoQCOM": {
      "core": [
        {
          "vuid": "VUID-VkImageViewSampleWeightCreateInfoQCOM-filterSize-06958",
          "text": "<code>filterSize.width</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-weightfilter-maxdimension\"><code>VkPhysicalDeviceImageProcessingPropertiesQCOM</code>::<code>maxWeightFilterDimension.width</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewSampleWeightCreateInfoQCOM-filterSize-06959",
          "text": "<code>filterSize.height</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-weightfilter-maxdimension\"><code>VkPhysicalDeviceImageProcessingPropertiesQCOM</code>::<code>maxWeightFilterDimension.height</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewSampleWeightCreateInfoQCOM-filterCenter-06960",
          "text": "<code>filterCenter.x</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\">(filterSize.width - 1)</span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewSampleWeightCreateInfoQCOM-filterCenter-06961",
          "text": "<code>filterCenter.y</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\">(filterSize.height - 1)</span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewSampleWeightCreateInfoQCOM-numPhases-06962",
          "text": "<code>numPhases</code> <strong class=\"purple\">must</strong> be a power of two squared value (i.e., 1, 4, 16, 64, 256, etc.)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewSampleWeightCreateInfoQCOM-numPhases-06963",
          "text": "<code>numPhases</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-weightfilter-phases\"><code>VkPhysicalDeviceImageProcessingPropertiesQCOM</code>::<code>maxWeightFilterPhases</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewSampleWeightCreateInfoQCOM-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroyImageView": {
      "core": [
        {
          "vuid": "VUID-vkDestroyImageView-imageView-01026",
          "text": "All submitted commands that refer to <code>imageView</code> <strong class=\"purple\">must</strong> have completed execution",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyImageView-imageView-01027",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyImageView-imageView-01028",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyImageView-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyImageView-imageView-parameter",
          "text": "If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>imageView</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageView\">VkImageView</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyImageView-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyImageView-imageView-parent",
          "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>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetImageViewHandleNVX": {
      "core": [
        {
          "vuid": "VUID-vkGetImageViewHandleNVX-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageViewHandleNVX-pInfo-parameter",
          "text": "<code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImageViewHandleInfoNVX\">VkImageViewHandleInfoNVX</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkImageViewHandleInfoNVX": {
      "core": [
        {
          "vuid": "VUID-VkImageViewHandleInfoNVX-descriptorType-02654",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewHandleInfoNVX-sampler-02655",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewHandleInfoNVX-imageView-02656",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewHandleInfoNVX-imageView-02657",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewHandleInfoNVX-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewHandleInfoNVX-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewHandleInfoNVX-imageView-parameter",
          "text": "<code>imageView</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageView\">VkImageView</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewHandleInfoNVX-descriptorType-parameter",
          "text": "<code>descriptorType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewHandleInfoNVX-sampler-parameter",
          "text": "If <code>sampler</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>sampler</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampler\">VkSampler</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewHandleInfoNVX-commonparent",
          "text": "Both of <code>imageView</code>, and <code>sampler</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetImageViewAddressNVX": {
      "core": [
        {
          "vuid": "VUID-vkGetImageViewAddressNVX-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageViewAddressNVX-imageView-parameter",
          "text": "<code>imageView</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageView\">VkImageView</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageViewAddressNVX-pProperties-parameter",
          "text": "<code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkImageViewAddressPropertiesNVX\">VkImageViewAddressPropertiesNVX</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageViewAddressNVX-imageView-parent",
          "text": "<code>imageView</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkImageViewAddressPropertiesNVX": {
      "core": [
        {
          "vuid": "VUID-VkImageViewAddressPropertiesNVX-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewAddressPropertiesNVX-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkImageViewMinLodCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkImageViewMinLodCreateInfoEXT-minLod-06455",
          "text": "If the <a href=\"#features-minLod\"><code>minLod</code></a> feature is not enabled, <code>minLod</code> <strong class=\"purple\">must</strong> be <code>0.0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewMinLodCreateInfoEXT-minLod-06456",
          "text": "<code>minLod</code> <strong class=\"purple\">must</strong> be less or equal to the index of the last mipmap level accessible to the view",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewMinLodCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateAccelerationStructureNV": {
      "core": [
        {
          "vuid": "VUID-vkCreateAccelerationStructureNV-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateAccelerationStructureNV-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureCreateInfoNV\">VkAccelerationStructureCreateInfoNV</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateAccelerationStructureNV-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateAccelerationStructureNV-pAccelerationStructure-parameter",
          "text": "<code>pAccelerationStructure</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkAccelerationStructureNV\">VkAccelerationStructureNV</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkAccelerationStructureCreateInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkAccelerationStructureCreateInfoNV-compactedSize-02421",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureCreateInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureCreateInfoNV-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkOpaqueCaptureDescriptorDataCreateInfoEXT\">VkOpaqueCaptureDescriptorDataCreateInfoEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureCreateInfoNV-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureCreateInfoNV-info-parameter",
          "text": "<code>info</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkAccelerationStructureInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkAccelerationStructureInfoNV-geometryCount-02422",
          "text": "<code>geometryCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxGeometryCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureInfoNV-instanceCount-02423",
          "text": "<code>instanceCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxInstanceCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureInfoNV-maxTriangleCount-02424",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureInfoNV-type-02425",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureInfoNV-type-02426",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureInfoNV-type-02786",
          "text": "If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV</code> then the <code>geometryType</code> member of each geometry in <code>pGeometries</code> <strong class=\"purple\">must</strong> be the same",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureInfoNV-type-04623",
          "text": "<code>type</code> <strong class=\"purple\">must</strong> not be <code>VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureInfoNV-flags-02592",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureInfoNV-scratch-02781",
          "text": "<code>scratch</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_RAY_TRACING_BIT_NV</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureInfoNV-instanceData-02782",
          "text": "If <code>instanceData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>instanceData</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_RAY_TRACING_BIT_NV</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureInfoNV-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureInfoNV-type-parameter",
          "text": "<code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureTypeNV\">VkAccelerationStructureTypeNV</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureInfoNV-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBuildAccelerationStructureFlagBitsNV\">VkBuildAccelerationStructureFlagBitsNV</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureInfoNV-pGeometries-parameter",
          "text": "If <code>geometryCount</code> is not <code>0</code>, <code>pGeometries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>geometryCount</code> valid <a href=\"#VkGeometryNV\">VkGeometryNV</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateAccelerationStructureKHR": {
      "core": [
        {
          "vuid": "VUID-vkCreateAccelerationStructureKHR-accelerationStructure-03611",
          "text": "The <a href=\"#features-accelerationStructure\"><code>VkPhysicalDeviceAccelerationStructureFeaturesKHR</code>::<code>accelerationStructure</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateAccelerationStructureKHR-deviceAddress-03488",
          "text": "If <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>deviceAddress</code> is not zero, the <a href=\"#features-accelerationStructureCaptureReplay\"><code>accelerationStructureCaptureReplay</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateAccelerationStructureKHR-device-03489",
          "text": "If <code>device</code> was created with multiple physical devices, then the <a href=\"#features-bufferDeviceAddressMultiDevice\"><code>bufferDeviceAddressMultiDevice</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateAccelerationStructureKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateAccelerationStructureKHR-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateAccelerationStructureKHR-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateAccelerationStructureKHR-pAccelerationStructure-parameter",
          "text": "<code>pAccelerationStructure</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkAccelerationStructureCreateInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-deviceAddress-03612",
          "text": "If <code>deviceAddress</code> is not zero, <code>createFlags</code> <strong class=\"purple\">must</strong> include <code>VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-deviceAddress-09488",
          "text": "If <code>deviceAddress</code> is not zero, it <strong class=\"purple\">must</strong> have been retrieved from an identically created acceleration structure, except for <code>buffer</code> and <code>deviceAddress</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-deviceAddress-09489",
          "text": "If <code>deviceAddress</code> is not zero, <code>buffer</code> <strong class=\"purple\">must</strong> have been created identically to the <code>buffer</code> used to create the acceleration structure from which <code>deviceAddress</code> was retrieved, except for <a href=\"#VkBufferOpaqueCaptureAddressCreateInfo\">VkBufferOpaqueCaptureAddressCreateInfo</a>::<code>opaqueCaptureAddress</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-deviceAddress-09490",
          "text": "If <code>deviceAddress</code> is not zero, <code>buffer</code> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkBufferOpaqueCaptureAddressCreateInfo\">VkBufferOpaqueCaptureAddressCreateInfo</a>::<code>opaqueCaptureAddress</code> that was retrieved from <a href=\"#vkGetBufferOpaqueCaptureAddress\">vkGetBufferOpaqueCaptureAddress</a> for the <code>buffer</code> that was used to create the acceleration structure from which <code>deviceAddress</code> was retrieved",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-createFlags-03613",
          "text": "If <code>createFlags</code> includes <code>VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR</code>, <a href=\"#VkPhysicalDeviceAccelerationStructureFeaturesKHR\">VkPhysicalDeviceAccelerationStructureFeaturesKHR</a>::<code>accelerationStructureCaptureReplay</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-buffer-03614",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value containing <code>VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-buffer-03615",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> not have been created with <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-offset-03616",
          "text": "The sum of <code>offset</code> and <code>size</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-offset-03734",
          "text": "<code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>256</code> bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-createFlags-04954",
          "text": "If <code>VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV</code> is set in <code>createFlags</code> and <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR</code>, one member of the <code>pNext</code> chain <strong class=\"purple\">must</strong> be a pointer to a valid instance of <a href=\"#VkAccelerationStructureMotionInfoNV\">VkAccelerationStructureMotionInfoNV</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-createFlags-04955",
          "text": "If any geometry includes <code>VkAccelerationStructureGeometryMotionTrianglesDataNV</code> then <code>createFlags</code> <strong class=\"purple\">must</strong> contain <code>VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-createFlags-08108",
          "text": "If <code>createFlags</code> includes <code>VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT</code>, the <a href=\"#features-descriptorBufferCaptureReplay\"><code>descriptorBufferCaptureReplay</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-pNext-08109",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkOpaqueCaptureDescriptorDataCreateInfoEXT\">VkOpaqueCaptureDescriptorDataCreateInfoEXT</a> structure, <code>createFlags</code> <strong class=\"purple\">must</strong> contain <code>VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-pNext-pNext",
          "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=\"#VkAccelerationStructureMotionInfoNV\">VkAccelerationStructureMotionInfoNV</a> or <a href=\"#VkOpaqueCaptureDescriptorDataCreateInfoEXT\">VkOpaqueCaptureDescriptorDataCreateInfoEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-createFlags-parameter",
          "text": "<code>createFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccelerationStructureCreateFlagBitsKHR\">VkAccelerationStructureCreateFlagBitsKHR</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-buffer-parameter",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-type-parameter",
          "text": "<code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureTypeKHR\">VkAccelerationStructureTypeKHR</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkAccelerationStructureMotionInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkAccelerationStructureMotionInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureMotionInfoNV-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetAccelerationStructureBuildSizesKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetAccelerationStructureBuildSizesKHR-accelerationStructure-08933",
          "text": "The <a href=\"#features-accelerationStructure\"><code>VkPhysicalDeviceAccelerationStructureFeaturesKHR</code>::<code>accelerationStructure</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetAccelerationStructureBuildSizesKHR-device-03618",
          "text": "If <code>device</code> was created with multiple physical devices, then the <a href=\"#features-bufferDeviceAddressMultiDevice\"><code>bufferDeviceAddressMultiDevice</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetAccelerationStructureBuildSizesKHR-pBuildInfo-03619",
          "text": "If <code>pBuildInfo-&gt;geometryCount</code> is not <code>0</code>, <code>pMaxPrimitiveCounts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pBuildInfo-&gt;geometryCount</code> <code>uint32_t</code> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetAccelerationStructureBuildSizesKHR-pBuildInfo-03785",
          "text": "If <code>pBuildInfo-&gt;pGeometries</code> or <code>pBuildInfo-&gt;ppGeometries</code> has a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, each <code>pMaxPrimitiveCounts</code>[i] <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceAccelerationStructurePropertiesKHR\">VkPhysicalDeviceAccelerationStructurePropertiesKHR</a>::<code>maxInstanceCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetAccelerationStructureBuildSizesKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetAccelerationStructureBuildSizesKHR-buildType-parameter",
          "text": "<code>buildType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureBuildTypeKHR\">VkAccelerationStructureBuildTypeKHR</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetAccelerationStructureBuildSizesKHR-pBuildInfo-parameter",
          "text": "<code>pBuildInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetAccelerationStructureBuildSizesKHR-pMaxPrimitiveCounts-parameter",
          "text": "If <code>pMaxPrimitiveCounts</code> is not <code>NULL</code>, <code>pMaxPrimitiveCounts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pBuildInfo-&gt;geometryCount</code> <code>uint32_t</code> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetAccelerationStructureBuildSizesKHR-pSizeInfo-parameter",
          "text": "<code>pSizeInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkAccelerationStructureBuildSizesInfoKHR\">VkAccelerationStructureBuildSizesInfoKHR</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkAccelerationStructureBuildSizesInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkAccelerationStructureBuildSizesInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureBuildSizesInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkGeometryNV": {
      "core": [
        {
          "vuid": "VUID-VkGeometryNV-geometryType-03503",
          "text": "<code>geometryType</code> <strong class=\"purple\">must</strong> be <code>VK_GEOMETRY_TYPE_TRIANGLES_NV</code> or <code>VK_GEOMETRY_TYPE_AABBS_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeometryNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GEOMETRY_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeometryNV-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeometryNV-geometryType-parameter",
          "text": "<code>geometryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkGeometryTypeKHR\">VkGeometryTypeKHR</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeometryNV-geometry-parameter",
          "text": "<code>geometry</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkGeometryDataNV\">VkGeometryDataNV</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeometryNV-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkGeometryFlagBitsKHR\">VkGeometryFlagBitsKHR</a> values",
          "page": "vkspec"
        }
      ]
    },
    "VkGeometryDataNV": {
      "core": [
        {
          "vuid": "VUID-VkGeometryDataNV-triangles-parameter",
          "text": "<code>triangles</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkGeometryTrianglesNV\">VkGeometryTrianglesNV</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeometryDataNV-aabbs-parameter",
          "text": "<code>aabbs</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkGeometryAABBNV\">VkGeometryAABBNV</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkGeometryTrianglesNV": {
      "core": [
        {
          "vuid": "VUID-VkGeometryTrianglesNV-vertexOffset-02428",
          "text": "<code>vertexOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>vertexData</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeometryTrianglesNV-vertexOffset-02429",
          "text": "<code>vertexOffset</code> <strong class=\"purple\">must</strong> be a multiple of the component size of <code>vertexFormat</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeometryTrianglesNV-vertexFormat-02430",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeometryTrianglesNV-vertexStride-03818",
          "text": "<code>vertexStride</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\">2<sup>32</sup>-1</span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeometryTrianglesNV-indexOffset-02431",
          "text": "<code>indexOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>indexData</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeometryTrianglesNV-indexOffset-02432",
          "text": "<code>indexOffset</code> <strong class=\"purple\">must</strong> be a multiple of the element size of <code>indexType</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeometryTrianglesNV-indexType-02433",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeometryTrianglesNV-indexData-02434",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeometryTrianglesNV-indexData-02435",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeometryTrianglesNV-indexCount-02436",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeometryTrianglesNV-transformOffset-02437",
          "text": "<code>transformOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>transformData</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeometryTrianglesNV-transformOffset-02438",
          "text": "<code>transformOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>16</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeometryTrianglesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeometryTrianglesNV-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeometryTrianglesNV-vertexData-parameter",
          "text": "If <code>vertexData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>vertexData</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeometryTrianglesNV-vertexFormat-parameter",
          "text": "<code>vertexFormat</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeometryTrianglesNV-indexData-parameter",
          "text": "If <code>indexData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>indexData</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeometryTrianglesNV-indexType-parameter",
          "text": "<code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeometryTrianglesNV-transformData-parameter",
          "text": "If <code>transformData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>transformData</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeometryTrianglesNV-commonparent",
          "text": "Each of <code>indexData</code>, <code>transformData</code>, and <code>vertexData</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkGeometryAABBNV": {
      "core": [
        {
          "vuid": "VUID-VkGeometryAABBNV-offset-02439",
          "text": "<code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>aabbData</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeometryAABBNV-offset-02440",
          "text": "<code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>8</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeometryAABBNV-stride-02441",
          "text": "<code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>8</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeometryAABBNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeometryAABBNV-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeometryAABBNV-aabbData-parameter",
          "text": "If <code>aabbData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>aabbData</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroyAccelerationStructureKHR": {
      "core": [
        {
          "vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-08934",
          "text": "The <a href=\"#features-accelerationStructure\"><code>VkPhysicalDeviceAccelerationStructureFeaturesKHR</code>::<code>accelerationStructure</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02442",
          "text": "All submitted commands that refer to <code>accelerationStructure</code> <strong class=\"purple\">must</strong> have completed execution",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02443",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02444",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyAccelerationStructureKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-parameter",
          "text": "If <code>accelerationStructure</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyAccelerationStructureKHR-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-parent",
          "text": "If <code>accelerationStructure</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroyAccelerationStructureNV": {
      "core": [
        {
          "vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-03752",
          "text": "All submitted commands that refer to <code>accelerationStructure</code> <strong class=\"purple\">must</strong> have completed execution",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-03753",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-03754",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyAccelerationStructureNV-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-parameter",
          "text": "If <code>accelerationStructure</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureNV\">VkAccelerationStructureNV</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyAccelerationStructureNV-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-parent",
          "text": "If <code>accelerationStructure</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetAccelerationStructureMemoryRequirementsNV": {
      "core": [
        {
          "vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsNV-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsNV-pInfo-parameter",
          "text": "<code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureMemoryRequirementsInfoNV\">VkAccelerationStructureMemoryRequirementsInfoNV</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsNV-pMemoryRequirements-parameter",
          "text": "<code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements2KHR\">VkMemoryRequirements2KHR</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkAccelerationStructureMemoryRequirementsInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-type-parameter",
          "text": "<code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureMemoryRequirementsTypeNV\">VkAccelerationStructureMemoryRequirementsTypeNV</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-accelerationStructure-parameter",
          "text": "<code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureNV\">VkAccelerationStructureNV</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "vkBindAccelerationStructureMemoryNV": {
      "core": [
        {
          "vuid": "VUID-vkBindAccelerationStructureMemoryNV-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindAccelerationStructureMemoryNV-pBindInfos-parameter",
          "text": "<code>pBindInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindInfoCount</code> valid <a href=\"#VkBindAccelerationStructureMemoryInfoNV\">VkBindAccelerationStructureMemoryInfoNV</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindAccelerationStructureMemoryNV-bindInfoCount-arraylength",
          "text": "<code>bindInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkBindAccelerationStructureMemoryInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-accelerationStructure-03620",
          "text": "<code>accelerationStructure</code> <strong class=\"purple\">must</strong> not already be backed by a memory object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-memoryOffset-03621",
          "text": "<code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-memory-03622",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-memoryOffset-03623",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-size-03624",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-accelerationStructure-parameter",
          "text": "<code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureNV\">VkAccelerationStructureNV</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-memory-parameter",
          "text": "<code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-pDeviceIndices-parameter",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-commonparent",
          "text": "Both of <code>accelerationStructure</code>, and <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetAccelerationStructureHandleNV": {
      "core": [
        {
          "vuid": "VUID-vkGetAccelerationStructureHandleNV-dataSize-02240",
          "text": "<code>dataSize</code> <strong class=\"purple\">must</strong> be large enough to contain the result of the query, as described above",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-02787",
          "text": "<code>accelerationStructure</code> <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object via <a href=\"#vkBindAccelerationStructureMemoryNV\">vkBindAccelerationStructureMemoryNV</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetAccelerationStructureHandleNV-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-parameter",
          "text": "<code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureNV\">VkAccelerationStructureNV</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetAccelerationStructureHandleNV-pData-parameter",
          "text": "<code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetAccelerationStructureHandleNV-dataSize-arraylength",
          "text": "<code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-parent",
          "text": "<code>accelerationStructure</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetAccelerationStructureDeviceAddressKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetAccelerationStructureDeviceAddressKHR-accelerationStructure-08935",
          "text": "The <a href=\"#features-accelerationStructure\"><code>VkPhysicalDeviceAccelerationStructureFeaturesKHR</code>::<code>accelerationStructure</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetAccelerationStructureDeviceAddressKHR-device-03504",
          "text": "If <code>device</code> was created with multiple physical devices, then the <a href=\"#features-bufferDeviceAddressMultiDevice\"><code>bufferDeviceAddressMultiDevice</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetAccelerationStructureDeviceAddressKHR-pInfo-09541",
          "text": "If the buffer on which <code>pInfo-&gt;accelerationStructure</code> was placed is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetAccelerationStructureDeviceAddressKHR-pInfo-09542",
          "text": "The buffer on which <code>pInfo-&gt;accelerationStructure</code> was placed <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetAccelerationStructureDeviceAddressKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetAccelerationStructureDeviceAddressKHR-pInfo-parameter",
          "text": "<code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureDeviceAddressInfoKHR\">VkAccelerationStructureDeviceAddressInfoKHR</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkAccelerationStructureDeviceAddressInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkAccelerationStructureDeviceAddressInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureDeviceAddressInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureDeviceAddressInfoKHR-accelerationStructure-parameter",
          "text": "<code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateMicromapEXT": {
      "core": [
        {
          "vuid": "VUID-vkCreateMicromapEXT-micromap-07430",
          "text": "The <a href=\"#features-micromap\"><code>micromap</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateMicromapEXT-deviceAddress-07431",
          "text": "If <a href=\"#VkMicromapCreateInfoEXT\">VkMicromapCreateInfoEXT</a>::<code>deviceAddress</code> is not zero, the <a href=\"#features-micromapCaptureReplay\"><code>micromapCaptureReplay</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateMicromapEXT-device-07432",
          "text": "If <code>device</code> was created with multiple physical devices, then the <a href=\"#features-bufferDeviceAddressMultiDevice\"><code>bufferDeviceAddressMultiDevice</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateMicromapEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateMicromapEXT-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMicromapCreateInfoEXT\">VkMicromapCreateInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateMicromapEXT-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateMicromapEXT-pMicromap-parameter",
          "text": "<code>pMicromap</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMicromapEXT\">VkMicromapEXT</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkMicromapCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkMicromapCreateInfoEXT-deviceAddress-07433",
          "text": "If <code>deviceAddress</code> is not zero, <code>createFlags</code> <strong class=\"purple\">must</strong> include <code>VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMicromapCreateInfoEXT-createFlags-07434",
          "text": "If <code>createFlags</code> includes <code>VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT</code>, <a href=\"#VkPhysicalDeviceOpacityMicromapFeaturesEXT\">VkPhysicalDeviceOpacityMicromapFeaturesEXT</a>::<code>micromapCaptureReplay</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMicromapCreateInfoEXT-buffer-07435",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value containing <code>VK_BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMicromapCreateInfoEXT-buffer-07436",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> not have been created with <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMicromapCreateInfoEXT-offset-07437",
          "text": "The sum of <code>offset</code> and <code>size</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMicromapCreateInfoEXT-offset-07438",
          "text": "<code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>256</code> bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMicromapCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMicromapCreateInfoEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMicromapCreateInfoEXT-createFlags-parameter",
          "text": "<code>createFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkMicromapCreateFlagBitsEXT\">VkMicromapCreateFlagBitsEXT</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMicromapCreateInfoEXT-buffer-parameter",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMicromapCreateInfoEXT-type-parameter",
          "text": "<code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkMicromapTypeEXT\">VkMicromapTypeEXT</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkGetMicromapBuildSizesEXT": {
      "core": [
        {
          "vuid": "VUID-vkGetMicromapBuildSizesEXT-dstMicromap-09180",
          "text": "<a href=\"#VkMicromapBuildInfoEXT\">VkMicromapBuildInfoEXT</a>::<code>dstMicromap</code> <strong class=\"purple\">must</strong> have been created from <code>device</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMicromapBuildSizesEXT-micromap-07439",
          "text": "The <a href=\"#features-micromap\"><code>micromap</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMicromapBuildSizesEXT-device-07440",
          "text": "If <code>device</code> was created with multiple physical devices, then the <a href=\"#features-bufferDeviceAddressMultiDevice\"><code>bufferDeviceAddressMultiDevice</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMicromapBuildSizesEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMicromapBuildSizesEXT-buildType-parameter",
          "text": "<code>buildType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureBuildTypeKHR\">VkAccelerationStructureBuildTypeKHR</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMicromapBuildSizesEXT-pBuildInfo-parameter",
          "text": "<code>pBuildInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMicromapBuildInfoEXT\">VkMicromapBuildInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetMicromapBuildSizesEXT-pSizeInfo-parameter",
          "text": "<code>pSizeInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMicromapBuildSizesInfoEXT\">VkMicromapBuildSizesInfoEXT</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkMicromapBuildSizesInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkMicromapBuildSizesInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMicromapBuildSizesInfoEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroyMicromapEXT": {
      "core": [
        {
          "vuid": "VUID-vkDestroyMicromapEXT-micromap-07441",
          "text": "All submitted commands that refer to <code>micromap</code> <strong class=\"purple\">must</strong> have completed execution",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyMicromapEXT-micromap-07442",
          "text": "If <code>VkAllocationCallbacks</code> were provided when <code>micromap</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyMicromapEXT-micromap-07443",
          "text": "If no <code>VkAllocationCallbacks</code> were provided when <code>micromap</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyMicromapEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyMicromapEXT-micromap-parameter",
          "text": "If <code>micromap</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>micromap</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkMicromapEXT\">VkMicromapEXT</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyMicromapEXT-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyMicromapEXT-micromap-parent",
          "text": "If <code>micromap</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetBufferMemoryRequirements": {
      "core": [
        {
          "vuid": "VUID-vkGetBufferMemoryRequirements-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetBufferMemoryRequirements-buffer-parameter",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetBufferMemoryRequirements-pMemoryRequirements-parameter",
          "text": "<code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetBufferMemoryRequirements-buffer-parent",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetImageMemoryRequirements": {
      "core": [
        {
          "vuid": "VUID-vkGetImageMemoryRequirements-image-01588",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> not have been created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> flag set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageMemoryRequirements-image-04004",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageMemoryRequirements-image-08960",
          "text": "If <code>image</code> was created with the <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX</code> external memory handle type, then <code>image</code> <strong class=\"purple\">must</strong> be bound to memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageMemoryRequirements-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageMemoryRequirements-image-parameter",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageMemoryRequirements-pMemoryRequirements-parameter",
          "text": "<code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageMemoryRequirements-image-parent",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetBufferMemoryRequirements2": {
      "core": [
        {
          "vuid": "VUID-vkGetBufferMemoryRequirements2-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetBufferMemoryRequirements2-pInfo-parameter",
          "text": "<code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkBufferMemoryRequirementsInfo2\">VkBufferMemoryRequirementsInfo2</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetBufferMemoryRequirements2-pMemoryRequirements-parameter",
          "text": "<code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements2\">VkMemoryRequirements2</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "vkGetDeviceBufferMemoryRequirements": {
      "core": [
        {
          "vuid": "VUID-vkGetDeviceBufferMemoryRequirements-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceBufferMemoryRequirements-pInfo-parameter",
          "text": "<code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDeviceBufferMemoryRequirements\">VkDeviceBufferMemoryRequirements</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceBufferMemoryRequirements-pMemoryRequirements-parameter",
          "text": "<code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements2\">VkMemoryRequirements2</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkBufferMemoryRequirementsInfo2": {
      "core": [
        {
          "vuid": "VUID-VkBufferMemoryRequirementsInfo2-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryRequirementsInfo2-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferMemoryRequirementsInfo2-buffer-parameter",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkDeviceBufferMemoryRequirements": {
      "core": [
        {
          "vuid": "VUID-VkDeviceBufferMemoryRequirements-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceBufferMemoryRequirements-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceBufferMemoryRequirements-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkBufferCreateInfo\">VkBufferCreateInfo</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "vkGetImageMemoryRequirements2": {
      "core": [
        {
          "vuid": "VUID-vkGetImageMemoryRequirements2-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageMemoryRequirements2-pInfo-parameter",
          "text": "<code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageMemoryRequirements2-pMemoryRequirements-parameter",
          "text": "<code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements2\">VkMemoryRequirements2</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "vkGetDeviceImageMemoryRequirements": {
      "core": [
        {
          "vuid": "VUID-vkGetDeviceImageMemoryRequirements-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceImageMemoryRequirements-pInfo-parameter",
          "text": "<code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDeviceImageMemoryRequirements\">VkDeviceImageMemoryRequirements</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceImageMemoryRequirements-pMemoryRequirements-parameter",
          "text": "<code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements2\">VkMemoryRequirements2</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkImageMemoryRequirementsInfo2": {
      "core": [
        {
          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01589",
          "text": "If <code>image</code> was created with a <em>multi-planar</em> format and the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> flag, there <strong class=\"purple\">must</strong> be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> included in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-02279",
          "text": "If <code>image</code> was created with <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> and with <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>, then there <strong class=\"purple\">must</strong> be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> included in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01590",
          "text": "If <code>image</code> was not created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> flag, there <strong class=\"purple\">must</strong> not be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> included in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-02280",
          "text": "If <code>image</code> was created with a single-plane format and with any <code>tiling</code> other than <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>, then there <strong class=\"purple\">must</strong> not be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> included in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01897",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-08961",
          "text": "If <code>image</code> was created with the <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX</code> external memory handle type, then <code>image</code> <strong class=\"purple\">must</strong> be bound to memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryRequirementsInfo2-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryRequirementsInfo2-pNext-pNext",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryRequirementsInfo2-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-parameter",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkDeviceImageMemoryRequirements": {
      "core": [
        {
          "vuid": "VUID-VkDeviceImageMemoryRequirements-pCreateInfo-06416",
          "text": "The <code>pCreateInfo-&gt;pNext</code> chain <strong class=\"purple\">must</strong> not contain a <a href=\"#VkImageSwapchainCreateInfoKHR\">VkImageSwapchainCreateInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceImageMemoryRequirements-pCreateInfo-06776",
          "text": "The <code>pCreateInfo-&gt;pNext</code> chain <strong class=\"purple\">must</strong> not contain a <a href=\"#VkImageDrmFormatModifierExplicitCreateInfoEXT\">VkImageDrmFormatModifierExplicitCreateInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceImageMemoryRequirements-pNext-06996",
          "text": "Applications also <strong class=\"purple\">must</strong> not call <a href=\"#vkGetDeviceImageMemoryRequirements\">vkGetDeviceImageMemoryRequirements</a> with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> whose <code>pNext</code> chain includes a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a> structure with non-zero <code>externalFormat</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceImageMemoryRequirements-pNext-08962",
          "text": "Applications also <strong class=\"purple\">must</strong> not call <a href=\"#vkGetDeviceImageMemoryRequirements\">vkGetDeviceImageMemoryRequirements</a> with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> whose <code>pNext</code> chain includes a <a href=\"#VkExternalFormatQNX\">VkExternalFormatQNX</a> structure with non-zero <code>externalFormat</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceImageMemoryRequirements-pCreateInfo-06417",
          "text": "If <code>pCreateInfo-&gt;format</code> specifies a <em>multi-planar</em> format and <code>pCreateInfo-&gt;flags</code> has <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> set then <code>planeAspect</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_ASPECT_NONE_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceImageMemoryRequirements-pCreateInfo-06419",
          "text": "If <code>pCreateInfo-&gt;flags</code> has <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> set and if the <code>pCreateInfo-&gt;tiling</code> is <code>VK_IMAGE_TILING_LINEAR</code> or <code>VK_IMAGE_TILING_OPTIMAL</code>, then <code>planeAspect</code> <strong class=\"purple\">must</strong> be a single valid <a href=\"#formats-planes-image-aspect\">multi-planar aspect mask</a> bit",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceImageMemoryRequirements-pCreateInfo-06420",
          "text": "If <code>pCreateInfo-&gt;tiling</code> is <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>, then <code>planeAspect</code> <strong class=\"purple\">must</strong> be a single valid <em>memory plane</em> for the image (that is, <code>aspectMask</code> <strong class=\"purple\">must</strong> specify a plane index that is less than the <a href=\"#VkDrmFormatModifierPropertiesEXT\">VkDrmFormatModifierPropertiesEXT</a>::<code>drmFormatModifierPlaneCount</code> associated with the image&#8217;s <code>format</code> and <a href=\"#VkImageDrmFormatModifierPropertiesEXT\">VkImageDrmFormatModifierPropertiesEXT</a>::<code>drmFormatModifier</code>)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceImageMemoryRequirements-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceImageMemoryRequirements-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceImageMemoryRequirements-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceImageMemoryRequirements-planeAspect-parameter",
          "text": "If <code>planeAspect</code> is not <code>0</code>, <code>planeAspect</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkImagePlaneMemoryRequirementsInfo": {
      "core": [
        {
          "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-02281",
          "text": "If the image&#8217;s <code>tiling</code> is <code>VK_IMAGE_TILING_LINEAR</code> or <code>VK_IMAGE_TILING_OPTIMAL</code>, then <code>planeAspect</code> <strong class=\"purple\">must</strong> be a single valid <a href=\"#formats-planes-image-aspect\">multi-planar aspect mask</a> bit",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-02282",
          "text": "If the image&#8217;s <code>tiling</code> is <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>, then <code>planeAspect</code> <strong class=\"purple\">must</strong> be a single valid <em>memory plane</em> for the image (that is, <code>aspectMask</code> <strong class=\"purple\">must</strong> specify a plane index that is less than the <a href=\"#VkDrmFormatModifierPropertiesEXT\">VkDrmFormatModifierPropertiesEXT</a>::<code>drmFormatModifierPlaneCount</code> associated with the image&#8217;s <code>format</code> and <a href=\"#VkImageDrmFormatModifierPropertiesEXT\">VkImageDrmFormatModifierPropertiesEXT</a>::<code>drmFormatModifier</code>)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-parameter",
          "text": "<code>planeAspect</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkMemoryRequirements2": {
      "core": [
        {
          "vuid": "VUID-VkMemoryRequirements2-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryRequirements2-pNext-pNext",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryRequirements2-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        }
      ]
    },
    "VkMemoryDedicatedRequirements": {
      "core": [
        {
          "vuid": "VUID-VkMemoryDedicatedRequirements-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkBindBufferMemory": {
      "core": [
        {
          "vuid": "VUID-vkBindBufferMemory-buffer-07459",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> not have been bound to a memory object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindBufferMemory-buffer-01030",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindBufferMemory-memoryOffset-01031",
          "text": "<code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindBufferMemory-memory-01035",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindBufferMemory-memoryOffset-01036",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindBufferMemory-size-01037",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindBufferMemory-buffer-01444",
          "text": "If <code>buffer</code> requires a dedicated allocation (as reported by <a href=\"#vkGetBufferMemoryRequirements2\">vkGetBufferMemoryRequirements2</a> in <a href=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>::<code>requiresDedicatedAllocation</code> for <code>buffer</code>), <code>memory</code> <strong class=\"purple\">must</strong> have been allocated with <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> equal to <code>buffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindBufferMemory-memory-01508",
          "text": "If the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>buffer</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code>, and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindBufferMemory-None-01898",
          "text": "If <code>buffer</code> 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindBufferMemory-None-01899",
          "text": "If <code>buffer</code> 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 allocated with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindBufferMemory-buffer-01038",
          "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 allocated 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindBufferMemory-apiVersion-07920",
          "text": "If     the <a href=\"#VK_KHR_dedicated_allocation\">VK_KHR_dedicated_allocation</a> extension is not enabled,     <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan     1.1, and     <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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindBufferMemory-memory-02726",
          "text": "If the value of <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> used to allocate <code>memory</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> include at least one of the handles set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindBufferMemory-memory-02985",
          "text": "If <code>memory</code> was allocated by a memory import operation, that is not <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a> with a non-<code>NULL</code> <code>buffer</code> value, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindBufferMemory-memory-02986",
          "text": "If <code>memory</code> was allocated with the <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a> memory import operation with a non-<code>NULL</code> <code>buffer</code> value, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindBufferMemory-bufferDeviceAddress-03339",
          "text": "If the <a href=\"#VkPhysicalDeviceBufferDeviceAddressFeatures\">VkPhysicalDeviceBufferDeviceAddressFeatures</a>::<code>bufferDeviceAddress</code> feature is enabled and <code>buffer</code> was created with the <code>VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT</code> bit set, <code>memory</code> <strong class=\"purple\">must</strong> have been allocated with the <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindBufferMemory-bufferDeviceAddressCaptureReplay-09200",
          "text": "If the <a href=\"#VkPhysicalDeviceBufferDeviceAddressFeatures\">VkPhysicalDeviceBufferDeviceAddressFeatures</a>::<code>bufferDeviceAddressCaptureReplay</code> feature is enabled and <code>buffer</code> was created with the <code>VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT</code> bit set, <code>memory</code> <strong class=\"purple\">must</strong> have been allocated with the <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindBufferMemory-buffer-06408",
          "text": "If <code>buffer</code> was created with <a href=\"#VkBufferCollectionBufferCreateInfoFUCHSIA\">VkBufferCollectionBufferCreateInfoFUCHSIA</a> chained to <a href=\"#VkBufferCreateInfo\">VkBufferCreateInfo</a>::<code>pNext</code>, <code>memory</code> <strong class=\"purple\">must</strong> be allocated with a <a href=\"#VkImportMemoryBufferCollectionFUCHSIA\">VkImportMemoryBufferCollectionFUCHSIA</a> chained to <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a>::<code>pNext</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindBufferMemory-descriptorBufferCaptureReplay-08112",
          "text": "If the <code>buffer</code> was created with the <code>VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT</code> bit set, <code>memory</code> <strong class=\"purple\">must</strong> have been allocated with the <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindBufferMemory-buffer-09201",
          "text": "If the <code>buffer</code> was created with the <code>VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT</code> bit set, <code>memory</code> <strong class=\"purple\">must</strong> have been allocated with the <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindBufferMemory-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindBufferMemory-buffer-parameter",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindBufferMemory-memory-parameter",
          "text": "<code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindBufferMemory-buffer-parent",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindBufferMemory-memory-parent",
          "text": "<code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkBindBufferMemory2": {
      "core": [
        {
          "vuid": "VUID-vkBindBufferMemory2-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindBufferMemory2-pBindInfos-parameter",
          "text": "<code>pBindInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindInfoCount</code> valid <a href=\"#VkBindBufferMemoryInfo\">VkBindBufferMemoryInfo</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindBufferMemory2-bindInfoCount-arraylength",
          "text": "<code>bindInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkBindBufferMemoryInfo": {
      "core": [
        {
          "vuid": "VUID-VkBindBufferMemoryInfo-buffer-07459",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> not have been bound to a memory object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01030",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindBufferMemoryInfo-memoryOffset-01031",
          "text": "<code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindBufferMemoryInfo-memory-01035",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindBufferMemoryInfo-memoryOffset-01036",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindBufferMemoryInfo-size-01037",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01444",
          "text": "If <code>buffer</code> requires a dedicated allocation (as reported by <a href=\"#vkGetBufferMemoryRequirements2\">vkGetBufferMemoryRequirements2</a> in <a href=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>::<code>requiresDedicatedAllocation</code> for <code>buffer</code>), <code>memory</code> <strong class=\"purple\">must</strong> have been allocated with <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> equal to <code>buffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindBufferMemoryInfo-memory-01508",
          "text": "If the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>buffer</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code>, and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindBufferMemoryInfo-None-01898",
          "text": "If <code>buffer</code> 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindBufferMemoryInfo-None-01899",
          "text": "If <code>buffer</code> 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 allocated with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01038",
          "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 allocated 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindBufferMemoryInfo-apiVersion-07920",
          "text": "If     the <a href=\"#VK_KHR_dedicated_allocation\">VK_KHR_dedicated_allocation</a> extension is not enabled,     <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan     1.1, and     <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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindBufferMemoryInfo-memory-02726",
          "text": "If the value of <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> used to allocate <code>memory</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> include at least one of the handles set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindBufferMemoryInfo-memory-02985",
          "text": "If <code>memory</code> was allocated by a memory import operation, that is not <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a> with a non-<code>NULL</code> <code>buffer</code> value, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindBufferMemoryInfo-memory-02986",
          "text": "If <code>memory</code> was allocated with the <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a> memory import operation with a non-<code>NULL</code> <code>buffer</code> value, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindBufferMemoryInfo-bufferDeviceAddress-03339",
          "text": "If the <a href=\"#VkPhysicalDeviceBufferDeviceAddressFeatures\">VkPhysicalDeviceBufferDeviceAddressFeatures</a>::<code>bufferDeviceAddress</code> feature is enabled and <code>buffer</code> was created with the <code>VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT</code> bit set, <code>memory</code> <strong class=\"purple\">must</strong> have been allocated with the <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindBufferMemoryInfo-bufferDeviceAddressCaptureReplay-09200",
          "text": "If the <a href=\"#VkPhysicalDeviceBufferDeviceAddressFeatures\">VkPhysicalDeviceBufferDeviceAddressFeatures</a>::<code>bufferDeviceAddressCaptureReplay</code> feature is enabled and <code>buffer</code> was created with the <code>VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT</code> bit set, <code>memory</code> <strong class=\"purple\">must</strong> have been allocated with the <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindBufferMemoryInfo-buffer-06408",
          "text": "If <code>buffer</code> was created with <a href=\"#VkBufferCollectionBufferCreateInfoFUCHSIA\">VkBufferCollectionBufferCreateInfoFUCHSIA</a> chained to <a href=\"#VkBufferCreateInfo\">VkBufferCreateInfo</a>::<code>pNext</code>, <code>memory</code> <strong class=\"purple\">must</strong> be allocated with a <a href=\"#VkImportMemoryBufferCollectionFUCHSIA\">VkImportMemoryBufferCollectionFUCHSIA</a> chained to <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a>::<code>pNext</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindBufferMemoryInfo-descriptorBufferCaptureReplay-08112",
          "text": "If the <code>buffer</code> was created with the <code>VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT</code> bit set, <code>memory</code> <strong class=\"purple\">must</strong> have been allocated with the <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindBufferMemoryInfo-buffer-09201",
          "text": "If the <code>buffer</code> was created with the <code>VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT</code> bit set, <code>memory</code> <strong class=\"purple\">must</strong> have been allocated with the <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindBufferMemoryInfo-pNext-01605",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkBindBufferMemoryDeviceGroupInfo\">VkBindBufferMemoryDeviceGroupInfo</a> structure, all instances of <code>memory</code> specified by <a href=\"#VkBindBufferMemoryDeviceGroupInfo\">VkBindBufferMemoryDeviceGroupInfo</a>::<code>pDeviceIndices</code> <strong class=\"purple\">must</strong> have been allocated",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindBufferMemoryInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindBufferMemoryInfo-pNext-pNext",
          "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=\"#VkBindBufferMemoryDeviceGroupInfo\">VkBindBufferMemoryDeviceGroupInfo</a> or <a href=\"#VkBindMemoryStatusKHR\">VkBindMemoryStatusKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindBufferMemoryInfo-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindBufferMemoryInfo-buffer-parameter",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindBufferMemoryInfo-memory-parameter",
          "text": "<code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindBufferMemoryInfo-commonparent",
          "text": "Both of <code>buffer</code>, and <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkBindBufferMemoryDeviceGroupInfo": {
      "core": [
        {
          "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-deviceIndexCount-01606",
          "text": "<code>deviceIndexCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-pDeviceIndices-01607",
          "text": "All elements of <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be valid device indices",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-pDeviceIndices-parameter",
          "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",
          "page": "vkspec"
        }
      ]
    },
    "VkBindMemoryStatusKHR": {
      "core": [
        {
          "vuid": "VUID-VkBindMemoryStatusKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindMemoryStatusKHR-pResult-parameter",
          "text": "<code>pResult</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkResult\">VkResult</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkBindImageMemory": {
      "core": [
        {
          "vuid": "VUID-vkBindImageMemory-image-07460",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> not have been bound to a memory object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindImageMemory-image-01045",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindImageMemory-memoryOffset-01046",
          "text": "<code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindImageMemory-image-01445",
          "text": "If <code>image</code> requires a dedicated allocation (as reported by <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> in <a href=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>::<code>requiresDedicatedAllocation</code> 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindImageMemory-memory-02628",
          "text": "If the <a href=\"#features-dedicatedAllocationImageAliasing\"><code>dedicatedAllocationImageAliasing</code></a> feature is not enabled, and the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>image</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindImageMemory-memory-02629",
          "text": "If the <a href=\"#features-dedicatedAllocationImageAliasing\"><code>dedicatedAllocationImageAliasing</code></a> feature is enabled, and the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero, and <code>image</code> <strong class=\"purple\">must</strong> be either equal to <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> or an image that was created using the same parameters in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>, with the exception that <code>extent</code> and <code>arrayLayers</code> <strong class=\"purple\">may</strong> differ subject to the following restrictions: every dimension in the <code>extent</code> parameter of the image being bound <strong class=\"purple\">must</strong> be equal to or smaller than the original image for which the allocation was created; and the <code>arrayLayers</code> parameter of the image being bound <strong class=\"purple\">must</strong> be equal to or smaller than the original image for which the allocation was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindImageMemory-None-01901",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindImageMemory-None-01902",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindImageMemory-image-01050",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindImageMemory-apiVersion-07921",
          "text": "If     the <a href=\"#VK_KHR_dedicated_allocation\">VK_KHR_dedicated_allocation</a> extension is not enabled,     <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan     1.1, and     <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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindImageMemory-memory-02728",
          "text": "If the value of <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> used to allocate <code>memory</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> include at least one of the handles set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindImageMemory-memory-02989",
          "text": "If <code>memory</code> was created by a memory import operation, that is not <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a> with a non-<code>NULL</code> <code>buffer</code> value, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindImageMemory-memory-02990",
          "text": "If <code>memory</code> was created with the <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a> memory import operation with a non-<code>NULL</code> <code>buffer</code> value, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindImageMemory-descriptorBufferCaptureReplay-08113",
          "text": "If the <code>image</code> was created with the <code>VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT</code> bit set, <code>memory</code> <strong class=\"purple\">must</strong> have been allocated with the <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindImageMemory-image-09202",
          "text": "If the <code>image</code> was created with the <code>VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT</code> bit set, <code>memory</code> <strong class=\"purple\">must</strong> have been allocated with the <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindImageMemory-image-01608",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> not have been created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindImageMemory-memory-01047",
          "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 <a href=\"#vkGetImageMemoryRequirements\">vkGetImageMemoryRequirements</a> with <code>image</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindImageMemory-memoryOffset-01048",
          "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 <a href=\"#vkGetImageMemoryRequirements\">vkGetImageMemoryRequirements</a> with <code>image</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindImageMemory-size-01049",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindImageMemory-image-06392",
          "text": "If <code>image</code> was created with <a href=\"#VkBufferCollectionImageCreateInfoFUCHSIA\">VkBufferCollectionImageCreateInfoFUCHSIA</a> chained to <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>pNext</code>, <code>memory</code> <strong class=\"purple\">must</strong> be allocated with a <a href=\"#VkImportMemoryBufferCollectionFUCHSIA\">VkImportMemoryBufferCollectionFUCHSIA</a> chained to <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a>::<code>pNext</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindImageMemory-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindImageMemory-image-parameter",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindImageMemory-memory-parameter",
          "text": "<code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindImageMemory-image-parent",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindImageMemory-memory-parent",
          "text": "<code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkBindImageMemory2": {
      "core": [
        {
          "vuid": "VUID-vkBindImageMemory2-pBindInfos-02858",
          "text": "If any <a href=\"#VkBindImageMemoryInfo\">VkBindImageMemoryInfo</a>::<code>image</code> was created with <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> then all planes of <a href=\"#VkBindImageMemoryInfo\">VkBindImageMemoryInfo</a>::<code>image</code> <strong class=\"purple\">must</strong> be bound individually in separate <code>pBindInfos</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindImageMemory2-pBindInfos-04006",
          "text": "<code>pBindInfos</code> <strong class=\"purple\">must</strong> not refer to the same image subresource more than once",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindImageMemory2-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindImageMemory2-pBindInfos-parameter",
          "text": "<code>pBindInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindInfoCount</code> valid <a href=\"#VkBindImageMemoryInfo\">VkBindImageMemoryInfo</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindImageMemory2-bindInfoCount-arraylength",
          "text": "<code>bindInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkBindImageMemoryInfo": {
      "core": [
        {
          "vuid": "VUID-VkBindImageMemoryInfo-image-07460",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> not have been bound to a memory object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryInfo-image-01045",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryInfo-memoryOffset-01046",
          "text": "<code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryInfo-image-01445",
          "text": "If <code>image</code> requires a dedicated allocation (as reported by <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> in <a href=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>::<code>requiresDedicatedAllocation</code> 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryInfo-memory-02628",
          "text": "If the <a href=\"#features-dedicatedAllocationImageAliasing\"><code>dedicatedAllocationImageAliasing</code></a> feature is not enabled, and the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>image</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryInfo-memory-02629",
          "text": "If the <a href=\"#features-dedicatedAllocationImageAliasing\"><code>dedicatedAllocationImageAliasing</code></a> feature is enabled, and the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero, and <code>image</code> <strong class=\"purple\">must</strong> be either equal to <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> or an image that was created using the same parameters in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>, with the exception that <code>extent</code> and <code>arrayLayers</code> <strong class=\"purple\">may</strong> differ subject to the following restrictions: every dimension in the <code>extent</code> parameter of the image being bound <strong class=\"purple\">must</strong> be equal to or smaller than the original image for which the allocation was created; and the <code>arrayLayers</code> parameter of the image being bound <strong class=\"purple\">must</strong> be equal to or smaller than the original image for which the allocation was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryInfo-None-01901",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryInfo-None-01902",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryInfo-image-01050",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryInfo-apiVersion-07921",
          "text": "If     the <a href=\"#VK_KHR_dedicated_allocation\">VK_KHR_dedicated_allocation</a> extension is not enabled,     <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan     1.1, and     <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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryInfo-memory-02728",
          "text": "If the value of <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> used to allocate <code>memory</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> include at least one of the handles set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryInfo-memory-02989",
          "text": "If <code>memory</code> was created by a memory import operation, that is not <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a> with a non-<code>NULL</code> <code>buffer</code> value, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryInfo-memory-02990",
          "text": "If <code>memory</code> was created with the <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a> memory import operation with a non-<code>NULL</code> <code>buffer</code> value, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryInfo-descriptorBufferCaptureReplay-08113",
          "text": "If the <code>image</code> was created with the <code>VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT</code> bit set, <code>memory</code> <strong class=\"purple\">must</strong> have been allocated with the <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryInfo-image-09202",
          "text": "If the <code>image</code> was created with the <code>VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT</code> bit set, <code>memory</code> <strong class=\"purple\">must</strong> have been allocated with the <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01615",
          "text": "If the <code>pNext</code> chain does not include a <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with <code>image</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01616",
          "text": "If the <code>pNext</code> chain does not include a <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with <code>image</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01617",
          "text": "If the <code>pNext</code> chain does not include a <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, the difference of the size of <code>memory</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with the same <code>image</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01618",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>image</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryInfo-image-07736",
          "text": "If <code>image</code> was created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> bit set, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01619",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with <code>image</code> and where <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a>::<code>planeAspect</code> corresponds to the <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a>::<code>planeAspect</code> in the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure&#8217;s <code>pNext</code> chain",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01620",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with <code>image</code> and where <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a>::<code>planeAspect</code> corresponds to the <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a>::<code>planeAspect</code> in the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure&#8217;s <code>pNext</code> chain",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01621",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, the difference of the size of <code>memory</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with the same <code>image</code> and where <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a>::<code>planeAspect</code> corresponds to the <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a>::<code>planeAspect</code> in the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure&#8217;s <code>pNext</code> chain",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01626",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a> structure, all instances of <code>memory</code> specified by <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>::<code>pDeviceIndices</code> <strong class=\"purple\">must</strong> have been allocated",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01627",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a> structure, and <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>::<code>splitInstanceBindRegionCount</code> is not zero, then <code>image</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01628",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a> structure, all elements of <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>::<code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> be valid rectangles contained within the dimensions of <code>image</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01629",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a> structure, the union of the areas of all elements of <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>::<code>pSplitInstanceBindRegions</code> that correspond to the same instance of <code>image</code> <strong class=\"purple\">must</strong> cover the entire image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryInfo-image-01630",
          "text": "If <code>image</code> was created with a valid swapchain handle in <a href=\"#VkImageSwapchainCreateInfoKHR\">VkImageSwapchainCreateInfoKHR</a>::<code>swapchain</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkBindImageMemorySwapchainInfoKHR\">VkBindImageMemorySwapchainInfoKHR</a> structure containing the same swapchain handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01631",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkBindImageMemorySwapchainInfoKHR\">VkBindImageMemorySwapchainInfoKHR</a> structure, <code>memory</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01632",
          "text": "If the <code>pNext</code> chain does not include a <a href=\"#VkBindImageMemorySwapchainInfoKHR\">VkBindImageMemorySwapchainInfoKHR</a> structure, <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryInfo-pNext-pNext",
          "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>, <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a>, or <a href=\"#VkBindMemoryStatusKHR\">VkBindMemoryStatusKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryInfo-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryInfo-image-parameter",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryInfo-commonparent",
          "text": "Both of <code>image</code>, and <code>memory</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkBindImageMemoryDeviceGroupInfo": {
      "core": [
        {
          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-deviceIndexCount-01633",
          "text": "At least one of <code>deviceIndexCount</code> and <code>splitInstanceBindRegionCount</code> <strong class=\"purple\">must</strong> be zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-deviceIndexCount-01634",
          "text": "<code>deviceIndexCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pDeviceIndices-01635",
          "text": "All elements of <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be valid device indices",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-splitInstanceBindRegionCount-01636",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pSplitInstanceBindRegions-01637",
          "text": "Elements of <code>pSplitInstanceBindRegions</code> that correspond to the same instance of an image <strong class=\"purple\">must</strong> not overlap",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-offset-01638",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-offset-01639",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-extent-01640",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-extent-01641",
          "text": "The <code>extent.height</code> member of any element of <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> either be a multiple of the sparse image block height of all non-metadata aspects of the image, or else <code>extent.height</code> +  <code>offset.y</code> <strong class=\"purple\">must</strong> equal the height of the image subresource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pDeviceIndices-parameter",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pSplitInstanceBindRegions-parameter",
          "text": "If <code>splitInstanceBindRegionCount</code> is not <code>0</code>, <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>splitInstanceBindRegionCount</code> <a href=\"#VkRect2D\">VkRect2D</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkBindImageMemorySwapchainInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkBindImageMemorySwapchainInfoKHR-imageIndex-01644",
          "text": "<code>imageIndex</code> <strong class=\"purple\">must</strong> be less than the number of images in <code>swapchain</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemorySwapchainInfoKHR-swapchain-07756",
          "text": "If the <code>swapchain</code> has been created with <code>VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT</code>, <code>imageIndex</code> <strong class=\"purple\">must</strong> be one that has previously been returned by <a href=\"#vkAcquireNextImageKHR\">vkAcquireNextImageKHR</a> or <a href=\"#vkAcquireNextImage2KHR\">vkAcquireNextImage2KHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemorySwapchainInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImageMemorySwapchainInfoKHR-swapchain-parameter",
          "text": "<code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkBindImagePlaneMemoryInfo": {
      "core": [
        {
          "vuid": "VUID-VkBindImagePlaneMemoryInfo-planeAspect-02283",
          "text": "If the image&#8217;s <code>tiling</code> is <code>VK_IMAGE_TILING_LINEAR</code> or <code>VK_IMAGE_TILING_OPTIMAL</code>, then <code>planeAspect</code> <strong class=\"purple\">must</strong> be a single valid <a href=\"#formats-planes-image-aspect\">multi-planar aspect mask</a> bit",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImagePlaneMemoryInfo-planeAspect-02284",
          "text": "If the image&#8217;s <code>tiling</code> is <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>, then <code>planeAspect</code> <strong class=\"purple\">must</strong> be a single valid <em>memory plane</em> for the image (that is, <code>aspectMask</code> <strong class=\"purple\">must</strong> specify a plane index that is less than the <a href=\"#VkDrmFormatModifierPropertiesEXT\">VkDrmFormatModifierPropertiesEXT</a>::<code>drmFormatModifierPlaneCount</code> associated with the image&#8217;s <code>format</code> and <a href=\"#VkImageDrmFormatModifierPropertiesEXT\">VkImageDrmFormatModifierPropertiesEXT</a>::<code>drmFormatModifier</code>)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImagePlaneMemoryInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindImagePlaneMemoryInfo-planeAspect-parameter",
          "text": "<code>planeAspect</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateBufferCollectionFUCHSIA": {
      "core": [
        {
          "vuid": "VUID-vkCreateBufferCollectionFUCHSIA-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateBufferCollectionFUCHSIA-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkBufferCollectionCreateInfoFUCHSIA\">VkBufferCollectionCreateInfoFUCHSIA</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateBufferCollectionFUCHSIA-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateBufferCollectionFUCHSIA-pCollection-parameter",
          "text": "<code>pCollection</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkBufferCollectionFUCHSIA\">VkBufferCollectionFUCHSIA</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkBufferCollectionCreateInfoFUCHSIA": {
      "core": [
        {
          "vuid": "VUID-VkBufferCollectionCreateInfoFUCHSIA-collectionToken-06393",
          "text": "<code>collectionToken</code> <strong class=\"purple\">must</strong> be a valid <code>zx_handle_t</code> to a Zircon channel allocated from Sysmem (<code>fuchsia.sysmem.Allocator</code>/AllocateSharedCollection) with <code>ZX_DEFAULT_CHANNEL_RIGHTS</code> rights",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCollectionCreateInfoFUCHSIA-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCollectionCreateInfoFUCHSIA-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkSetBufferCollectionImageConstraintsFUCHSIA": {
      "core": [
        {
          "vuid": "VUID-vkSetBufferCollectionImageConstraintsFUCHSIA-collection-06394",
          "text": "<code>vkSetBufferCollectionImageConstraintsFUCHSIA</code> or <code>vkSetBufferCollectionBufferConstraintsFUCHSIA</code> <strong class=\"purple\">must</strong> not have already been called on <code>collection</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetBufferCollectionImageConstraintsFUCHSIA-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetBufferCollectionImageConstraintsFUCHSIA-collection-parameter",
          "text": "<code>collection</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBufferCollectionFUCHSIA\">VkBufferCollectionFUCHSIA</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetBufferCollectionImageConstraintsFUCHSIA-pImageConstraintsInfo-parameter",
          "text": "<code>pImageConstraintsInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImageConstraintsInfoFUCHSIA\">VkImageConstraintsInfoFUCHSIA</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetBufferCollectionImageConstraintsFUCHSIA-collection-parent",
          "text": "<code>collection</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkImageConstraintsInfoFUCHSIA": {
      "core": [
        {
          "vuid": "VUID-VkImageConstraintsInfoFUCHSIA-pFormatConstraints-06395",
          "text": "All elements of <code>pFormatConstraints</code> <strong class=\"purple\">must</strong> have at least one bit set in its <a href=\"#VkImageFormatConstraintsInfoFUCHSIA\">VkImageFormatConstraintsInfoFUCHSIA</a>::<code>requiredFormatFeatures</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageConstraintsInfoFUCHSIA-pFormatConstraints-06396",
          "text": "If <code>pFormatConstraints-&gt;imageCreateInfo-&gt;usage</code> contains <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, then <code>pFormatConstraints-&gt;requiredFormatFeatures</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageConstraintsInfoFUCHSIA-pFormatConstraints-06397",
          "text": "If <code>pFormatConstraints-&gt;imageCreateInfo-&gt;usage</code> contains <code>VK_IMAGE_USAGE_STORAGE_BIT</code>, then <code>pFormatConstraints-&gt;requiredFormatFeatures</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageConstraintsInfoFUCHSIA-pFormatConstraints-06398",
          "text": "If <code>pFormatConstraints-&gt;imageCreateInfo-&gt;usage</code> contains <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, then <code>pFormatConstraints-&gt;requiredFormatFeatures</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageConstraintsInfoFUCHSIA-pFormatConstraints-06399",
          "text": "If <code>pFormatConstraints-&gt;imageCreateInfo-&gt;usage</code> contains <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, then <code>pFormatConstraints-&gt;requiredFormatFeatures</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageConstraintsInfoFUCHSIA-pFormatConstraints-06400",
          "text": "If <code>pFormatConstraints-&gt;imageCreateInfo-&gt;usage</code> contains <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, then <code>pFormatConstraints-&gt;requiredFormatFeatures</code> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageConstraintsInfoFUCHSIA-attachmentFragmentShadingRate-06401",
          "text": "If the <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> feature is enabled, and <code>pFormatConstraints-&gt;imageCreateInfo-&gt;usage</code> contains <code>VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>, then <code>pFormatConstraints-&gt;requiredFormatFeatures</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageConstraintsInfoFUCHSIA-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageConstraintsInfoFUCHSIA-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageConstraintsInfoFUCHSIA-pFormatConstraints-parameter",
          "text": "<code>pFormatConstraints</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>formatConstraintsCount</code> valid <a href=\"#VkImageFormatConstraintsInfoFUCHSIA\">VkImageFormatConstraintsInfoFUCHSIA</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageConstraintsInfoFUCHSIA-bufferCollectionConstraints-parameter",
          "text": "<code>bufferCollectionConstraints</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBufferCollectionConstraintsInfoFUCHSIA\">VkBufferCollectionConstraintsInfoFUCHSIA</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageConstraintsInfoFUCHSIA-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageConstraintsInfoFlagBitsFUCHSIA\">VkImageConstraintsInfoFlagBitsFUCHSIA</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageConstraintsInfoFUCHSIA-formatConstraintsCount-arraylength",
          "text": "<code>formatConstraintsCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkImageFormatConstraintsInfoFUCHSIA": {
      "core": [
        {
          "vuid": "VUID-VkImageFormatConstraintsInfoFUCHSIA-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageFormatConstraintsInfoFUCHSIA-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageFormatConstraintsInfoFUCHSIA-imageCreateInfo-parameter",
          "text": "<code>imageCreateInfo</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageFormatConstraintsInfoFUCHSIA-requiredFormatFeatures-parameter",
          "text": "<code>requiredFormatFeatures</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkFormatFeatureFlagBits\">VkFormatFeatureFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageFormatConstraintsInfoFUCHSIA-requiredFormatFeatures-requiredbitmask",
          "text": "<code>requiredFormatFeatures</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageFormatConstraintsInfoFUCHSIA-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageFormatConstraintsInfoFUCHSIA-pColorSpaces-parameter",
          "text": "<code>pColorSpaces</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>colorSpaceCount</code> valid <a href=\"#VkSysmemColorSpaceFUCHSIA\">VkSysmemColorSpaceFUCHSIA</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageFormatConstraintsInfoFUCHSIA-colorSpaceCount-arraylength",
          "text": "<code>colorSpaceCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkBufferCollectionConstraintsInfoFUCHSIA": {
      "core": [
        {
          "vuid": "VUID-VkBufferCollectionConstraintsInfoFUCHSIA-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCollectionConstraintsInfoFUCHSIA-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkSysmemColorSpaceFUCHSIA": {
      "core": [
        {
          "vuid": "VUID-VkSysmemColorSpaceFUCHSIA-colorSpace-06402",
          "text": "<code>colorSpace</code> <strong class=\"purple\">must</strong> be a <code>ColorSpaceType</code> as defined in <code>fuchsia.sysmem/image_formats.fidl</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSysmemColorSpaceFUCHSIA-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSysmemColorSpaceFUCHSIA-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkSetBufferCollectionBufferConstraintsFUCHSIA": {
      "core": [
        {
          "vuid": "VUID-vkSetBufferCollectionBufferConstraintsFUCHSIA-collection-06403",
          "text": "<code>vkSetBufferCollectionImageConstraintsFUCHSIA</code> or <code>vkSetBufferCollectionBufferConstraintsFUCHSIA</code> <strong class=\"purple\">must</strong> not have already been called on <code>collection</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetBufferCollectionBufferConstraintsFUCHSIA-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetBufferCollectionBufferConstraintsFUCHSIA-collection-parameter",
          "text": "<code>collection</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBufferCollectionFUCHSIA\">VkBufferCollectionFUCHSIA</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetBufferCollectionBufferConstraintsFUCHSIA-pBufferConstraintsInfo-parameter",
          "text": "<code>pBufferConstraintsInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkBufferConstraintsInfoFUCHSIA\">VkBufferConstraintsInfoFUCHSIA</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetBufferCollectionBufferConstraintsFUCHSIA-collection-parent",
          "text": "<code>collection</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkBufferConstraintsInfoFUCHSIA": {
      "core": [
        {
          "vuid": "VUID-VkBufferConstraintsInfoFUCHSIA-requiredFormatFeatures-06404",
          "text": "The <code>requiredFormatFeatures</code> bitmask of <code>VkFormatFeatureFlagBits</code> <strong class=\"purple\">must</strong> be chosen from among the buffer compatible format features listed in <a href=\"#buffer-compatible-format-features\">buffer compatible format features</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferConstraintsInfoFUCHSIA-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIA</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferConstraintsInfoFUCHSIA-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferConstraintsInfoFUCHSIA-createInfo-parameter",
          "text": "<code>createInfo</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBufferCreateInfo\">VkBufferCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferConstraintsInfoFUCHSIA-requiredFormatFeatures-parameter",
          "text": "<code>requiredFormatFeatures</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkFormatFeatureFlagBits\">VkFormatFeatureFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferConstraintsInfoFUCHSIA-bufferCollectionConstraints-parameter",
          "text": "<code>bufferCollectionConstraints</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBufferCollectionConstraintsInfoFUCHSIA\">VkBufferCollectionConstraintsInfoFUCHSIA</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "vkGetBufferCollectionPropertiesFUCHSIA": {
      "core": [
        {
          "vuid": "VUID-vkGetBufferCollectionPropertiesFUCHSIA-None-06405",
          "text": "Prior to calling <a href=\"#vkGetBufferCollectionPropertiesFUCHSIA\">vkGetBufferCollectionPropertiesFUCHSIA</a>, the constraints on the buffer collection <strong class=\"purple\">must</strong> have been set by either <a href=\"#vkSetBufferCollectionImageConstraintsFUCHSIA\">vkSetBufferCollectionImageConstraintsFUCHSIA</a> or <a href=\"#vkSetBufferCollectionBufferConstraintsFUCHSIA\">vkSetBufferCollectionBufferConstraintsFUCHSIA</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetBufferCollectionPropertiesFUCHSIA-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetBufferCollectionPropertiesFUCHSIA-collection-parameter",
          "text": "<code>collection</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBufferCollectionFUCHSIA\">VkBufferCollectionFUCHSIA</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetBufferCollectionPropertiesFUCHSIA-pProperties-parameter",
          "text": "<code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkBufferCollectionPropertiesFUCHSIA\">VkBufferCollectionPropertiesFUCHSIA</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetBufferCollectionPropertiesFUCHSIA-collection-parent",
          "text": "<code>collection</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkBufferCollectionPropertiesFUCHSIA": {
      "core": [
        {
          "vuid": "VUID-VkBufferCollectionPropertiesFUCHSIA-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCollectionPropertiesFUCHSIA-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkImportMemoryBufferCollectionFUCHSIA": {
      "core": [
        {
          "vuid": "VUID-VkImportMemoryBufferCollectionFUCHSIA-index-06406",
          "text": "<code>index</code> <strong class=\"purple\">must</strong> be less than the value retrieved as <a href=\"#VkBufferCollectionPropertiesFUCHSIA\">VkBufferCollectionPropertiesFUCHSIA</a>:bufferCount",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportMemoryBufferCollectionFUCHSIA-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImportMemoryBufferCollectionFUCHSIA-collection-parameter",
          "text": "<code>collection</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBufferCollectionFUCHSIA\">VkBufferCollectionFUCHSIA</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroyBufferCollectionFUCHSIA": {
      "core": [
        {
          "vuid": "VUID-vkDestroyBufferCollectionFUCHSIA-collection-06407",
          "text": "<a href=\"#VkImage\">VkImage</a> and <a href=\"#VkBuffer\">VkBuffer</a> objects that referenced <code>collection</code> upon creation by inclusion of a <a href=\"#VkBufferCollectionImageCreateInfoFUCHSIA\">VkBufferCollectionImageCreateInfoFUCHSIA</a> or <a href=\"#VkBufferCollectionBufferCreateInfoFUCHSIA\">VkBufferCollectionBufferCreateInfoFUCHSIA</a> chained to their <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> or <a href=\"#VkBufferCreateInfo\">VkBufferCreateInfo</a> structures respectively, <strong class=\"purple\">may</strong> outlive <code>collection</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyBufferCollectionFUCHSIA-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyBufferCollectionFUCHSIA-collection-parameter",
          "text": "<code>collection</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBufferCollectionFUCHSIA\">VkBufferCollectionFUCHSIA</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyBufferCollectionFUCHSIA-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyBufferCollectionFUCHSIA-collection-parent",
          "text": "<code>collection</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateSampler": {
      "core": [
        {
          "vuid": "VUID-vkCreateSampler-device-09668",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> support at least one queue family with one of the <code>VK_QUEUE_COMPUTE_BIT</code> or <code>VK_QUEUE_GRAPHICS_BIT</code> capabilities",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateSampler-maxSamplerAllocationCount-04110",
          "text": "There <strong class=\"purple\">must</strong> be less than <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxSamplerAllocationCount</code> <a href=\"#VkSampler\">VkSampler</a> objects currently created on the device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateSampler-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateSampler-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSamplerCreateInfo\">VkSamplerCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateSampler-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateSampler-pSampler-parameter",
          "text": "<code>pSampler</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSampler\">VkSampler</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkSamplerCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkSamplerCreateInfo-mipLodBias-01069",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-samplerMipLodBias-04467",
          "text": "If the <code><a href=\"#VK_KHR_portability_subset\">VK_KHR_portability_subset</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>samplerMipLodBias</code> is <code>VK_FALSE</code>, <code>mipLodBias</code> <strong class=\"purple\">must</strong> be zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-maxLod-01973",
          "text": "<code>maxLod</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>minLod</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-anisotropyEnable-01070",
          "text": "If the <a href=\"#features-samplerAnisotropy\"><code>samplerAnisotropy</code></a> feature is not enabled, <code>anisotropyEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-anisotropyEnable-01071",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-minFilter-01645",
          "text": "If <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a> is enabled and the <a href=\"#potential-format-features\">potential format features</a> of the sampler Y′C<sub>B</sub>C<sub>R</sub> conversion do not support <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT</code>, <code>minFilter</code> and <code>magFilter</code> <strong class=\"purple\">must</strong> be equal to the sampler Y′C<sub>B</sub>C<sub>R</sub> conversion&#8217;s <code>chromaFilter</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01072",
          "text": "If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>minFilter</code> and <code>magFilter</code> <strong class=\"purple\">must</strong> be equal",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01073",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01074",
          "text": "If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>minLod</code> and <code>maxLod</code> <strong class=\"purple\">must</strong> be zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01075",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01076",
          "text": "If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>anisotropyEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01077",
          "text": "If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>compareEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-addressModeU-01078",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-addressModeU-01646",
          "text": "If <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a> is enabled, <code>addressModeU</code>, <code>addressModeV</code>, and <code>addressModeW</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>, <code>anisotropyEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>, and <code>unnormalizedCoordinates</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-None-01647",
          "text": "If <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a> is enabled and the <code>pNext</code> chain includes a <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a> structure, then the sampler reduction mode <strong class=\"purple\">must</strong> be set to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-pNext-06726",
          "text": "If <a href=\"#features-samplerFilterMinmax\"><code>samplerFilterMinmax</code></a> is not enabled and the <code>pNext</code> chain includes a <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a> structure, then the sampler reduction mode <strong class=\"purple\">must</strong> be set to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-addressModeU-01079",
          "text": "If <a href=\"#features-samplerMirrorClampToEdge\"><code>samplerMirrorClampToEdge</code></a> is not enabled, and if the <code><a href=\"#VK_KHR_sampler_mirror_clamp_to_edge\">VK_KHR_sampler_mirror_clamp_to_edge</a></code> extension is not enabled, <code>addressModeU</code>, <code>addressModeV</code> and <code>addressModeW</code> <strong class=\"purple\">must</strong> not be <code>VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-compareEnable-01080",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-magFilter-01081",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-magFilter-07911",
          "text": "If the <a href=\"#VK_EXT_filter_cubic\">VK_EXT_filter_cubic</a> extension is not enabled and either <code>magFilter</code> or <code>minFilter</code> is <code>VK_FILTER_CUBIC_IMG</code>, the <code>reductionMode</code> member of <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a> <strong class=\"purple\">must</strong> be <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-compareEnable-01423",
          "text": "If <code>compareEnable</code> is <code>VK_TRUE</code>, the <code>reductionMode</code> member of <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a> <strong class=\"purple\">must</strong> be <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-flags-02574",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-flags-02575",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-flags-02576",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-flags-02577",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-flags-02578",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-flags-02579",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-flags-02580",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-nonSeamlessCubeMap-06788",
          "text": "If the <a href=\"#features-nonSeamlessCubeMap\"><code>nonSeamlessCubeMap</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_SAMPLER_CREATE_NON_SEAMLESS_CUBE_MAP_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-borderColor-04011",
          "text": "If <code>borderColor</code> is one of <code>VK_BORDER_COLOR_FLOAT_CUSTOM_EXT</code> or <code>VK_BORDER_COLOR_INT_CUSTOM_EXT</code>, then a <a href=\"#VkSamplerCustomBorderColorCreateInfoEXT\">VkSamplerCustomBorderColorCreateInfoEXT</a> <strong class=\"purple\">must</strong> be included in the <code>pNext</code> chain",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-customBorderColors-04085",
          "text": "If the <a href=\"#features-customBorderColors\"><code>customBorderColors</code></a> feature is not enabled, <code>borderColor</code> <strong class=\"purple\">must</strong> not be <code>VK_BORDER_COLOR_FLOAT_CUSTOM_EXT</code> or <code>VK_BORDER_COLOR_INT_CUSTOM_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-borderColor-04442",
          "text": "If <code>borderColor</code> is one of <code>VK_BORDER_COLOR_FLOAT_CUSTOM_EXT</code> or <code>VK_BORDER_COLOR_INT_CUSTOM_EXT</code>, and <a href=\"#VkSamplerCustomBorderColorCreateInfoEXT\">VkSamplerCustomBorderColorCreateInfoEXT</a>::<code>format</code> is not <code>VK_FORMAT_UNDEFINED</code>, <a href=\"#VkSamplerCustomBorderColorCreateInfoEXT\">VkSamplerCustomBorderColorCreateInfoEXT</a>::<code>customBorderColor</code> <strong class=\"purple\">must</strong> be within the range of values representable in <code>format</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-None-04012",
          "text": "The maximum number of samplers with custom border colors which <strong class=\"purple\">can</strong> be simultaneously created on a device is implementation-dependent and specified by the <a href=\"#limits-maxCustomBorderColorSamplers\"><code>maxCustomBorderColorSamplers</code></a> member of the <a href=\"#VkPhysicalDeviceCustomBorderColorPropertiesEXT\">VkPhysicalDeviceCustomBorderColorPropertiesEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-flags-08110",
          "text": "If <code>flags</code> includes <code>VK_SAMPLER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT</code>, the <a href=\"#features-descriptorBufferCaptureReplay\"><code>descriptorBufferCaptureReplay</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-pNext-08111",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkOpaqueCaptureDescriptorDataCreateInfoEXT\">VkOpaqueCaptureDescriptorDataCreateInfoEXT</a> structure, <code>flags</code> <strong class=\"purple\">must</strong> contain <code>VK_SAMPLER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-flags-06964",
          "text": "If <code>flags</code> includes <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>, then <code>minFilter</code> and <code>magFilter</code> <strong class=\"purple\">must</strong> be <code>VK_FILTER_NEAREST</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-flags-06965",
          "text": "If <code>flags</code> includes <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>, then <code>mipmapMode</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLER_MIPMAP_MODE_NEAREST</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-flags-06966",
          "text": "[If <code>flags</code> includes <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>, then <code>minLod</code> and <code>maxLod</code> <strong class=\"purple\">must</strong> be zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-flags-06967",
          "text": "If <code>flags</code> includes <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-flags-06968",
          "text": "If <code>flags</code> includes <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>, and if <code>addressModeU</code> or <code>addressModeV</code> is <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER</code>, then <code>borderColor</code> <strong class=\"purple\">must</strong> be <code>VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-flags-06969",
          "text": "If <code>flags</code> includes <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>, then <code>anisotropyEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-flags-06970",
          "text": "If <code>flags</code> includes <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>, then <code>compareEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-pNext-pNext",
          "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=\"#VkOpaqueCaptureDescriptorDataCreateInfoEXT\">VkOpaqueCaptureDescriptorDataCreateInfoEXT</a>, <a href=\"#VkSamplerBlockMatchWindowCreateInfoQCOM\">VkSamplerBlockMatchWindowCreateInfoQCOM</a>, <a href=\"#VkSamplerBorderColorComponentMappingCreateInfoEXT\">VkSamplerBorderColorComponentMappingCreateInfoEXT</a>, <a href=\"#VkSamplerCubicWeightsCreateInfoQCOM\">VkSamplerCubicWeightsCreateInfoQCOM</a>, <a href=\"#VkSamplerCustomBorderColorCreateInfoEXT\">VkSamplerCustomBorderColorCreateInfoEXT</a>, <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>, or <a href=\"#VkSamplerYcbcrConversionInfo\">VkSamplerYcbcrConversionInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSamplerCreateFlagBits\">VkSamplerCreateFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-magFilter-parameter",
          "text": "<code>magFilter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFilter\">VkFilter</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-minFilter-parameter",
          "text": "<code>minFilter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFilter\">VkFilter</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-mipmapMode-parameter",
          "text": "<code>mipmapMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerMipmapMode\">VkSamplerMipmapMode</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-addressModeU-parameter",
          "text": "<code>addressModeU</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-addressModeV-parameter",
          "text": "<code>addressModeV</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCreateInfo-addressModeW-parameter",
          "text": "<code>addressModeW</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkSamplerReductionModeCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkSamplerReductionModeCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerReductionModeCreateInfo-reductionMode-parameter",
          "text": "<code>reductionMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerReductionMode\">VkSamplerReductionMode</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkSamplerCubicWeightsCreateInfoQCOM": {
      "core": [
        {
          "vuid": "VUID-VkSamplerCubicWeightsCreateInfoQCOM-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCubicWeightsCreateInfoQCOM-cubicWeights-parameter",
          "text": "<code>cubicWeights</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCubicFilterWeightsQCOM\">VkCubicFilterWeightsQCOM</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroySampler": {
      "core": [
        {
          "vuid": "VUID-vkDestroySampler-sampler-01082",
          "text": "All submitted commands that refer to <code>sampler</code> <strong class=\"purple\">must</strong> have completed execution",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroySampler-sampler-01083",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroySampler-sampler-01084",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroySampler-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroySampler-sampler-parameter",
          "text": "If <code>sampler</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>sampler</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampler\">VkSampler</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroySampler-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroySampler-sampler-parent",
          "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>",
          "page": "vkspec"
        }
      ]
    },
    "VkSamplerYcbcrConversionInfo": {
      "core": [
        {
          "vuid": "VUID-VkSamplerYcbcrConversionInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerYcbcrConversionInfo-conversion-parameter",
          "text": "<code>conversion</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerYcbcrConversion\">VkSamplerYcbcrConversion</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateSamplerYcbcrConversion": {
      "core": [
        {
          "vuid": "VUID-vkCreateSamplerYcbcrConversion-None-01648",
          "text": "The <a href=\"#features-samplerYcbcrConversion\"><code>samplerYcbcrConversion</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateSamplerYcbcrConversion-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateSamplerYcbcrConversion-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSamplerYcbcrConversionCreateInfo\">VkSamplerYcbcrConversionCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateSamplerYcbcrConversion-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateSamplerYcbcrConversion-pYcbcrConversion-parameter",
          "text": "<code>pYcbcrConversion</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSamplerYcbcrConversion\">VkSamplerYcbcrConversion</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkSamplerYcbcrConversionCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-01904",
          "text": "If an external format conversion is being created, <code>format</code> <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-04061",
          "text": "If an external format conversion is not being created, <code>format</code> <strong class=\"purple\">must</strong> represent unsigned normalized values (i.e. the format <strong class=\"purple\">must</strong> be a <code>UNORM</code> format)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-01650",
          "text": "The <a href=\"#potential-format-features\">potential format features</a> of the sampler Y′C<sub>B</sub>C<sub>R</sub> conversion <strong class=\"purple\">must</strong> support <code>VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT</code> or <code>VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-01651",
          "text": "If the <a href=\"#potential-format-features\">potential format features</a> of the sampler Y′C<sub>B</sub>C<sub>R</sub> conversion do not support <code>VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT</code>, <code>xChromaOffset</code> and <code>yChromaOffset</code> <strong class=\"purple\">must</strong> not be <code>VK_CHROMA_LOCATION_COSITED_EVEN</code> if the corresponding components are <a href=\"#textures-chroma-reconstruction\">downsampled</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-01652",
          "text": "If the <a href=\"#potential-format-features\">potential format features</a> of the sampler Y′C<sub>B</sub>C<sub>R</sub> conversion do not support <code>VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT</code>, <code>xChromaOffset</code> and <code>yChromaOffset</code> <strong class=\"purple\">must</strong> not be <code>VK_CHROMA_LOCATION_MIDPOINT</code> if the corresponding components are <a href=\"#textures-chroma-reconstruction\">downsampled</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02581",
          "text": "If the format has a <code>_422</code> or <code>_420</code> suffix, then <code>components.g</code> <strong class=\"purple\">must</strong> be the <a href=\"#resources-image-views-identity-mappings\">identity swizzle</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02582",
          "text": "If the format has a <code>_422</code> or <code>_420</code> suffix, then <code>components.a</code> <strong class=\"purple\">must</strong> be the <a href=\"#resources-image-views-identity-mappings\">identity swizzle</a>, <code>VK_COMPONENT_SWIZZLE_ONE</code>, or <code>VK_COMPONENT_SWIZZLE_ZERO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02583",
          "text": "If the format has a <code>_422</code> or <code>_420</code> suffix, then <code>components.r</code> <strong class=\"purple\">must</strong> be the <a href=\"#resources-image-views-identity-mappings\">identity swizzle</a> or <code>VK_COMPONENT_SWIZZLE_B</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02584",
          "text": "If the format has a <code>_422</code> or <code>_420</code> suffix, then <code>components.b</code> <strong class=\"purple\">must</strong> be the <a href=\"#resources-image-views-identity-mappings\">identity swizzle</a> or <code>VK_COMPONENT_SWIZZLE_R</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02585",
          "text": "If the format has a <code>_422</code> or <code>_420</code> suffix, and if either <code>components.r</code> or <code>components.b</code> is the <a href=\"#resources-image-views-identity-mappings\">identity swizzle</a>, both values <strong class=\"purple\">must</strong> be the identity swizzle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrModel-01655",
          "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 components 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 component containing zero or one as a consequence of <a href=\"#textures-conversion-to-rgba\">conversion to RGBA</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrRange-02748",
          "text": "If <code>ycbcrRange</code> is <code>VK_SAMPLER_YCBCR_RANGE_ITU_NARROW</code> then the R, G and B components obtained by applying the <code>component</code> swizzle to <code>format</code> <strong class=\"purple\">must</strong> each have a bit-depth greater than or equal to 8",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-forceExplicitReconstruction-01656",
          "text": "If the <a href=\"#potential-format-features\">potential format features</a> of the sampler Y′C<sub>B</sub>C<sub>R</sub> conversion do not support <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT</code> <code>forceExplicitReconstruction</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-chromaFilter-01657",
          "text": "If the <a href=\"#potential-format-features\">potential format features</a> of the sampler Y′C<sub>B</sub>C<sub>R</sub> conversion do not support <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT</code>, <code>chromaFilter</code> <strong class=\"purple\">must</strong> not be <code>VK_FILTER_LINEAR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-pNext-09207",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM\">VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM</a> structure, and if the <a href=\"#features-ycbcrDegamma\"><code>ycbcrDegamma</code></a> feature is not enabled, then <a href=\"#VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM\">VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM</a>::<code>enableYDegamma</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-pNext-09208",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM\">VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM</a> structure, and if the <a href=\"#features-ycbcrDegamma\"><code>ycbcrDegamma</code></a> feature is not enabled, then <a href=\"#VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM\">VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM</a>::<code>enableCbCrDegamma</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-pNext-09209",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM\">VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM</a> structure, <code>format</code> <strong class=\"purple\">must</strong> be a format with 8-bit R, G, and B components",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-pNext-pNext",
          "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=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>, <a href=\"#VkExternalFormatQNX\">VkExternalFormatQNX</a>, or <a href=\"#VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM\">VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-parameter",
          "text": "<code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrModel-parameter",
          "text": "<code>ycbcrModel</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerYcbcrModelConversion\">VkSamplerYcbcrModelConversion</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrRange-parameter",
          "text": "<code>ycbcrRange</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerYcbcrRange\">VkSamplerYcbcrRange</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-parameter",
          "text": "<code>components</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentMapping\">VkComponentMapping</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-parameter",
          "text": "<code>xChromaOffset</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkChromaLocation\">VkChromaLocation</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-yChromaOffset-parameter",
          "text": "<code>yChromaOffset</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkChromaLocation\">VkChromaLocation</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-chromaFilter-parameter",
          "text": "<code>chromaFilter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFilter\">VkFilter</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM": {
      "core": [
        {
          "vuid": "VUID-VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroySamplerYcbcrConversion": {
      "core": [
        {
          "vuid": "VUID-vkDestroySamplerYcbcrConversion-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroySamplerYcbcrConversion-ycbcrConversion-parameter",
          "text": "If <code>ycbcrConversion</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>ycbcrConversion</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerYcbcrConversion\">VkSamplerYcbcrConversion</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroySamplerYcbcrConversion-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroySamplerYcbcrConversion-ycbcrConversion-parent",
          "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>",
          "page": "vkspec"
        }
      ]
    },
    "VkSamplerCustomBorderColorCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkSamplerCustomBorderColorCreateInfoEXT-format-07605",
          "text": "If <code>format</code> is not <code>VK_FORMAT_UNDEFINED</code> and <code>format</code> is not a depth/stencil format then the <a href=\"#VkSamplerCreateInfo\">VkSamplerCreateInfo</a>::<code>borderColor</code> type <strong class=\"purple\">must</strong> match the sampled type of the provided <code>format</code>, as shown in the <em>SPIR-V Type</em> column of the <a href=\"#formats-numericformat\">Interpretation of Numeric Format</a> table",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCustomBorderColorCreateInfoEXT-format-04014",
          "text": "If the <a href=\"#features-customBorderColorWithoutFormat\"><code>customBorderColorWithoutFormat</code></a> feature is not enabled then <code>format</code> <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCustomBorderColorCreateInfoEXT-format-04015",
          "text": "If the sampler is used to sample an image view of <code>VK_FORMAT_B4G4R4A4_UNORM_PACK16</code>, <code>VK_FORMAT_B5G6R5_UNORM_PACK16</code>, <code>VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR</code>, or <code>VK_FORMAT_B5G5R5A1_UNORM_PACK16</code> format then <code>format</code> <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCustomBorderColorCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCustomBorderColorCreateInfoEXT-format-parameter",
          "text": "<code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkSamplerBorderColorComponentMappingCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkSamplerBorderColorComponentMappingCreateInfoEXT-borderColorSwizzle-06437",
          "text": "The <a href=\"#features-borderColorSwizzle\"><code>borderColorSwizzle</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerBorderColorComponentMappingCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerBorderColorComponentMappingCreateInfoEXT-components-parameter",
          "text": "<code>components</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentMapping\">VkComponentMapping</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkSamplerBlockMatchWindowCreateInfoQCOM": {
      "core": [
        {
          "vuid": "VUID-VkSamplerBlockMatchWindowCreateInfoQCOM-WindowExtent-09210",
          "text": "<code>WindowExtent</code> <strong class=\"purple\">must</strong> not be larger than <a href=\"#VkPhysicalDeviceImageProcessing2PropertiesQCOM\">VkPhysicalDeviceImageProcessing2PropertiesQCOM</a>::<code>maxBlockMatchWindow</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerBlockMatchWindowCreateInfoQCOM-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerBlockMatchWindowCreateInfoQCOM-windowCompareMode-parameter",
          "text": "<code>windowCompareMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlockMatchWindowCompareModeQCOM\">VkBlockMatchWindowCompareModeQCOM</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateDescriptorSetLayout": {
      "core": [
        {
          "vuid": "VUID-vkCreateDescriptorSetLayout-support-09582",
          "text": "If the descriptor layout exceeds the limits reported through the <a href=\"#limits\">physical device limits</a>, then <a href=\"#vkGetDescriptorSetLayoutSupport\">vkGetDescriptorSetLayoutSupport</a> <strong class=\"purple\">must</strong> have returned <a href=\"#VkDescriptorSetLayoutSupport\">VkDescriptorSetLayoutSupport</a> with <code>support</code> equal to <code>VK_TRUE</code> for <code>pCreateInfo</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateDescriptorSetLayout-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateDescriptorSetLayout-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDescriptorSetLayoutCreateInfo\">VkDescriptorSetLayoutCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateDescriptorSetLayout-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateDescriptorSetLayout-pSetLayout-parameter",
          "text": "<code>pSetLayout</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkDescriptorSetLayoutCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-binding-00279",
          "text": "If the <a href=\"#features-perStageDescriptorSet\"><code>perStageDescriptorSet</code></a> feature is not enabled, or <code>flags</code> does not contain <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NV</code>, then 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-00280",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-02208",
          "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</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-00281",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-04590",
          "text": "If <code>flags</code> contains <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-04591",
          "text": "If <code>flags</code> contains <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code>, <code>pBindings</code> <strong class=\"purple\">must</strong> not have a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_MUTABLE_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-03000",
          "text": "If any binding has the <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT</code> bit set, <code>flags</code> <strong class=\"purple\">must</strong> include <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-descriptorType-03001",
          "text": "If any binding has the <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT</code> bit set, then all bindings <strong class=\"purple\">must</strong> not have <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-04592",
          "text": "If <code>flags</code> contains <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-pBindings-07303",
          "text": "If any element <code>pBindings</code>[i] has a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_MUTABLE_EXT</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkMutableDescriptorTypeCreateInfoEXT\">VkMutableDescriptorTypeCreateInfoEXT</a> structure, and <code>mutableDescriptorTypeListCount</code> <strong class=\"purple\">must</strong> be greater than i",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-descriptorType-04594",
          "text": "If a binding has a <code>descriptorType</code> value of <code>VK_DESCRIPTOR_TYPE_MUTABLE_EXT</code>, then <code>pImmutableSamplers</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-mutableDescriptorType-04595",
          "text": "If <a href=\"#VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT\">VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT</a>::<code>mutableDescriptorType</code> is not enabled, <code>pBindings</code> <strong class=\"purple\">must</strong> not contain a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_MUTABLE_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-04596",
          "text": "If <code>flags</code> contains <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT</code>, <a href=\"#VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT\">VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT</a>::<code>mutableDescriptorType</code> <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-08000",
          "text": "If <code>flags</code> contains <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-08001",
          "text": "If <code>flags</code> contains <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT</code>, <code>flags</code> <strong class=\"purple\">must</strong> also contain <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-08002",
          "text": "If <code>flags</code> contains <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, then <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-08003",
          "text": "If <code>flags</code> contains <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, then <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-09463",
          "text": "If <code>flags</code> contains <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NV</code>, then <a href=\"#features-perStageDescriptorSet\"><code>perStageDescriptorSet</code></a> <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-09464",
          "text": "If <code>flags</code> contains <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NV</code>, then there <strong class=\"purple\">must</strong> not be any two elements of the <code>pBindings</code> array with the same <a href=\"#VkDescriptorSetLayoutBinding\">VkDescriptorSetLayoutBinding</a>::<code>binding</code> value and their <a href=\"#VkDescriptorSetLayoutBinding\">VkDescriptorSetLayoutBinding</a>::<code>stageFlags</code> containing the same bit",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-pNext-pNext",
          "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=\"#VkDescriptorSetLayoutBindingFlagsCreateInfo\">VkDescriptorSetLayoutBindingFlagsCreateInfo</a> or <a href=\"#VkMutableDescriptorTypeCreateInfoEXT\">VkMutableDescriptorTypeCreateInfoEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDescriptorSetLayoutCreateFlagBits\">VkDescriptorSetLayoutCreateFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-pBindings-parameter",
          "text": "If <code>bindingCount</code> is not <code>0</code>, <code>pBindings</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> valid <a href=\"#VkDescriptorSetLayoutBinding\">VkDescriptorSetLayoutBinding</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkMutableDescriptorTypeCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkMutableDescriptorTypeCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMutableDescriptorTypeCreateInfoEXT-pMutableDescriptorTypeLists-parameter",
          "text": "If <code>mutableDescriptorTypeListCount</code> is not <code>0</code>, <code>pMutableDescriptorTypeLists</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>mutableDescriptorTypeListCount</code> valid <a href=\"#VkMutableDescriptorTypeListEXT\">VkMutableDescriptorTypeListEXT</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkMutableDescriptorTypeListEXT": {
      "core": [
        {
          "vuid": "VUID-VkMutableDescriptorTypeListEXT-descriptorTypeCount-04597",
          "text": "<code>descriptorTypeCount</code> <strong class=\"purple\">must</strong> not be <code>0</code> if the corresponding binding is of <code>VK_DESCRIPTOR_TYPE_MUTABLE_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMutableDescriptorTypeListEXT-pDescriptorTypes-04598",
          "text": "<code>pDescriptorTypes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorTypeCount</code> valid, unique <a href=\"#VkDescriptorType\">VkDescriptorType</a> values if the given binding is of <code>VK_DESCRIPTOR_TYPE_MUTABLE_EXT</code> type",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMutableDescriptorTypeListEXT-descriptorTypeCount-04599",
          "text": "<code>descriptorTypeCount</code> <strong class=\"purple\">must</strong> be <code>0</code> if the corresponding binding is not of <code>VK_DESCRIPTOR_TYPE_MUTABLE_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMutableDescriptorTypeListEXT-pDescriptorTypes-04600",
          "text": "<code>pDescriptorTypes</code> <strong class=\"purple\">must</strong> not contain <code>VK_DESCRIPTOR_TYPE_MUTABLE_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMutableDescriptorTypeListEXT-pDescriptorTypes-04601",
          "text": "<code>pDescriptorTypes</code> <strong class=\"purple\">must</strong> not contain <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMutableDescriptorTypeListEXT-pDescriptorTypes-04602",
          "text": "<code>pDescriptorTypes</code> <strong class=\"purple\">must</strong> not contain <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMutableDescriptorTypeListEXT-pDescriptorTypes-04603",
          "text": "<code>pDescriptorTypes</code> <strong class=\"purple\">must</strong> not contain <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMutableDescriptorTypeListEXT-pDescriptorTypes-parameter",
          "text": "If <code>descriptorTypeCount</code> is not <code>0</code>, <code>pDescriptorTypes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorTypeCount</code> valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> values",
          "page": "vkspec"
        }
      ]
    },
    "VkDescriptorSetLayoutBinding": {
      "core": [
        {
          "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-00282",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-04604",
          "text": "If the <a href=\"#features-inlineUniformBlock\"><code>inlineUniformBlock</code></a> feature is not enabled, <code>descriptorType</code> <strong class=\"purple\">must</strong> not be <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-02209",
          "text": "If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK</code> then <code>descriptorCount</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-08004",
          "text": "If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK</code> and <a href=\"#VkDescriptorSetLayoutCreateInfo\">VkDescriptorSetLayoutCreateInfo</a>::<code>flags</code> does not contain <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code> then <code>descriptorCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceInlineUniformBlockProperties</code>::<code>maxInlineUniformBlockSize</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutBinding-flags-08005",
          "text": "If <a href=\"#VkDescriptorSetLayoutCreateInfo\">VkDescriptorSetLayoutCreateInfo</a>::<code>flags</code> contains <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT</code>, <code>descriptorType</code> <strong class=\"purple\">must</strong> be <code>VK_DESCRIPTOR_TYPE_SAMPLER</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutBinding-flags-08006",
          "text": "If <a href=\"#VkDescriptorSetLayoutCreateInfo\">VkDescriptorSetLayoutCreateInfo</a>::<code>flags</code> contains <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT</code>, <code>descriptorCount</code> <strong class=\"purple\">must</strong> less than or equal to <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutBinding-flags-08007",
          "text": "If <a href=\"#VkDescriptorSetLayoutCreateInfo\">VkDescriptorSetLayoutCreateInfo</a>::<code>flags</code> contains <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT</code>, and <code>descriptorCount</code> is equal to <code>1</code>, <code>pImmutableSamplers</code> <strong class=\"purple\">must</strong> not be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorCount-09465",
          "text": "If <code>descriptorCount</code> is not <code>0</code>, <code>stageFlags</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_STAGE_ALL</code> or a valid combination of other <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-01510",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutBinding-pImmutableSamplers-04009",
          "text": "The sampler objects indicated by <code>pImmutableSamplers</code> <strong class=\"purple\">must</strong> not have a <code>borderColor</code> with one of the values <code>VK_BORDER_COLOR_FLOAT_CUSTOM_EXT</code> or <code>VK_BORDER_COLOR_INT_CUSTOM_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-04605",
          "text": "If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_MUTABLE_EXT</code>, then <code>pImmutableSamplers</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutBinding-flags-09466",
          "text": "If <a href=\"#VkDescriptorSetLayoutCreateInfo\">VkDescriptorSetLayoutCreateInfo</a>::<code>flags</code> contains <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NV</code>, and <code>descriptorCount</code> is not <code>0</code>, then <code>stageFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <code>VK_SHADER_STAGE_VERTEX_BIT</code>, <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code>, <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>, <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>, <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> and <code>VK_SHADER_STAGE_COMPUTE_BIT</code> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-parameter",
          "text": "<code>descriptorType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkDescriptorSetLayoutBindingFlagsCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-bindingCount-03002",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-flags-03003",
          "text": "If <a href=\"#VkDescriptorSetLayoutCreateInfo\">VkDescriptorSetLayoutCreateInfo</a>::<code>flags</code> includes <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code>, then all elements of <code>pBindingFlags</code> <strong class=\"purple\">must</strong> not include <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT</code>, <code>VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT</code>, or <code>VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-pBindingFlags-03004",
          "text": "If an element of <code>pBindingFlags</code> includes <code>VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT</code>, then it <strong class=\"purple\">must</strong> be the element with the highest <code>binding</code> number",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingUniformBufferUpdateAfterBind-03005",
          "text": "If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeatures\">VkPhysicalDeviceDescriptorIndexingFeatures</a>::<code>descriptorBindingUniformBufferUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingSampledImageUpdateAfterBind-03006",
          "text": "If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeatures\">VkPhysicalDeviceDescriptorIndexingFeatures</a>::<code>descriptorBindingSampledImageUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, or <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingStorageImageUpdateAfterBind-03007",
          "text": "If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeatures\">VkPhysicalDeviceDescriptorIndexingFeatures</a>::<code>descriptorBindingStorageImageUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingStorageBufferUpdateAfterBind-03008",
          "text": "If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeatures\">VkPhysicalDeviceDescriptorIndexingFeatures</a>::<code>descriptorBindingStorageBufferUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingUniformTexelBufferUpdateAfterBind-03009",
          "text": "If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeatures\">VkPhysicalDeviceDescriptorIndexingFeatures</a>::<code>descriptorBindingUniformTexelBufferUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingStorageTexelBufferUpdateAfterBind-03010",
          "text": "If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeatures\">VkPhysicalDeviceDescriptorIndexingFeatures</a>::<code>descriptorBindingStorageTexelBufferUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingInlineUniformBlockUpdateAfterBind-02211",
          "text": "If <a href=\"#VkPhysicalDeviceInlineUniformBlockFeatures\">VkPhysicalDeviceInlineUniformBlockFeatures</a>::<code>descriptorBindingInlineUniformBlockUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingAccelerationStructureUpdateAfterBind-03570",
          "text": "If <a href=\"#VkPhysicalDeviceAccelerationStructureFeaturesKHR\">VkPhysicalDeviceAccelerationStructureFeaturesKHR</a>::<code>descriptorBindingAccelerationStructureUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR</code> or <code>VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-None-03011",
          "text": "All bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code>, <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code>, or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingUpdateUnusedWhilePending-03012",
          "text": "If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeatures\">VkPhysicalDeviceDescriptorIndexingFeatures</a>::<code>descriptorBindingUpdateUnusedWhilePending</code> is not enabled, all elements of <code>pBindingFlags</code> <strong class=\"purple\">must</strong> not include <code>VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingPartiallyBound-03013",
          "text": "If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeatures\">VkPhysicalDeviceDescriptorIndexingFeatures</a>::<code>descriptorBindingPartiallyBound</code> is not enabled, all elements of <code>pBindingFlags</code> <strong class=\"purple\">must</strong> not include <code>VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingVariableDescriptorCount-03014",
          "text": "If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeatures\">VkPhysicalDeviceDescriptorIndexingFeatures</a>::<code>descriptorBindingVariableDescriptorCount</code> is not enabled, all elements of <code>pBindingFlags</code> <strong class=\"purple\">must</strong> not include <code>VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-pBindingFlags-03015",
          "text": "If an element of <code>pBindingFlags</code> includes <code>VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT</code>, that element&#8217;s <code>descriptorType</code> <strong class=\"purple\">must</strong> not be <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-pBindingFlags-parameter",
          "text": "If <code>bindingCount</code> is not <code>0</code>, <code>pBindingFlags</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> valid combinations of <a href=\"#VkDescriptorBindingFlagBits\">VkDescriptorBindingFlagBits</a> values",
          "page": "vkspec"
        }
      ]
    },
    "vkGetDescriptorSetLayoutSupport": {
      "core": [
        {
          "vuid": "VUID-vkGetDescriptorSetLayoutSupport-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDescriptorSetLayoutSupport-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDescriptorSetLayoutCreateInfo\">VkDescriptorSetLayoutCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDescriptorSetLayoutSupport-pSupport-parameter",
          "text": "<code>pSupport</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDescriptorSetLayoutSupport\">VkDescriptorSetLayoutSupport</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkDescriptorSetLayoutSupport": {
      "core": [
        {
          "vuid": "VUID-VkDescriptorSetLayoutSupport-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutSupport-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDescriptorSetVariableDescriptorCountLayoutSupport\">VkDescriptorSetVariableDescriptorCountLayoutSupport</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutSupport-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        }
      ]
    },
    "VkDescriptorSetVariableDescriptorCountLayoutSupport": {
      "core": [
        {
          "vuid": "VUID-VkDescriptorSetVariableDescriptorCountLayoutSupport-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroyDescriptorSetLayout": {
      "core": [
        {
          "vuid": "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-00284",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-00285",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyDescriptorSetLayout-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-parameter",
          "text": "If <code>descriptorSetLayout</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>descriptorSetLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyDescriptorSetLayout-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-parent",
          "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>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreatePipelineLayout": {
      "core": [
        {
          "vuid": "VUID-vkCreatePipelineLayout-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreatePipelineLayout-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineLayoutCreateInfo\">VkPipelineLayoutCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreatePipelineLayout-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreatePipelineLayout-pPipelineLayout-parameter",
          "text": "<code>pPipelineLayout</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineLayoutCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-setLayoutCount-00286",
          "text": "<code>setLayoutCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxBoundDescriptorSets</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03016",
          "text": "The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> and <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorSamplers</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03017",
          "text": "The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> and <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorUniformBuffers</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03018",
          "text": "The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> and <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorStorageBuffers</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-06939",
          "text": "The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM</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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03020",
          "text": "The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorStorageImages</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03021",
          "text": "The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorInputAttachments</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02214",
          "text": "The total number of bindings in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set and with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK</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>VkPhysicalDeviceInlineUniformBlockProperties</code>::<code>maxPerStageDescriptorInlineUniformBlocks</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03022",
          "text": "The total number of descriptors with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> and <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxPerStageDescriptorUpdateAfterBindSamplers</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03023",
          "text": "The total number of descriptors with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> and <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxPerStageDescriptorUpdateAfterBindUniformBuffers</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03024",
          "text": "The total number of descriptors with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> and <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxPerStageDescriptorUpdateAfterBindStorageBuffers</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03025",
          "text": "The total number of descriptors with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxPerStageDescriptorUpdateAfterBindSampledImages</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03026",
          "text": "The total number of descriptors with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxPerStageDescriptorUpdateAfterBindStorageImages</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03027",
          "text": "The total number of descriptors with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxPerStageDescriptorUpdateAfterBindInputAttachments</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02215",
          "text": "The total number of bindings with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK</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>VkPhysicalDeviceInlineUniformBlockProperties</code>::<code>maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03028",
          "text": "The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> and <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetSamplers</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03029",
          "text": "The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetUniformBuffers</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03030",
          "text": "If the <a href=\"#features-maintenance7\"><code>maintenance7</code></a> feature is not enabled, the total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetUniformBuffersDynamic</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-maintenance7-10003",
          "text": "If the <a href=\"#features-maintenance7\"><code>maintenance7</code></a> feature is enabled, the total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxDescriptorSetTotalUniformBuffersDynamic\"><code>VkPhysicalDeviceMaintenance7PropertiesKHR</code>::<code>maxDescriptorSetTotalUniformBuffersDynamic</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03031",
          "text": "The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetStorageBuffers</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03032",
          "text": "If the <a href=\"#features-maintenance7\"><code>maintenance7</code></a> feature is not enabled, the total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetStorageBuffersDynamic</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-maintenance7-10004",
          "text": "If the <a href=\"#features-maintenance7\"><code>maintenance7</code></a> feature is enabled, the total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxDescriptorSetTotalStorageBuffersDynamic\"><code>VkPhysicalDeviceMaintenance7PropertiesKHR</code>::<code>maxDescriptorSetTotalStorageBuffersDynamic</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-None-10005",
          "text": "The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> or <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 <a href=\"#limits-maxDescriptorSetTotalBuffersDynamic\"><code>VkPhysicalDeviceMaintenance7PropertiesKHR</code>::<code>maxDescriptorSetTotalBuffersDynamic</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-10006",
          "text": "The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> or <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 <a href=\"#limits-maxDescriptorSetUpdateAfterBindTotalBuffersDynamic\"><code>VkPhysicalDeviceMaintenance7PropertiesKHR</code>::<code>maxDescriptorSetUpdateAfterBindTotalBuffersDynamic</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03033",
          "text": "The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetSampledImages</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03034",
          "text": "The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetStorageImages</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03035",
          "text": "The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetInputAttachments</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02216",
          "text": "The total number of bindings in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK</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>VkPhysicalDeviceInlineUniformBlockProperties</code>::<code>maxDescriptorSetInlineUniformBlocks</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03036",
          "text": "The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> and <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxDescriptorSetUpdateAfterBindSamplers</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03037",
          "text": "The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxDescriptorSetUpdateAfterBindUniformBuffers</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03038",
          "text": "If the <a href=\"#features-maintenance7\"><code>maintenance7</code></a> feature is not enabled, 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>maxDescriptorSetUpdateAfterBindUniformBuffersDynamic</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-maintenance7-10007",
          "text": "If the <a href=\"#features-maintenance7\"><code>maintenance7</code></a> feature is enabled, 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 <a href=\"#limits-maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic\"><code>VkPhysicalDeviceMaintenance7PropertiesKHR</code>::<code>maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03039",
          "text": "The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxDescriptorSetUpdateAfterBindStorageBuffers</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03040",
          "text": "If the <a href=\"#features-maintenance7\"><code>maintenance7</code></a> feature is not enabled, 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>maxDescriptorSetUpdateAfterBindStorageBuffersDynamic</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-maintenance7-10008",
          "text": "If the <a href=\"#features-maintenance7\"><code>maintenance7</code></a> feature is enabled, 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 <a href=\"#limits-maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic\"><code>VkPhysicalDeviceMaintenance7PropertiesKHR</code>::<code>maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03041",
          "text": "The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxDescriptorSetUpdateAfterBindSampledImages</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03042",
          "text": "The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxDescriptorSetUpdateAfterBindStorageImages</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03043",
          "text": "The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxDescriptorSetUpdateAfterBindInputAttachments</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02217",
          "text": "The total number of bindings with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK</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>VkPhysicalDeviceInlineUniformBlockProperties</code>::<code>maxDescriptorSetUpdateAfterBindInlineUniformBlocks</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-06531",
          "text": "The total number of descriptors with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK</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>VkPhysicalDeviceVulkan13Properties</code>::<code>maxInlineUniformTotalSize</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-pPushConstantRanges-00292",
          "text": "Any two elements of <code>pPushConstantRanges</code> <strong class=\"purple\">must</strong> not include the same stage in <code>stageFlags</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00293",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03571",
          "text": "The total number of bindings in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR</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 <a href=\"#VkPhysicalDeviceAccelerationStructurePropertiesKHR\">VkPhysicalDeviceAccelerationStructurePropertiesKHR</a>::<code>maxPerStageDescriptorAccelerationStructures</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03572",
          "text": "The total number of bindings with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR</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 <a href=\"#VkPhysicalDeviceAccelerationStructurePropertiesKHR\">VkPhysicalDeviceAccelerationStructurePropertiesKHR</a>::<code>maxPerStageDescriptorUpdateAfterBindAccelerationStructures</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03573",
          "text": "The total number of bindings in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceAccelerationStructurePropertiesKHR\">VkPhysicalDeviceAccelerationStructurePropertiesKHR</a>::<code>maxDescriptorSetAccelerationStructures</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03574",
          "text": "The total number of bindings with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceAccelerationStructurePropertiesKHR\">VkPhysicalDeviceAccelerationStructurePropertiesKHR</a>::<code>maxDescriptorSetUpdateAfterBindAccelerationStructures</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02381",
          "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 <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxDescriptorSetAccelerationStructures</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-pImmutableSamplers-03566",
          "text": "The total number of <code>pImmutableSamplers</code> created with <code>flags</code> containing <code>VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT</code> or <code>VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT</code> across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxDescriptorSetSubsampledSamplers\"><code>VkPhysicalDeviceFragmentDensityMap2PropertiesEXT</code>::<code>maxDescriptorSetSubsampledSamplers</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-04606",
          "text": "Any element of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> not have been created with the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-graphicsPipelineLibrary-06753",
          "text": "If <a href=\"#features-graphicsPipelineLibrary\"><code>graphicsPipelineLibrary</code></a> is not enabled, elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be valid <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> objects",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-08008",
          "text": "If any element of <code>pSetLayouts</code> was created with the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code> bit set, all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineLayoutCreateFlagBits\">VkPipelineLayoutCreateFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-parameter",
          "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 or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineLayoutCreateInfo-pPushConstantRanges-parameter",
          "text": "If <code>pushConstantRangeCount</code> is not <code>0</code>, <code>pPushConstantRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pushConstantRangeCount</code> valid <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkPushConstantRange": {
      "core": [
        {
          "vuid": "VUID-VkPushConstantRange-offset-00294",
          "text": "<code>offset</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxPushConstantsSize</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushConstantRange-offset-00295",
          "text": "<code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushConstantRange-size-00296",
          "text": "<code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushConstantRange-size-00297",
          "text": "<code>size</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushConstantRange-size-00298",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushConstantRange-stageFlags-parameter",
          "text": "<code>stageFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushConstantRange-stageFlags-requiredbitmask",
          "text": "<code>stageFlags</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroyPipelineLayout": {
      "core": [
        {
          "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-00299",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-00300",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-02004",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyPipelineLayout-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-parameter",
          "text": "If <code>pipelineLayout</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyPipelineLayout-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-parent",
          "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>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateDescriptorPool": {
      "core": [
        {
          "vuid": "VUID-vkCreateDescriptorPool-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateDescriptorPool-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDescriptorPoolCreateInfo\">VkDescriptorPoolCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateDescriptorPool-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateDescriptorPool-pDescriptorPool-parameter",
          "text": "<code>pDescriptorPool</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDescriptorPool\">VkDescriptorPool</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkDescriptorPoolCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkDescriptorPoolCreateInfo-descriptorPoolOverallocation-09227",
          "text": "If the <a href=\"#features-descriptorPoolOverallocation\"><code>descriptorPoolOverallocation</code></a> feature is not enabled, or <code>flags</code> does not have <code>VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_SETS_BIT_NV</code> set, <code>maxSets</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorPoolCreateInfo-flags-09228",
          "text": "If <code>flags</code> has the <code>VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_SETS_BIT_NV</code> or <code>VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_POOLS_BIT_NV</code> bits set, then <a href=\"#features-descriptorPoolOverallocation\"><code>descriptorPoolOverallocation</code></a> <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorPoolCreateInfo-flags-04607",
          "text": "If <code>flags</code> has the <code>VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT</code> bit set, then the <code>VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT</code> bit <strong class=\"purple\">must</strong> not be set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorPoolCreateInfo-mutableDescriptorType-04608",
          "text": "If <a href=\"#VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT\">VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT</a>::<code>mutableDescriptorType</code> is not enabled, <code>pPoolSizes</code> <strong class=\"purple\">must</strong> not contain a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_MUTABLE_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorPoolCreateInfo-flags-04609",
          "text": "If <code>flags</code> has the <code>VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT</code> bit set, <a href=\"#VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT\">VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT</a>::<code>mutableDescriptorType</code> <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorPoolCreateInfo-pPoolSizes-04787",
          "text": "If <code>pPoolSizes</code> contains a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_MUTABLE_EXT</code>, any other <code>VK_DESCRIPTOR_TYPE_MUTABLE_EXT</code> element in <code>pPoolSizes</code> <strong class=\"purple\">must</strong> not have sets of supported descriptor types which partially overlap",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorPoolCreateInfo-pPoolSizes-09424",
          "text": "If <code>pPoolSizes</code> contains a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK</code>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkDescriptorPoolInlineUniformBlockCreateInfo\">VkDescriptorPoolInlineUniformBlockCreateInfo</a> structure whose <code>maxInlineUniformBlockBindings</code> member is not zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorPoolCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorPoolCreateInfo-pNext-pNext",
          "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=\"#VkDescriptorPoolInlineUniformBlockCreateInfo\">VkDescriptorPoolInlineUniformBlockCreateInfo</a> or <a href=\"#VkMutableDescriptorTypeCreateInfoEXT\">VkMutableDescriptorTypeCreateInfoEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorPoolCreateInfo-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorPoolCreateInfo-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDescriptorPoolCreateFlagBits\">VkDescriptorPoolCreateFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorPoolCreateInfo-pPoolSizes-parameter",
          "text": "If <code>poolSizeCount</code> is not <code>0</code>, <code>pPoolSizes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>poolSizeCount</code> valid <a href=\"#VkDescriptorPoolSize\">VkDescriptorPoolSize</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkDescriptorPoolInlineUniformBlockCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkDescriptorPoolInlineUniformBlockCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkDescriptorPoolSize": {
      "core": [
        {
          "vuid": "VUID-VkDescriptorPoolSize-descriptorCount-00302",
          "text": "<code>descriptorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorPoolSize-type-02218",
          "text": "If <code>type</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK</code> then <code>descriptorCount</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorPoolSize-type-parameter",
          "text": "<code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroyDescriptorPool": {
      "core": [
        {
          "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-00303",
          "text": "All submitted commands that refer to <code>descriptorPool</code> (via any allocated descriptor sets) <strong class=\"purple\">must</strong> have completed execution",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-00304",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-00305",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyDescriptorPool-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-parameter",
          "text": "If <code>descriptorPool</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>descriptorPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorPool\">VkDescriptorPool</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyDescriptorPool-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-parent",
          "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>",
          "page": "vkspec"
        }
      ]
    },
    "vkAllocateDescriptorSets": {
      "core": [
        {
          "vuid": "VUID-vkAllocateDescriptorSets-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAllocateDescriptorSets-pAllocateInfo-parameter",
          "text": "<code>pAllocateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDescriptorSetAllocateInfo\">VkDescriptorSetAllocateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAllocateDescriptorSets-pDescriptorSets-parameter",
          "text": "<code>pDescriptorSets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pAllocateInfo-&gt;descriptorSetCount</code> <a href=\"#VkDescriptorSet\">VkDescriptorSet</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAllocateDescriptorSets-pAllocateInfo::descriptorSetCount-arraylength",
          "text": "<code>pAllocateInfo-&gt;descriptorSetCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkDescriptorSetAllocateInfo": {
      "core": [
        {
          "vuid": "VUID-VkDescriptorSetAllocateInfo-apiVersion-07895",
          "text": "If the <a href=\"#VK_KHR_maintenance1\">VK_KHR_maintenance1</a> extension is not enabled and <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan 1.1, <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetAllocateInfo-apiVersion-07896",
          "text": "If the <a href=\"#VK_KHR_maintenance1\">VK_KHR_maintenance1</a> extension is not enabled and <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan 1.1, <code>descriptorPool</code> <strong class=\"purple\">must</strong> have enough free descriptor capacity remaining to allocate the descriptor sets of the specified layouts",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetAllocateInfo-pSetLayouts-00308",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetAllocateInfo-pSetLayouts-03044",
          "text": "If any element of <code>pSetLayouts</code> was created with the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set, <code>descriptorPool</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT</code> flag set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetAllocateInfo-pSetLayouts-09380",
          "text": "If <code>pSetLayouts</code>[i] was created with an element of <code>pBindingFlags</code> that includes <code>VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT</code>, and <a href=\"#VkDescriptorSetVariableDescriptorCountAllocateInfo\">VkDescriptorSetVariableDescriptorCountAllocateInfo</a> is included in the <code>pNext</code> chain, and <code>VkDescriptorSetVariableDescriptorCountAllocateInfo</code>::<code>descriptorSetCount</code> is not zero, then <a href=\"#VkDescriptorSetVariableDescriptorCountAllocateInfo\">VkDescriptorSetVariableDescriptorCountAllocateInfo</a>::<code>pDescriptorCounts</code>[i] <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkDescriptorSetLayoutBinding\">VkDescriptorSetLayoutBinding</a>::<code>descriptorCount</code> for the corresponding binding used to create <code>pSetLayouts</code>[i]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetAllocateInfo-pSetLayouts-04610",
          "text": "If any element of <code>pSetLayouts</code> was created with the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT</code> bit set, <code>descriptorPool</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT</code> flag set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetAllocateInfo-pSetLayouts-08009",
          "text": "Each element of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> not have been created with the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetAllocateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetAllocateInfo-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDescriptorSetVariableDescriptorCountAllocateInfo\">VkDescriptorSetVariableDescriptorCountAllocateInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetAllocateInfo-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetAllocateInfo-descriptorPool-parameter",
          "text": "<code>descriptorPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorPool\">VkDescriptorPool</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetAllocateInfo-pSetLayouts-parameter",
          "text": "<code>pSetLayouts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorSetCount</code> valid <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetAllocateInfo-descriptorSetCount-arraylength",
          "text": "<code>descriptorSetCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetAllocateInfo-commonparent",
          "text": "Both of <code>descriptorPool</code>, and the elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkDescriptorSetVariableDescriptorCountAllocateInfo": {
      "core": [
        {
          "vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfo-descriptorSetCount-03045",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfo-pDescriptorCounts-parameter",
          "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",
          "page": "vkspec"
        }
      ]
    },
    "vkFreeDescriptorSets": {
      "core": [
        {
          "vuid": "VUID-vkFreeDescriptorSets-pDescriptorSets-00309",
          "text": "All submitted commands that refer to any element of <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> have completed execution",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkFreeDescriptorSets-pDescriptorSets-00310",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkFreeDescriptorSets-descriptorPool-00312",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkFreeDescriptorSets-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkFreeDescriptorSets-descriptorPool-parameter",
          "text": "<code>descriptorPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorPool\">VkDescriptorPool</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkFreeDescriptorSets-descriptorSetCount-arraylength",
          "text": "<code>descriptorSetCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkFreeDescriptorSets-descriptorPool-parent",
          "text": "<code>descriptorPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkFreeDescriptorSets-pDescriptorSets-parent",
          "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>",
          "page": "vkspec"
        }
      ]
    },
    "vkResetDescriptorPool": {
      "core": [
        {
          "vuid": "VUID-vkResetDescriptorPool-descriptorPool-00313",
          "text": "All uses of <code>descriptorPool</code> (via any allocated descriptor sets) <strong class=\"purple\">must</strong> have completed execution",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkResetDescriptorPool-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkResetDescriptorPool-descriptorPool-parameter",
          "text": "<code>descriptorPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorPool\">VkDescriptorPool</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkResetDescriptorPool-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkResetDescriptorPool-descriptorPool-parent",
          "text": "<code>descriptorPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkUpdateDescriptorSets": {
      "core": [
        {
          "vuid": "VUID-vkUpdateDescriptorSets-pDescriptorWrites-06236",
          "text": "For each element <span class=\"eq\">i</span> where <code>pDescriptorWrites</code>[i].<code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code>, elements of the <code>pTexelBufferView</code> member of <code>pDescriptorWrites</code>[i] <strong class=\"purple\">must</strong> have been created on <code>device</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateDescriptorSets-pDescriptorWrites-06237",
          "text": "For each element <span class=\"eq\">i</span> where <code>pDescriptorWrites</code>[i].<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>, the <code>buffer</code> member of any element of the <code>pBufferInfo</code> member of <code>pDescriptorWrites</code>[i] <strong class=\"purple\">must</strong> have been created on <code>device</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateDescriptorSets-pDescriptorWrites-06238",
          "text": "For each element <span class=\"eq\">i</span> where <code>pDescriptorWrites</code>[i].<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 any element of the <code>pImageInfo</code> member of <code>pDescriptorWrites</code>[i] <strong class=\"purple\">must</strong> have been created on <code>device</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateDescriptorSets-pDescriptorWrites-06239",
          "text": "For each element <span class=\"eq\">i</span> where <code>pDescriptorWrites</code>[i].<code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code>, or <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> the <code>imageView</code> member of any element of <code>pDescriptorWrites</code>[i] <strong class=\"purple\">must</strong> have been created on <code>device</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateDescriptorSets-pDescriptorWrites-06240",
          "text": "For each element <span class=\"eq\">i</span> where <code>pDescriptorWrites</code>[i].<code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR</code>, elements of the <code>pAccelerationStructures</code> member of a <a href=\"#VkWriteDescriptorSetAccelerationStructureKHR\">VkWriteDescriptorSetAccelerationStructureKHR</a> structure in the <code>pNext</code> chain of <code>pDescriptorWrites</code>[i] <strong class=\"purple\">must</strong> have been created on <code>device</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateDescriptorSets-pDescriptorWrites-06241",
          "text": "For each element <span class=\"eq\">i</span> where <code>pDescriptorWrites</code>[i].<code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV</code>, elements of the <code>pAccelerationStructures</code> member of a <a href=\"#VkWriteDescriptorSetAccelerationStructureNV\">VkWriteDescriptorSetAccelerationStructureNV</a> structure in the <code>pNext</code> chain of <code>pDescriptorWrites</code>[i] <strong class=\"purple\">must</strong> have been created on <code>device</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateDescriptorSets-pDescriptorWrites-06940",
          "text": "For each element <span class=\"eq\">i</span> where <code>pDescriptorWrites</code>[i].<code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM</code> or <code>VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM</code>, the <code>imageView</code> member of any element of <code>pDescriptorWrites</code>[i] <strong class=\"purple\">must</strong> have been created on <code>device</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateDescriptorSets-pDescriptorWrites-06493",
          "text": "For each element <span class=\"eq\">i</span> where <code>pDescriptorWrites</code>[i].<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>pDescriptorWrites</code>[i].<code>pImageInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pDescriptorWrites</code>[i].<code>descriptorCount</code> valid <code>VkDescriptorImageInfo</code> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateDescriptorSets-pDescriptorWrites-06941",
          "text": "For each element <span class=\"eq\">i</span> where <code>pDescriptorWrites</code>[i].<code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM</code> or <code>VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM</code>, <code>pDescriptorWrites</code>[i].<code>pImageInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pDescriptorWrites</code>[i].<code>descriptorCount</code> valid <code>VkDescriptorImageInfo</code> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateDescriptorSets-None-03047",
          "text": "The <code>dstSet</code> member of each element of <code>pDescriptorWrites</code> or <code>pDescriptorCopies</code> for bindings which were created without the <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT</code> or <code>VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT</code> bits set <strong class=\"purple\">must</strong> not be used by any command that was recorded to a command buffer which is in the <a href=\"#commandbuffers-lifecycle\">pending state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateDescriptorSets-pDescriptorWrites-06993",
          "text": "Host access to <code>pDescriptorWrites</code>[i].<code>dstSet</code> and <code>pDescriptorCopies</code>[i].<code>dstSet</code> <strong class=\"purple\">must</strong> be <a href=\"#fundamentals-threadingbehavior\">externally synchronized</a> unless explicitly denoted otherwise for specific flags",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateDescriptorSets-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateDescriptorSets-pDescriptorWrites-parameter",
          "text": "If <code>descriptorWriteCount</code> is not <code>0</code>, <code>pDescriptorWrites</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorWriteCount</code> valid <a href=\"#VkWriteDescriptorSet\">VkWriteDescriptorSet</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateDescriptorSets-pDescriptorCopies-parameter",
          "text": "If <code>descriptorCopyCount</code> is not <code>0</code>, <code>pDescriptorCopies</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorCopyCount</code> valid <a href=\"#VkCopyDescriptorSet\">VkCopyDescriptorSet</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkWriteDescriptorSet": {
      "core": [
        {
          "vuid": "VUID-VkWriteDescriptorSet-dstBinding-00315",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-dstBinding-00316",
          "text": "<code>dstBinding</code> <strong class=\"purple\">must</strong> be a binding with a non-zero <code>descriptorCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-dstBinding-10009",
          "text": "<code>dstBinding</code> <strong class=\"purple\">must</strong> be a binding with a non-zero <a href=\"#VkDescriptorSetLayoutCreateInfo\">VkDescriptorSetLayoutCreateInfo</a>::<code>bindingCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorCount-00317",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorCount-00318",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00319",
          "text": "<code>descriptorType</code> <strong class=\"purple\">must</strong> match the type of <code>dstBinding</code> within <code>dstSet</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-dstSet-00320",
          "text": "<code>dstSet</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorSet\">VkDescriptorSet</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-dstArrayElement-00321",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02219",
          "text": "If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK</code>, <code>dstArrayElement</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02220",
          "text": "If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK</code>, <code>descriptorCount</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02994",
          "text": "If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code>, each element of <code>pTexelBufferView</code> <strong class=\"purple\">must</strong> be either a valid <code>VkBufferView</code> handle or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02995",
          "text": "If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> and the <a href=\"#features-nullDescriptor\"><code>nullDescriptor</code></a> feature is not enabled, each element of <code>pTexelBufferView</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00324",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00325",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02996",
          "text": "If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, the <code>imageView</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> be either a valid <code>VkImageView</code> handle or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02997",
          "text": "If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, and the <a href=\"#features-nullDescriptor\"><code>nullDescriptor</code></a> feature is not enabled, the <code>imageView</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-07683",
          "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> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02221",
          "text": "If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK</code>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkWriteDescriptorSetInlineUniformBlock\">VkWriteDescriptorSetInlineUniformBlock</a> structure whose <code>dataSize</code> member equals <code>descriptorCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02382",
          "text": "If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR</code>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkWriteDescriptorSetAccelerationStructureKHR\">VkWriteDescriptorSetAccelerationStructureKHR</a> structure whose <code>accelerationStructureCount</code> member equals <code>descriptorCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-03817",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-01946",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02738",
          "text": "If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, and if any element of <code>pImageInfo</code> has an <code>imageView</code> member that was created with a <code>VkSamplerYcbcrConversionInfo</code> structure in its <code>pNext</code> chain, then <code>dstSet</code> <strong class=\"purple\">must</strong> have been allocated with a layout that included immutable samplers for <code>dstBinding</code>, and the corresponding immutable sampler <strong class=\"purple\">must</strong> have been created with an <em>identically defined</em> <code>VkSamplerYcbcrConversionInfo</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-01948",
          "text": "If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, and <code>dstSet</code> was allocated with a layout that included immutable samplers for <code>dstBinding</code>, then the <code>imageView</code> member of each element of <code>pImageInfo</code> which corresponds to an immutable sampler that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a> <strong class=\"purple\">must</strong> have been created with a <code>VkSamplerYcbcrConversionInfo</code> structure in its <code>pNext</code> chain with an <em>identically defined</em> <code>VkSamplerYcbcrConversionInfo</code> to the corresponding immutable sampler",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-09506",
          "text": "If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>dstSet</code> was allocated with a layout that included immutable samplers for <code>dstBinding</code>, and those samplers enable <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, then <code>imageView</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00327",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00328",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00329",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00330",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00331",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00332",
          "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 <a href=\"#buffer-info-effective-range\">effective range</a> 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00333",
          "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 <a href=\"#buffer-info-effective-range\">effective range</a> 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-08765",
          "text": "If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code>, the <code>pTexelBufferView</code> <a href=\"#resources-buffer-views-usage\">buffer view usage</a> <strong class=\"purple\">must</strong> include <code>VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-08766",
          "text": "If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code>, the <code>pTexelBufferView</code> <a href=\"#resources-buffer-views-usage\">buffer view usage</a> <strong class=\"purple\">must</strong> include <code>VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00336",
          "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 <a href=\"#resources-image-views-identity-mappings\">identity swizzle</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00337",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-04149",
          "text": "If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code> the <code>imageLayout</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> be a member of the list given in <a href=\"#descriptorsets-sampledimage\">Sampled Image</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-04150",
          "text": "If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> the <code>imageLayout</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> be a member of the list given in <a href=\"#descriptorsets-combinedimagesampler\">Combined Image Sampler</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-04151",
          "text": "If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> the <code>imageLayout</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> be a member of the list given in <a href=\"#descriptorsets-inputattachment\">Input Attachment</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-04152",
          "text": "If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code> the <code>imageLayout</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> be a member of the list given in <a href=\"#descriptorsets-storageimage\">Storage Image</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00338",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00339",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02752",
          "text": "If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLER</code>, then <code>dstSet</code> <strong class=\"purple\">must</strong> not have been allocated with a layout that included immutable samplers for <code>dstBinding</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-dstSet-04611",
          "text": "If the <code>VkDescriptorSetLayoutBinding</code> for <code>dstSet</code> at <code>dstBinding</code> is <code>VK_DESCRIPTOR_TYPE_MUTABLE_EXT</code>, the new active descriptor type <code>descriptorType</code> <strong class=\"purple\">must</strong> exist in the corresponding <code>pMutableDescriptorTypeLists</code> list for <code>dstBinding</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-06450",
          "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 either been created without a <a href=\"#VkImageViewMinLodCreateInfoEXT\">VkImageViewMinLodCreateInfoEXT</a> included in the <code>pNext</code> chain or with a <a href=\"#VkImageViewMinLodCreateInfoEXT\">VkImageViewMinLodCreateInfoEXT</a>::<code>minLod</code> of <code>0.0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-06942",
          "text": "If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM</code>, the <code>imageView</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> have been created with a view created with an <code>image</code> created with <code>VK_IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-06943",
          "text": "If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM</code>, the <code>imageView</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> have been created with a view created with an <code>image</code> created with <code>VK_IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-pNext-pNext",
          "text": "Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkWriteDescriptorSetAccelerationStructureKHR\">VkWriteDescriptorSetAccelerationStructureKHR</a>, <a href=\"#VkWriteDescriptorSetAccelerationStructureNV\">VkWriteDescriptorSetAccelerationStructureNV</a>, or <a href=\"#VkWriteDescriptorSetInlineUniformBlock\">VkWriteDescriptorSetInlineUniformBlock</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-parameter",
          "text": "<code>descriptorType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-descriptorCount-arraylength",
          "text": "<code>descriptorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSet-commonparent",
          "text": "Both of <code>dstSet</code>, and the elements of <code>pTexelBufferView</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkDescriptorBufferInfo": {
      "core": [
        {
          "vuid": "VUID-VkDescriptorBufferInfo-offset-00340",
          "text": "<code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorBufferInfo-range-00341",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorBufferInfo-range-00342",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorBufferInfo-buffer-02998",
          "text": "If the <a href=\"#features-nullDescriptor\"><code>nullDescriptor</code></a> feature is not enabled, <code>buffer</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorBufferInfo-buffer-02999",
          "text": "If <code>buffer</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>offset</code> <strong class=\"purple\">must</strong> be zero and <code>range</code> <strong class=\"purple\">must</strong> be <code>VK_WHOLE_SIZE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorBufferInfo-buffer-parameter",
          "text": "If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkDescriptorImageInfo": {
      "core": [
        {
          "vuid": "VUID-VkDescriptorImageInfo-imageView-06712",
          "text": "<code>imageView</code> <strong class=\"purple\">must</strong> not be a 2D array image view created from a 3D image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorImageInfo-imageView-07795",
          "text": "If <code>imageView</code> is a 2D view created from a 3D image, then <code>descriptorType</code> <strong class=\"purple\">must</strong> be <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorImageInfo-imageView-07796",
          "text": "If <code>imageView</code> is a 2D view created from a 3D image, then the image <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT</code> set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorImageInfo-descriptorType-06713",
          "text": "If the <a href=\"#features-image2DViewOf3D\"><code>image2DViewOf3D</code></a> feature is not enabled or <code>descriptorType</code> is not <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code> then <code>imageView</code> <strong class=\"purple\">must</strong> not be a 2D view created from a 3D image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorImageInfo-descriptorType-06714",
          "text": "If the <a href=\"#features-sampler2DViewOf3D\"><code>sampler2DViewOf3D</code></a> feature is not enabled or <code>descriptorType</code> is not <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code> or <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> then <code>imageView</code> <strong class=\"purple\">must</strong> not be a 2D view created from a 3D image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorImageInfo-imageView-01976",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorImageInfo-imageLayout-09425",
          "text": "If <code>imageLayout</code> is <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code>, then the <code>aspectMask</code> used to create <code>imageView</code> <strong class=\"purple\">must</strong> not include either <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> or <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorImageInfo-imageLayout-09426",
          "text": "If <code>imageLayout</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_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, then the <code>aspectMask</code> used to create <code>imageView</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_COLOR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorImageInfo-imageLayout-00344",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorImageInfo-sampler-01564",
          "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 a valid <a href=\"#formats-planes-image-aspect\">multi-planar aspect mask</a> bit",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorImageInfo-mutableComparisonSamplers-04450",
          "text": "If the <code><a href=\"#VK_KHR_portability_subset\">VK_KHR_portability_subset</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>mutableComparisonSamplers</code> is <code>VK_FALSE</code>, then <code>sampler</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkSamplerCreateInfo\">VkSamplerCreateInfo</a>::<code>compareEnable</code> set to <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorImageInfo-commonparent",
          "text": "Both of <code>imageView</code>, and <code>sampler</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkWriteDescriptorSetInlineUniformBlock": {
      "core": [
        {
          "vuid": "VUID-VkWriteDescriptorSetInlineUniformBlock-dataSize-02222",
          "text": "<code>dataSize</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSetInlineUniformBlock-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSetInlineUniformBlock-pData-parameter",
          "text": "<code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSetInlineUniformBlock-dataSize-arraylength",
          "text": "<code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkWriteDescriptorSetAccelerationStructureKHR": {
      "core": [
        {
          "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureKHR-accelerationStructureCount-02236",
          "text": "<code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be equal to <code>descriptorCount</code> in the extended structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureKHR-pAccelerationStructures-03579",
          "text": "Each acceleration structure in <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> have been created with a <code>type</code> of <code>VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR</code> or <code>VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureKHR-pAccelerationStructures-03580",
          "text": "If the <a href=\"#features-nullDescriptor\"><code>nullDescriptor</code></a> feature is not enabled, each element of <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureKHR-pAccelerationStructures-parameter",
          "text": "<code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>accelerationStructureCount</code> valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureKHR-accelerationStructureCount-arraylength",
          "text": "<code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkWriteDescriptorSetAccelerationStructureNV": {
      "core": [
        {
          "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureNV-accelerationStructureCount-03747",
          "text": "<code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be equal to <code>descriptorCount</code> in the extended structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureNV-pAccelerationStructures-03748",
          "text": "Each acceleration structure in <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> have been created with <code>VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureNV-pAccelerationStructures-03749",
          "text": "If the <a href=\"#features-nullDescriptor\"><code>nullDescriptor</code></a> feature is not enabled, each member of <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureNV-pAccelerationStructures-parameter",
          "text": "<code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>accelerationStructureCount</code> valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <a href=\"#VkAccelerationStructureNV\">VkAccelerationStructureNV</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureNV-accelerationStructureCount-arraylength",
          "text": "<code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkCopyDescriptorSet": {
      "core": [
        {
          "vuid": "VUID-VkCopyDescriptorSet-srcBinding-00345",
          "text": "<code>srcBinding</code> <strong class=\"purple\">must</strong> be a valid binding within <code>srcSet</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyDescriptorSet-srcArrayElement-00346",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyDescriptorSet-dstBinding-00347",
          "text": "<code>dstBinding</code> <strong class=\"purple\">must</strong> be a valid binding within <code>dstSet</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyDescriptorSet-dstArrayElement-00348",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyDescriptorSet-dstBinding-02632",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyDescriptorSet-srcSet-00349",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyDescriptorSet-srcBinding-02223",
          "text": "If the descriptor type of the descriptor set binding specified by <code>srcBinding</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK</code>, <code>srcArrayElement</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyDescriptorSet-dstBinding-02224",
          "text": "If the descriptor type of the descriptor set binding specified by <code>dstBinding</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK</code>, <code>dstArrayElement</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyDescriptorSet-srcBinding-02225",
          "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</code>, <code>descriptorCount</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyDescriptorSet-srcSet-01918",
          "text": "If <code>srcSet</code>&#8217;s layout was created with the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> flag set, then <code>dstSet</code>&#8217;s layout <strong class=\"purple\">must</strong> also have been created with the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> flag set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyDescriptorSet-srcSet-04885",
          "text": "If <code>srcSet</code>&#8217;s layout was created without either the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT</code> flag or the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> flag set, then <code>dstSet</code>&#8217;s layout <strong class=\"purple\">must</strong> have been created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> flag set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyDescriptorSet-srcSet-01920",
          "text": "If the descriptor pool from which <code>srcSet</code> was allocated was created with the <code>VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT</code> flag set, then the descriptor pool from which <code>dstSet</code> was allocated <strong class=\"purple\">must</strong> also have been created with the <code>VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT</code> flag set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyDescriptorSet-srcSet-04887",
          "text": "If the descriptor pool from which <code>srcSet</code> was allocated was created without either the <code>VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT</code> flag or the <code>VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT</code> flag set, then the descriptor pool from which <code>dstSet</code> was allocated <strong class=\"purple\">must</strong> have been created without the <code>VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT</code> flag set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyDescriptorSet-dstBinding-02753",
          "text": "If the descriptor type of the descriptor set binding specified by <code>dstBinding</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLER</code>, then <code>dstSet</code> <strong class=\"purple\">must</strong> not have been allocated with a layout that included immutable samplers for <code>dstBinding</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyDescriptorSet-dstSet-04612",
          "text": "If <code>VkDescriptorSetLayoutBinding</code> for <code>dstSet</code> at <code>dstBinding</code> is <code>VK_DESCRIPTOR_TYPE_MUTABLE_EXT</code>, the new active descriptor type <strong class=\"purple\">must</strong> exist in the corresponding <code>pMutableDescriptorTypeLists</code> list for <code>dstBinding</code> if the new active descriptor type is not <code>VK_DESCRIPTOR_TYPE_MUTABLE_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyDescriptorSet-srcSet-04613",
          "text": "If <code>VkDescriptorSetLayoutBinding</code> for <code>srcSet</code> at <code>srcBinding</code> is <code>VK_DESCRIPTOR_TYPE_MUTABLE_EXT</code> and the <code>VkDescriptorSetLayoutBinding</code> for <code>dstSet</code> at <code>dstBinding</code> is not <code>VK_DESCRIPTOR_TYPE_MUTABLE_EXT</code>, the active descriptor type for the source descriptor <strong class=\"purple\">must</strong> match the descriptor type of <code>dstBinding</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyDescriptorSet-dstSet-04614",
          "text": "If <code>VkDescriptorSetLayoutBinding</code> for <code>dstSet</code> at <code>dstBinding</code> is <code>VK_DESCRIPTOR_TYPE_MUTABLE_EXT</code>, and the new active descriptor type is <code>VK_DESCRIPTOR_TYPE_MUTABLE_EXT</code>, the <code>pMutableDescriptorTypeLists</code> for <code>srcBinding</code> and <code>dstBinding</code> <strong class=\"purple\">must</strong> match exactly",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyDescriptorSet-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyDescriptorSet-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyDescriptorSet-srcSet-parameter",
          "text": "<code>srcSet</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorSet\">VkDescriptorSet</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyDescriptorSet-dstSet-parameter",
          "text": "<code>dstSet</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorSet\">VkDescriptorSet</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyDescriptorSet-commonparent",
          "text": "Both of <code>dstSet</code>, and <code>srcSet</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateDescriptorUpdateTemplate": {
      "core": [
        {
          "vuid": "VUID-vkCreateDescriptorUpdateTemplate-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateDescriptorUpdateTemplate-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDescriptorUpdateTemplateCreateInfo\">VkDescriptorUpdateTemplateCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateDescriptorUpdateTemplate-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateDescriptorUpdateTemplate-pDescriptorUpdateTemplate-parameter",
          "text": "<code>pDescriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDescriptorUpdateTemplate\">VkDescriptorUpdateTemplate</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkDescriptorUpdateTemplateCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00350",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00351",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00352",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00353",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-04615",
          "text": "If <code>templateType</code> is <code>VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET</code>, <code>descriptorSetLayout</code> <strong class=\"purple\">must</strong> not contain a binding with type <code>VK_DESCRIPTOR_TYPE_MUTABLE_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-pDescriptorUpdateEntries-parameter",
          "text": "<code>pDescriptorUpdateEntries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorUpdateEntryCount</code> valid <a href=\"#VkDescriptorUpdateTemplateEntry\">VkDescriptorUpdateTemplateEntry</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-parameter",
          "text": "<code>templateType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorUpdateTemplateType\">VkDescriptorUpdateTemplateType</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-descriptorUpdateEntryCount-arraylength",
          "text": "<code>descriptorUpdateEntryCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-commonparent",
          "text": "Both of <code>descriptorSetLayout</code>, and <code>pipelineLayout</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkDescriptorUpdateTemplateEntry": {
      "core": [
        {
          "vuid": "VUID-VkDescriptorUpdateTemplateEntry-dstBinding-00354",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorUpdateTemplateEntry-dstArrayElement-00355",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorUpdateTemplateEntry-descriptor-02226",
          "text": "If <code>descriptor</code> type is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK</code>, <code>dstArrayElement</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorUpdateTemplateEntry-descriptor-02227",
          "text": "If <code>descriptor</code> type is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK</code>, <code>descriptorCount</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorUpdateTemplateEntry-descriptorType-parameter",
          "text": "<code>descriptorType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroyDescriptorUpdateTemplate": {
      "core": [
        {
          "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorSetLayout-00356",
          "text": "If <code>VkAllocationCallbacks</code> were provided when <code>descriptorUpdateTemplate</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorSetLayout-00357",
          "text": "If no <code>VkAllocationCallbacks</code> were provided when <code>descriptorUpdateTemplate</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorUpdateTemplate-parameter",
          "text": "If <code>descriptorUpdateTemplate</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>descriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorUpdateTemplate\">VkDescriptorUpdateTemplate</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorUpdateTemplate-parent",
          "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>",
          "page": "vkspec"
        }
      ]
    },
    "vkUpdateDescriptorSetWithTemplate": {
      "core": [
        {
          "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-pData-01685",
          "text": "<code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to a memory containing one or more valid instances of <a href=\"#VkDescriptorImageInfo\">VkDescriptorImageInfo</a>, <a href=\"#VkDescriptorBufferInfo\">VkDescriptorBufferInfo</a>, or <a href=\"#VkBufferView\">VkBufferView</a> in a layout defined by <code>descriptorUpdateTemplate</code> when it was created with <a href=\"#vkCreateDescriptorUpdateTemplate\">vkCreateDescriptorUpdateTemplate</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-descriptorSet-06995",
          "text": "Host access to <code>descriptorSet</code> <strong class=\"purple\">must</strong> be <a href=\"#fundamentals-threadingbehavior\">externally synchronized</a> unless explicitly denoted otherwise for specific flags",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-descriptorSet-parameter",
          "text": "<code>descriptorSet</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorSet\">VkDescriptorSet</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-descriptorUpdateTemplate-parameter",
          "text": "<code>descriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorUpdateTemplate\">VkDescriptorUpdateTemplate</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-descriptorSet-parent",
          "text": "<code>descriptorSet</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-descriptorUpdateTemplate-parent",
          "text": "<code>descriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdBindDescriptorSets": {
      "core": [
        {
          "vuid": "VUID-vkCmdBindDescriptorSets-pDescriptorSets-00358",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorSets-dynamicOffsetCount-00359",
          "text": "<code>dynamicOffsetCount</code> <strong class=\"purple\">must</strong> be equal to the total number of dynamic descriptors in <code>pDescriptorSets</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorSets-firstSet-00360",
          "text": "The sum of <code>firstSet</code> and <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPipelineLayoutCreateInfo\">VkPipelineLayoutCreateInfo</a>::<code>setLayoutCount</code> provided when <code>layout</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorSets-pDynamicOffsets-01971",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorSets-pDynamicOffsets-01972",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorSets-pDescriptorSets-01979",
          "text": "For each dynamic uniform or storage buffer binding in <code>pDescriptorSets</code>, the sum of the <a href=\"#dynamic-effective-offset\">effective offset</a> and the range of the binding <strong class=\"purple\">must</strong> be less than or equal to the size of the buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorSets-pDescriptorSets-06715",
          "text": "For each dynamic uniform or storage buffer binding in <code>pDescriptorSets</code>, if the range was set with <code>VK_WHOLE_SIZE</code> then <code>pDynamicOffsets</code> which corresponds to the descriptor binding <strong class=\"purple\">must</strong> be 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorSets-pDescriptorSets-04616",
          "text": "Each element of <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> not have been allocated from a <code>VkDescriptorPool</code> with the <code>VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT</code> flag set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorSets-pDescriptorSets-06563",
          "text": "If <a href=\"#features-graphicsPipelineLibrary\"><code>graphicsPipelineLibrary</code></a> is not enabled, each element of <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorSet\">VkDescriptorSet</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorSets-pDescriptorSets-08010",
          "text": "Each element of <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> have been allocated with a <code>VkDescriptorSetLayout</code> which was not created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorSets-pipelineBindPoint-00361",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorSets-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorSets-pipelineBindPoint-parameter",
          "text": "<code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorSets-layout-parameter",
          "text": "<code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorSets-pDescriptorSets-parameter",
          "text": "<code>pDescriptorSets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorSetCount</code> valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <a href=\"#VkDescriptorSet\">VkDescriptorSet</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorSets-pDynamicOffsets-parameter",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorSets-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorSets-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorSets-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorSets-descriptorSetCount-arraylength",
          "text": "<code>descriptorSetCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorSets-commonparent",
          "text": "Each of <code>commandBuffer</code>, <code>layout</code>, and the elements of <code>pDescriptorSets</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdBindDescriptorSets2KHR": {
      "core": [
        {
          "vuid": "VUID-vkCmdBindDescriptorSets2KHR-pBindDescriptorSetsInfo-09467",
          "text": "Each bit in <code>pBindDescriptorSetsInfo-&gt;stageFlags</code> <strong class=\"purple\">must</strong> be a stage supported by the <code>commandBuffer</code>&#8217;s parent <code>VkCommandPool</code>&#8217;s queue family",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorSets2KHR-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorSets2KHR-pBindDescriptorSetsInfo-parameter",
          "text": "<code>pBindDescriptorSetsInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkBindDescriptorSetsInfoKHR\">VkBindDescriptorSetsInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorSets2KHR-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorSets2KHR-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorSets2KHR-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkBindDescriptorSetsInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkBindDescriptorSetsInfoKHR-pDescriptorSets-00358",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindDescriptorSetsInfoKHR-dynamicOffsetCount-00359",
          "text": "<code>dynamicOffsetCount</code> <strong class=\"purple\">must</strong> be equal to the total number of dynamic descriptors in <code>pDescriptorSets</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindDescriptorSetsInfoKHR-firstSet-00360",
          "text": "The sum of <code>firstSet</code> and <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPipelineLayoutCreateInfo\">VkPipelineLayoutCreateInfo</a>::<code>setLayoutCount</code> provided when <code>layout</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindDescriptorSetsInfoKHR-pDynamicOffsets-01971",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindDescriptorSetsInfoKHR-pDynamicOffsets-01972",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindDescriptorSetsInfoKHR-pDescriptorSets-01979",
          "text": "For each dynamic uniform or storage buffer binding in <code>pDescriptorSets</code>, the sum of the <a href=\"#dynamic-effective-offset\">effective offset</a> and the range of the binding <strong class=\"purple\">must</strong> be less than or equal to the size of the buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindDescriptorSetsInfoKHR-pDescriptorSets-06715",
          "text": "For each dynamic uniform or storage buffer binding in <code>pDescriptorSets</code>, if the range was set with <code>VK_WHOLE_SIZE</code> then <code>pDynamicOffsets</code> which corresponds to the descriptor binding <strong class=\"purple\">must</strong> be 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindDescriptorSetsInfoKHR-pDescriptorSets-04616",
          "text": "Each element of <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> not have been allocated from a <code>VkDescriptorPool</code> with the <code>VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT</code> flag set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindDescriptorSetsInfoKHR-pDescriptorSets-06563",
          "text": "If <a href=\"#features-graphicsPipelineLibrary\"><code>graphicsPipelineLibrary</code></a> is not enabled, each element of <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorSet\">VkDescriptorSet</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindDescriptorSetsInfoKHR-pDescriptorSets-08010",
          "text": "Each element of <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> have been allocated with a <code>VkDescriptorSetLayout</code> which was not created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindDescriptorSetsInfoKHR-None-09495",
          "text": "If the <a href=\"#features-dynamicPipelineLayout\"><code>dynamicPipelineLayout</code></a> feature is not enabled, <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindDescriptorSetsInfoKHR-layout-09496",
          "text": "If <code>layout</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a valid <a href=\"#VkPipelineLayoutCreateInfo\">VkPipelineLayoutCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindDescriptorSetsInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindDescriptorSetsInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineLayoutCreateInfo\">VkPipelineLayoutCreateInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindDescriptorSetsInfoKHR-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindDescriptorSetsInfoKHR-stageFlags-parameter",
          "text": "<code>stageFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindDescriptorSetsInfoKHR-stageFlags-requiredbitmask",
          "text": "<code>stageFlags</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindDescriptorSetsInfoKHR-layout-parameter",
          "text": "If <code>layout</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindDescriptorSetsInfoKHR-pDescriptorSets-parameter",
          "text": "<code>pDescriptorSets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorSetCount</code> valid <a href=\"#VkDescriptorSet\">VkDescriptorSet</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindDescriptorSetsInfoKHR-pDynamicOffsets-parameter",
          "text": "If <code>dynamicOffsetCount</code> is not <code>0</code>, and <code>pDynamicOffsets</code> is not <code>NULL</code>, <code>pDynamicOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dynamicOffsetCount</code> or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <code>uint32_t</code> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindDescriptorSetsInfoKHR-descriptorSetCount-arraylength",
          "text": "<code>descriptorSetCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindDescriptorSetsInfoKHR-commonparent",
          "text": "Both of <code>layout</code>, and the elements of <code>pDescriptorSets</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdPushDescriptorSetKHR": {
      "core": [
        {
          "vuid": "VUID-vkCmdPushDescriptorSetKHR-set-00364",
          "text": "<code>set</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkPipelineLayoutCreateInfo\">VkPipelineLayoutCreateInfo</a>::<code>setLayoutCount</code> provided when <code>layout</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushDescriptorSetKHR-set-00365",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushDescriptorSetKHR-pDescriptorWrites-06494",
          "text": "For each element <span class=\"eq\">i</span> where <code>pDescriptorWrites</code>[i].<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>pDescriptorWrites</code>[i].<code>pImageInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pDescriptorWrites</code>[i].<code>descriptorCount</code> valid <code>VkDescriptorImageInfo</code> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushDescriptorSetKHR-pipelineBindPoint-00363",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushDescriptorSetKHR-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushDescriptorSetKHR-pipelineBindPoint-parameter",
          "text": "<code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushDescriptorSetKHR-layout-parameter",
          "text": "<code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushDescriptorSetKHR-pDescriptorWrites-parameter",
          "text": "<code>pDescriptorWrites</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorWriteCount</code> valid <a href=\"#VkWriteDescriptorSet\">VkWriteDescriptorSet</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushDescriptorSetKHR-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushDescriptorSetKHR-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushDescriptorSetKHR-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushDescriptorSetKHR-descriptorWriteCount-arraylength",
          "text": "<code>descriptorWriteCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushDescriptorSetKHR-commonparent",
          "text": "Both of <code>commandBuffer</code>, and <code>layout</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdPushDescriptorSet2KHR": {
      "core": [
        {
          "vuid": "VUID-vkCmdPushDescriptorSet2KHR-pPushDescriptorSetInfo-09468",
          "text": "Each bit in <code>pPushDescriptorSetInfo-&gt;stageFlags</code> <strong class=\"purple\">must</strong> be a stage supported by the <code>commandBuffer</code>&#8217;s parent <code>VkCommandPool</code>&#8217;s queue family",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushDescriptorSet2KHR-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushDescriptorSet2KHR-pPushDescriptorSetInfo-parameter",
          "text": "<code>pPushDescriptorSetInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPushDescriptorSetInfoKHR\">VkPushDescriptorSetInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushDescriptorSet2KHR-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushDescriptorSet2KHR-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushDescriptorSet2KHR-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkPushDescriptorSetInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkPushDescriptorSetInfoKHR-set-00364",
          "text": "<code>set</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkPipelineLayoutCreateInfo\">VkPipelineLayoutCreateInfo</a>::<code>setLayoutCount</code> provided when <code>layout</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushDescriptorSetInfoKHR-set-00365",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushDescriptorSetInfoKHR-pDescriptorWrites-06494",
          "text": "For each element <span class=\"eq\">i</span> where <code>pDescriptorWrites</code>[i].<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>pDescriptorWrites</code>[i].<code>pImageInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pDescriptorWrites</code>[i].<code>descriptorCount</code> valid <code>VkDescriptorImageInfo</code> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushDescriptorSetInfoKHR-None-09495",
          "text": "If the <a href=\"#features-dynamicPipelineLayout\"><code>dynamicPipelineLayout</code></a> feature is not enabled, <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushDescriptorSetInfoKHR-layout-09496",
          "text": "If <code>layout</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a valid <a href=\"#VkPipelineLayoutCreateInfo\">VkPipelineLayoutCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushDescriptorSetInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushDescriptorSetInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineLayoutCreateInfo\">VkPipelineLayoutCreateInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushDescriptorSetInfoKHR-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushDescriptorSetInfoKHR-stageFlags-parameter",
          "text": "<code>stageFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushDescriptorSetInfoKHR-stageFlags-requiredbitmask",
          "text": "<code>stageFlags</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushDescriptorSetInfoKHR-layout-parameter",
          "text": "If <code>layout</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushDescriptorSetInfoKHR-pDescriptorWrites-parameter",
          "text": "<code>pDescriptorWrites</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorWriteCount</code> valid <a href=\"#VkWriteDescriptorSet\">VkWriteDescriptorSet</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushDescriptorSetInfoKHR-descriptorWriteCount-arraylength",
          "text": "<code>descriptorWriteCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdPushDescriptorSetWithTemplateKHR": {
      "core": [
        {
          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-00366",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-pData-01686",
          "text": "<code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to a memory containing one or more valid instances of <a href=\"#VkDescriptorImageInfo\">VkDescriptorImageInfo</a>, <a href=\"#VkDescriptorBufferInfo\">VkDescriptorBufferInfo</a>, or <a href=\"#VkBufferView\">VkBufferView</a> in a layout defined by <code>descriptorUpdateTemplate</code> when it was created with <a href=\"#vkCreateDescriptorUpdateTemplate\">vkCreateDescriptorUpdateTemplate</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-layout-07993",
          "text": "<code>layout</code> <strong class=\"purple\">must</strong> be compatible with the layout used to create <code>descriptorUpdateTemplate</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-descriptorUpdateTemplate-07994",
          "text": "<code>descriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> have been created with a <code>templateType</code> of <code>VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-set-07995",
          "text": "<code>set</code> <strong class=\"purple\">must</strong> be the same value used to create <code>descriptorUpdateTemplate</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-set-07304",
          "text": "<code>set</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkPipelineLayoutCreateInfo\">VkPipelineLayoutCreateInfo</a>::<code>setLayoutCount</code> provided when <code>layout</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-set-07305",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-descriptorUpdateTemplate-parameter",
          "text": "<code>descriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorUpdateTemplate\">VkDescriptorUpdateTemplate</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-layout-parameter",
          "text": "<code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commonparent",
          "text": "Each of <code>commandBuffer</code>, <code>descriptorUpdateTemplate</code>, and <code>layout</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdPushDescriptorSetWithTemplate2KHR": {
      "core": [
        {
          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplate2KHR-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplate2KHR-pPushDescriptorSetWithTemplateInfo-parameter",
          "text": "<code>pPushDescriptorSetWithTemplateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPushDescriptorSetWithTemplateInfoKHR\">VkPushDescriptorSetWithTemplateInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplate2KHR-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplate2KHR-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplate2KHR-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkPushDescriptorSetWithTemplateInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkPushDescriptorSetWithTemplateInfoKHR-commandBuffer-00366",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushDescriptorSetWithTemplateInfoKHR-pData-01686",
          "text": "<code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to a memory containing one or more valid instances of <a href=\"#VkDescriptorImageInfo\">VkDescriptorImageInfo</a>, <a href=\"#VkDescriptorBufferInfo\">VkDescriptorBufferInfo</a>, or <a href=\"#VkBufferView\">VkBufferView</a> in a layout defined by <code>descriptorUpdateTemplate</code> when it was created with <a href=\"#vkCreateDescriptorUpdateTemplate\">vkCreateDescriptorUpdateTemplate</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushDescriptorSetWithTemplateInfoKHR-layout-07993",
          "text": "<code>layout</code> <strong class=\"purple\">must</strong> be compatible with the layout used to create <code>descriptorUpdateTemplate</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushDescriptorSetWithTemplateInfoKHR-descriptorUpdateTemplate-07994",
          "text": "<code>descriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> have been created with a <code>templateType</code> of <code>VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushDescriptorSetWithTemplateInfoKHR-set-07995",
          "text": "<code>set</code> <strong class=\"purple\">must</strong> be the same value used to create <code>descriptorUpdateTemplate</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushDescriptorSetWithTemplateInfoKHR-set-07304",
          "text": "<code>set</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkPipelineLayoutCreateInfo\">VkPipelineLayoutCreateInfo</a>::<code>setLayoutCount</code> provided when <code>layout</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushDescriptorSetWithTemplateInfoKHR-set-07305",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushDescriptorSetWithTemplateInfoKHR-None-09495",
          "text": "If the <a href=\"#features-dynamicPipelineLayout\"><code>dynamicPipelineLayout</code></a> feature is not enabled, <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushDescriptorSetWithTemplateInfoKHR-layout-09496",
          "text": "If <code>layout</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a valid <a href=\"#VkPipelineLayoutCreateInfo\">VkPipelineLayoutCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushDescriptorSetWithTemplateInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushDescriptorSetWithTemplateInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineLayoutCreateInfo\">VkPipelineLayoutCreateInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushDescriptorSetWithTemplateInfoKHR-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushDescriptorSetWithTemplateInfoKHR-descriptorUpdateTemplate-parameter",
          "text": "<code>descriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorUpdateTemplate\">VkDescriptorUpdateTemplate</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushDescriptorSetWithTemplateInfoKHR-layout-parameter",
          "text": "If <code>layout</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushDescriptorSetWithTemplateInfoKHR-pData-parameter",
          "text": "<code>pData</code> <strong class=\"purple\">must</strong> be a pointer value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushDescriptorSetWithTemplateInfoKHR-commonparent",
          "text": "Both of <code>descriptorUpdateTemplate</code>, and <code>layout</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdPushConstants": {
      "core": [
        {
          "vuid": "VUID-vkCmdPushConstants-offset-01795",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushConstants-offset-01796",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushConstants-offset-00368",
          "text": "<code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushConstants-size-00369",
          "text": "<code>size</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushConstants-offset-00370",
          "text": "<code>offset</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxPushConstantsSize</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushConstants-size-00371",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushConstants-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushConstants-layout-parameter",
          "text": "<code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushConstants-stageFlags-parameter",
          "text": "<code>stageFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushConstants-stageFlags-requiredbitmask",
          "text": "<code>stageFlags</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushConstants-pValues-parameter",
          "text": "<code>pValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>size</code> bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushConstants-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushConstants-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushConstants-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushConstants-size-arraylength",
          "text": "<code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushConstants-commonparent",
          "text": "Both of <code>commandBuffer</code>, and <code>layout</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdPushConstants2KHR": {
      "core": [
        {
          "vuid": "VUID-vkCmdPushConstants2KHR-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushConstants2KHR-pPushConstantsInfo-parameter",
          "text": "<code>pPushConstantsInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPushConstantsInfoKHR\">VkPushConstantsInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushConstants2KHR-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushConstants2KHR-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPushConstants2KHR-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkPushConstantsInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkPushConstantsInfoKHR-offset-01795",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushConstantsInfoKHR-offset-01796",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushConstantsInfoKHR-offset-00368",
          "text": "<code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushConstantsInfoKHR-size-00369",
          "text": "<code>size</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushConstantsInfoKHR-offset-00370",
          "text": "<code>offset</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxPushConstantsSize</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushConstantsInfoKHR-size-00371",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushConstantsInfoKHR-None-09495",
          "text": "If the <a href=\"#features-dynamicPipelineLayout\"><code>dynamicPipelineLayout</code></a> feature is not enabled, <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushConstantsInfoKHR-layout-09496",
          "text": "If <code>layout</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a valid <a href=\"#VkPipelineLayoutCreateInfo\">VkPipelineLayoutCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushConstantsInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushConstantsInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineLayoutCreateInfo\">VkPipelineLayoutCreateInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushConstantsInfoKHR-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushConstantsInfoKHR-layout-parameter",
          "text": "If <code>layout</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushConstantsInfoKHR-stageFlags-parameter",
          "text": "<code>stageFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushConstantsInfoKHR-stageFlags-requiredbitmask",
          "text": "<code>stageFlags</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushConstantsInfoKHR-pValues-parameter",
          "text": "<code>pValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>size</code> bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPushConstantsInfoKHR-size-arraylength",
          "text": "<code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetBufferDeviceAddress": {
      "core": [
        {
          "vuid": "VUID-vkGetBufferDeviceAddress-bufferDeviceAddress-03324",
          "text": "The <a href=\"#features-bufferDeviceAddress\"><code>bufferDeviceAddress</code></a> or <a href=\"#features-bufferDeviceAddressEXT\"><code>VkPhysicalDeviceBufferDeviceAddressFeaturesEXT</code>::<code>bufferDeviceAddress</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetBufferDeviceAddress-device-03325",
          "text": "If <code>device</code> was created with multiple physical devices, then the <a href=\"#features-bufferDeviceAddressMultiDevice\"><code>bufferDeviceAddressMultiDevice</code></a> or <a href=\"#features-bufferDeviceAddressMultiDeviceEXT\"><code>VkPhysicalDeviceBufferDeviceAddressFeaturesEXT</code>::<code>bufferDeviceAddressMultiDevice</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetBufferDeviceAddress-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetBufferDeviceAddress-pInfo-parameter",
          "text": "<code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkBufferDeviceAddressInfo\">VkBufferDeviceAddressInfo</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkBufferDeviceAddressInfo": {
      "core": [
        {
          "vuid": "VUID-VkBufferDeviceAddressInfo-buffer-02600",
          "text": "If <code>buffer</code> is non-sparse and was not created with the <code>VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT</code> flag, then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferDeviceAddressInfo-buffer-02601",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferDeviceAddressInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferDeviceAddressInfo-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferDeviceAddressInfo-buffer-parameter",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "vkGetBufferOpaqueCaptureAddress": {
      "core": [
        {
          "vuid": "VUID-vkGetBufferOpaqueCaptureAddress-None-03326",
          "text": "The <a href=\"#features-bufferDeviceAddress\"><code>bufferDeviceAddress</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetBufferOpaqueCaptureAddress-device-03327",
          "text": "If <code>device</code> was created with multiple physical devices, then the <a href=\"#features-bufferDeviceAddressMultiDevice\"><code>bufferDeviceAddressMultiDevice</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetBufferOpaqueCaptureAddress-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetBufferOpaqueCaptureAddress-pInfo-parameter",
          "text": "<code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkBufferDeviceAddressInfo\">VkBufferDeviceAddressInfo</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkStridedDeviceAddressRegionKHR": {
      "core": [
        {
          "vuid": "VUID-VkStridedDeviceAddressRegionKHR-size-04631",
          "text": "If <code>size</code> is not zero, all addresses between <code>deviceAddress</code> and <span class=\"eq\"><code>deviceAddress</code> +  <code>size</code> - 1</span> <strong class=\"purple\">must</strong> be in the buffer device address range of the same buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkStridedDeviceAddressRegionKHR-size-04632",
          "text": "If <code>size</code> is not zero, <code>stride</code> <strong class=\"purple\">must</strong> be less than or equal to the size of the buffer from which <code>deviceAddress</code> was queried",
          "page": "vkspec"
        }
      ]
    },
    "vkGetDescriptorSetLayoutSizeEXT": {
      "core": [
        {
          "vuid": "VUID-vkGetDescriptorSetLayoutSizeEXT-None-08011",
          "text": "The <a href=\"#features-descriptorBuffer\"><code>descriptorBuffer</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDescriptorSetLayoutSizeEXT-layout-08012",
          "text": "<code>layout</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code> flag set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDescriptorSetLayoutSizeEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDescriptorSetLayoutSizeEXT-layout-parameter",
          "text": "<code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDescriptorSetLayoutSizeEXT-pLayoutSizeInBytes-parameter",
          "text": "<code>pLayoutSizeInBytes</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDeviceSize\">VkDeviceSize</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDescriptorSetLayoutSizeEXT-layout-parent",
          "text": "<code>layout</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetDescriptorSetLayoutBindingOffsetEXT": {
      "core": [
        {
          "vuid": "VUID-vkGetDescriptorSetLayoutBindingOffsetEXT-None-08013",
          "text": "The <a href=\"#features-descriptorBuffer\"><code>descriptorBuffer</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDescriptorSetLayoutBindingOffsetEXT-layout-08014",
          "text": "<code>layout</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code> flag set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDescriptorSetLayoutBindingOffsetEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDescriptorSetLayoutBindingOffsetEXT-layout-parameter",
          "text": "<code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDescriptorSetLayoutBindingOffsetEXT-pOffset-parameter",
          "text": "<code>pOffset</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDeviceSize\">VkDeviceSize</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDescriptorSetLayoutBindingOffsetEXT-layout-parent",
          "text": "<code>layout</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetDescriptorEXT": {
      "core": [
        {
          "vuid": "VUID-vkGetDescriptorEXT-None-08015",
          "text": "The <a href=\"#features-descriptorBuffer\"><code>descriptorBuffer</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDescriptorEXT-dataSize-08125",
          "text": "If <code>pDescriptorInfo-&gt;type</code> is not <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> or <code>pDescriptorInfo-&gt;data.pCombinedImageSampler</code> has an <code>imageView</code> member that was not created with a <code>VkSamplerYcbcrConversionInfo</code> structure in its <code>pNext</code> chain, <code>dataSize</code> <strong class=\"purple\">must</strong> equal the size of a descriptor of type <a href=\"#VkDescriptorGetInfoEXT\">VkDescriptorGetInfoEXT</a>::<code>type</code> determined by the value in <a href=\"#VkPhysicalDeviceDescriptorBufferPropertiesEXT\">VkPhysicalDeviceDescriptorBufferPropertiesEXT</a> , or determined by <a href=\"#VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT\">VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT</a>::<code>combinedImageSamplerDensityMapDescriptorSize</code> if <code>pDescriptorInfo</code> specifies a <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> whose <a href=\"#VkSampler\">VkSampler</a> was created with <code>VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT</code> set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDescriptorEXT-descriptorType-09469",
          "text": "If <code>pDescriptorInfo-&gt;type</code> is <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> and <code>pDescriptorInfo-&gt;data.pCombinedImageSampler</code> has an <code>imageView</code> member that was created with a <code>VkSamplerYcbcrConversionInfo</code> structure in its <code>pNext</code> chain, <code>dataSize</code> <strong class=\"purple\">must</strong> equal the size of <a href=\"#VkPhysicalDeviceDescriptorBufferPropertiesEXT\">VkPhysicalDeviceDescriptorBufferPropertiesEXT</a>::<code>combinedImageSamplerDescriptorSize</code> times <a href=\"#VkSamplerYcbcrConversionImageFormatProperties\">VkSamplerYcbcrConversionImageFormatProperties</a>::<code>combinedImageSamplerDescriptorCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDescriptorEXT-pDescriptorInfo-09507",
          "text": "If <code>pDescriptorInfo-&gt;type</code> is <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> and it has a <code>imageView</code> that is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> then <code>dataSize</code> <strong class=\"purple\">must</strong> be equal to the size of <a href=\"#VkPhysicalDeviceDescriptorBufferPropertiesEXT\">VkPhysicalDeviceDescriptorBufferPropertiesEXT</a>::<code>combinedImageSamplerDescriptorSize</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDescriptorEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDescriptorEXT-pDescriptorInfo-parameter",
          "text": "<code>pDescriptorInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDescriptorGetInfoEXT\">VkDescriptorGetInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDescriptorEXT-pDescriptor-parameter",
          "text": "<code>pDescriptor</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDescriptorEXT-dataSize-arraylength",
          "text": "<code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkDescriptorGetInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkDescriptorGetInfoEXT-type-08018",
          "text": "<code>type</code> <strong class=\"purple\">must</strong> not be <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> or <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorGetInfoEXT-type-08019",
          "text": "If <code>type</code> is <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, the <code>pCombinedImageSampler-&gt;sampler</code> member of <code>data</code> <strong class=\"purple\">must</strong> be a <a href=\"#VkSampler\">VkSampler</a> created on <code>device</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorGetInfoEXT-type-08020",
          "text": "If <code>type</code> is <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, the <code>pCombinedImageSampler-&gt;imageView</code> member of <code>data</code> <strong class=\"purple\">must</strong> be a <a href=\"#VkImageView\">VkImageView</a> created on <code>device</code>, or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorGetInfoEXT-type-08021",
          "text": "If <code>type</code> is <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code>, the <code>pInputAttachmentImage-&gt;imageView</code> member of <code>data</code> <strong class=\"purple\">must</strong> be a <a href=\"#VkImageView\">VkImageView</a> created on <code>device</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorGetInfoEXT-type-08022",
          "text": "If <code>type</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, and if <code>pSampledImage</code> is not <code>NULL</code>, the <code>pSampledImage-&gt;imageView</code> member of <code>data</code> <strong class=\"purple\">must</strong> be a <a href=\"#VkImageView\">VkImageView</a> created on <code>device</code>, or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorGetInfoEXT-type-08023",
          "text": "If <code>type</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, and if <code>pStorageImage</code> is not <code>NULL</code>, the <code>pStorageImage-&gt;imageView</code> member of <code>data</code> <strong class=\"purple\">must</strong> be a <a href=\"#VkImageView\">VkImageView</a> created on <code>device</code>, or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorGetInfoEXT-type-08024",
          "text": "If <code>type</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code>, <code>pUniformTexelBuffer</code> is not <code>NULL</code> and <code>pUniformTexelBuffer-&gt;address</code> is not zero, <code>pUniformTexelBuffer-&gt;address</code> <strong class=\"purple\">must</strong> be an address within a <a href=\"#VkBuffer\">VkBuffer</a> created on <code>device</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorGetInfoEXT-type-08025",
          "text": "If <code>type</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code>, <code>pStorageTexelBuffer</code> is not <code>NULL</code> and <code>pStorageTexelBuffer-&gt;address</code> is not zero, <code>pStorageTexelBuffer-&gt;address</code> <strong class=\"purple\">must</strong> be an address within a <a href=\"#VkBuffer\">VkBuffer</a> created on <code>device</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorGetInfoEXT-type-08026",
          "text": "If <code>type</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code>, <code>pUniformBuffer</code> is not <code>NULL</code> and <code>pUniformBuffer-&gt;address</code> is not zero, <code>pUniformBuffer-&gt;address</code> <strong class=\"purple\">must</strong> be an address within a <a href=\"#VkBuffer\">VkBuffer</a> created on <code>device</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorGetInfoEXT-type-08027",
          "text": "If <code>type</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code>, <code>pStorageBuffer</code> is not <code>NULL</code> and <code>pStorageBuffer-&gt;address</code> is not zero, <code>pStorageBuffer-&gt;address</code> <strong class=\"purple\">must</strong> be an address within a <a href=\"#VkBuffer\">VkBuffer</a> created on <code>device</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorGetInfoEXT-type-09427",
          "text": "If <code>type</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code>, <code>pUniformBuffer</code> is not <code>NULL</code> , the number of texel buffer elements given by <span class=\"eq\">(⌊<code>pUniformBuffer-&gt;range</code> / (texel block size)⌋ × (texels per block))</span> where texel block size and texels per block are as defined in the <a href=\"#formats-compatibility\">Compatible Formats</a> table for <code>pUniformBuffer-&gt;format</code>, <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxTexelBufferElements</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorGetInfoEXT-type-09428",
          "text": "If <code>type</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code>, <code>pStorageBuffer</code> is not <code>NULL</code> , the number of texel buffer elements given by <span class=\"eq\">(⌊<code>pStorageBuffer-&gt;range</code> / (texel block size)⌋ × (texels per block))</span> where texel block size and texels per block are as defined in the <a href=\"#formats-compatibility\">Compatible Formats</a> table for <code>pStorageBuffer-&gt;format</code>, <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxTexelBufferElements</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorGetInfoEXT-type-08028",
          "text": "If <code>type</code> is <code>VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR</code> and <code>accelerationStructure</code> is not <code>0</code>, <code>accelerationStructure</code> <strong class=\"purple\">must</strong> contain the address of a <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> created on <code>device</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorGetInfoEXT-type-08029",
          "text": "If <code>type</code> is <code>VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV</code> and <code>accelerationStructure</code> is not <code>0</code>, <code>accelerationStructure</code> <strong class=\"purple\">must</strong> contain the handle of a <a href=\"#VkAccelerationStructureNV\">VkAccelerationStructureNV</a> created on <code>device</code>, returned by <a href=\"#vkGetAccelerationStructureHandleNV\">vkGetAccelerationStructureHandleNV</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorGetInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorGetInfoEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorGetInfoEXT-type-parameter",
          "text": "<code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorGetInfoEXT-pSampler-parameter",
          "text": "If <code>type</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLER</code>, the <code>pSampler</code> member of <code>data</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSampler\">VkSampler</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorGetInfoEXT-pCombinedImageSampler-parameter",
          "text": "If <code>type</code> is <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, the <code>pCombinedImageSampler</code> member of <code>data</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDescriptorImageInfo\">VkDescriptorImageInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorGetInfoEXT-pInputAttachmentImage-parameter",
          "text": "If <code>type</code> is <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code>, the <code>pInputAttachmentImage</code> member of <code>data</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDescriptorImageInfo\">VkDescriptorImageInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorGetInfoEXT-pSampledImage-parameter",
          "text": "If <code>type</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, and if <code>pSampledImage</code> is not <code>NULL</code>, the <code>pSampledImage</code> member of <code>data</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDescriptorImageInfo\">VkDescriptorImageInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorGetInfoEXT-pStorageImage-parameter",
          "text": "If <code>type</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, and if <code>pStorageImage</code> is not <code>NULL</code>, the <code>pStorageImage</code> member of <code>data</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDescriptorImageInfo\">VkDescriptorImageInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorGetInfoEXT-pUniformTexelBuffer-parameter",
          "text": "If <code>type</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code>, and if <code>pUniformTexelBuffer</code> is not <code>NULL</code>, the <code>pUniformTexelBuffer</code> member of <code>data</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDescriptorAddressInfoEXT\">VkDescriptorAddressInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorGetInfoEXT-pStorageTexelBuffer-parameter",
          "text": "If <code>type</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code>, and if <code>pStorageTexelBuffer</code> is not <code>NULL</code>, the <code>pStorageTexelBuffer</code> member of <code>data</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDescriptorAddressInfoEXT\">VkDescriptorAddressInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorGetInfoEXT-pUniformBuffer-parameter",
          "text": "If <code>type</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code>, and if <code>pUniformBuffer</code> is not <code>NULL</code>, the <code>pUniformBuffer</code> member of <code>data</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDescriptorAddressInfoEXT\">VkDescriptorAddressInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorGetInfoEXT-pStorageBuffer-parameter",
          "text": "If <code>type</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code>, and if <code>pStorageBuffer</code> is not <code>NULL</code>, the <code>pStorageBuffer</code> member of <code>data</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDescriptorAddressInfoEXT\">VkDescriptorAddressInfoEXT</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkDescriptorDataEXT": {
      "core": [
        {
          "vuid": "VUID-VkDescriptorDataEXT-type-08030",
          "text": "If <a href=\"#VkDescriptorGetInfoEXT\">VkDescriptorGetInfoEXT</a>:<code>type</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code>, and <code>pUniformBuffer-&gt;address</code> is the address 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorDataEXT-type-08031",
          "text": "If <a href=\"#VkDescriptorGetInfoEXT\">VkDescriptorGetInfoEXT</a>:<code>type</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code>, and <code>pStorageBuffer-&gt;address</code> is the address 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorDataEXT-type-08032",
          "text": "If <a href=\"#VkDescriptorGetInfoEXT\">VkDescriptorGetInfoEXT</a>:<code>type</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code>, and <code>pUniformTexelBuffer-&gt;address</code> is the address 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorDataEXT-type-08033",
          "text": "If <a href=\"#VkDescriptorGetInfoEXT\">VkDescriptorGetInfoEXT</a>:<code>type</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code>, and <code>pStorageTexelBuffer-&gt;address</code> is the address 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorDataEXT-type-08034",
          "text": "If <a href=\"#VkDescriptorGetInfoEXT\">VkDescriptorGetInfoEXT</a>:<code>type</code> is <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, and the <a href=\"#features-nullDescriptor\"><code>nullDescriptor</code></a> feature is not enabled, <code>pCombinedImageSampler-&gt;imageView</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorDataEXT-type-08035",
          "text": "If <a href=\"#VkDescriptorGetInfoEXT\">VkDescriptorGetInfoEXT</a>:<code>type</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, and the <a href=\"#features-nullDescriptor\"><code>nullDescriptor</code></a> feature is not enabled, <code>pSampledImage</code> <strong class=\"purple\">must</strong> not be <code>NULL</code> and <code>pSampledImage-&gt;imageView</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorDataEXT-type-08036",
          "text": "If <a href=\"#VkDescriptorGetInfoEXT\">VkDescriptorGetInfoEXT</a>:<code>type</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, and the <a href=\"#features-nullDescriptor\"><code>nullDescriptor</code></a> feature is not enabled, <code>pStorageImage</code> <strong class=\"purple\">must</strong> not be <code>NULL</code> and <code>pStorageImage-&gt;imageView</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorDataEXT-type-08037",
          "text": "If <a href=\"#VkDescriptorGetInfoEXT\">VkDescriptorGetInfoEXT</a>:<code>type</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code>, and the <a href=\"#features-nullDescriptor\"><code>nullDescriptor</code></a> feature is not enabled, <code>pUniformTexelBuffer</code> <strong class=\"purple\">must</strong> not be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorDataEXT-type-08038",
          "text": "If <a href=\"#VkDescriptorGetInfoEXT\">VkDescriptorGetInfoEXT</a>:<code>type</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code>, and the <a href=\"#features-nullDescriptor\"><code>nullDescriptor</code></a> feature is not enabled, <code>pStorageTexelBuffer</code> <strong class=\"purple\">must</strong> not be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorDataEXT-type-08039",
          "text": "If <a href=\"#VkDescriptorGetInfoEXT\">VkDescriptorGetInfoEXT</a>:<code>type</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code>, and the <a href=\"#features-nullDescriptor\"><code>nullDescriptor</code></a> feature is not enabled, <code>pUniformBuffer</code> <strong class=\"purple\">must</strong> not be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorDataEXT-type-08040",
          "text": "If <a href=\"#VkDescriptorGetInfoEXT\">VkDescriptorGetInfoEXT</a>:<code>type</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code>, and the <a href=\"#features-nullDescriptor\"><code>nullDescriptor</code></a> feature is not enabled, <code>pStorageBuffer</code> <strong class=\"purple\">must</strong> not be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorDataEXT-type-08041",
          "text": "If <a href=\"#VkDescriptorGetInfoEXT\">VkDescriptorGetInfoEXT</a>:<code>type</code> is <code>VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR</code>, and the <a href=\"#features-nullDescriptor\"><code>nullDescriptor</code></a> feature is not enabled, <code>accelerationStructure</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorDataEXT-type-08042",
          "text": "If <a href=\"#VkDescriptorGetInfoEXT\">VkDescriptorGetInfoEXT</a>:<code>type</code> is <code>VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV</code>, and the <a href=\"#features-nullDescriptor\"><code>nullDescriptor</code></a> feature is not enabled, <code>accelerationStructure</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkDescriptorAddressInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkDescriptorAddressInfoEXT-None-09508",
          "text": "If <code>address</code> is not zero, and the descriptor is of type <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code>, then <code>format</code> <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorAddressInfoEXT-address-08043",
          "text": "If the <a href=\"#features-nullDescriptor\"><code>nullDescriptor</code></a> feature is not enabled, <code>address</code> <strong class=\"purple\">must</strong> not be zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorAddressInfoEXT-nullDescriptor-08938",
          "text": "If <code>address</code> is zero, <code>range</code> <strong class=\"purple\">must</strong> be <code>VK_WHOLE_SIZE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorAddressInfoEXT-nullDescriptor-08939",
          "text": "If <code>address</code> is not zero, <code>range</code> <strong class=\"purple\">must</strong> not be <code>VK_WHOLE_SIZE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorAddressInfoEXT-None-08044",
          "text": "If <code>address</code> is not zero, <code>address</code> <strong class=\"purple\">must</strong> be a valid device address at an offset within a <a href=\"#VkBuffer\">VkBuffer</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorAddressInfoEXT-range-08045",
          "text": "<code>range</code> <strong class=\"purple\">must</strong> be less than or equal to the size of the buffer containing <code>address</code> minus the offset of <code>address</code> from the base address of the buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorAddressInfoEXT-range-08940",
          "text": "<code>range</code> <strong class=\"purple\">must</strong> not be zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorAddressInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorAddressInfoEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorAddressInfoEXT-format-parameter",
          "text": "<code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdBindDescriptorBuffersEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdBindDescriptorBuffersEXT-None-08047",
          "text": "The <a href=\"#features-descriptorBuffer\"><code>descriptorBuffer</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorBuffersEXT-maxSamplerDescriptorBufferBindings-08048",
          "text": "There <strong class=\"purple\">must</strong> be no more than <a href=\"#VkPhysicalDeviceDescriptorBufferPropertiesEXT\">VkPhysicalDeviceDescriptorBufferPropertiesEXT</a>::<code>maxSamplerDescriptorBufferBindings</code> descriptor buffers containing sampler descriptor data bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorBuffersEXT-maxResourceDescriptorBufferBindings-08049",
          "text": "There <strong class=\"purple\">must</strong> be no more than <a href=\"#VkPhysicalDeviceDescriptorBufferPropertiesEXT\">VkPhysicalDeviceDescriptorBufferPropertiesEXT</a>::<code>maxResourceDescriptorBufferBindings</code> descriptor buffers containing resource descriptor data bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorBuffersEXT-None-08050",
          "text": "There <strong class=\"purple\">must</strong> be no more than <code>1</code> descriptor buffer bound that was created with the <code>VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorBuffersEXT-bufferCount-08051",
          "text": "<code>bufferCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceDescriptorBufferPropertiesEXT\">VkPhysicalDeviceDescriptorBufferPropertiesEXT</a>::<code>maxDescriptorBufferBindings</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorBuffersEXT-pBindingInfos-08052",
          "text": "For any element of <code>pBindingInfos</code>, if the buffer from which <code>address</code> was queried is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorBuffersEXT-pBindingInfos-08053",
          "text": "For any element of <code>pBindingInfos</code>, the buffer from which <code>address</code> was queried <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT</code> bit set if it contains sampler descriptor data",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorBuffersEXT-pBindingInfos-08054",
          "text": "For any element of <code>pBindingInfos</code>, the buffer from which <code>address</code> was queried <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT</code> bit set if it contains resource descriptor data",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorBuffersEXT-pBindingInfos-08055",
          "text": "For any element of <code>pBindingInfos</code>, <code>usage</code> <strong class=\"purple\">must</strong> match the buffer from which <code>address</code> was queried",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorBuffersEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorBuffersEXT-pBindingInfos-parameter",
          "text": "<code>pBindingInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bufferCount</code> valid <a href=\"#VkDescriptorBufferBindingInfoEXT\">VkDescriptorBufferBindingInfoEXT</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorBuffersEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorBuffersEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorBuffersEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorBuffersEXT-bufferCount-arraylength",
          "text": "<code>bufferCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkDescriptorBufferBindingInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkDescriptorBufferBindingInfoEXT-None-09499",
          "text": "If the <code>pNext</code> chain does not include a <a href=\"#VkBufferUsageFlags2CreateInfoKHR\">VkBufferUsageFlags2CreateInfoKHR</a> structure, <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferUsageFlagBits\">VkBufferUsageFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorBufferBindingInfoEXT-None-09500",
          "text": "If the <code>pNext</code> chain does not include a <a href=\"#VkBufferUsageFlags2CreateInfoKHR\">VkBufferUsageFlags2CreateInfoKHR</a> structure, <code>usage</code> <strong class=\"purple\">must</strong> not be 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorBufferBindingInfoEXT-bufferlessPushDescriptors-08056",
          "text": "If <a href=\"#limits-bufferlessPushDescriptors\"><code>VkPhysicalDeviceDescriptorBufferPropertiesEXT</code>::<code>bufferlessPushDescriptors</code></a> is <code>VK_FALSE</code>, and <code>usage</code> contains <code>VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkDescriptorBufferBindingPushDescriptorBufferHandleEXT\">VkDescriptorBufferBindingPushDescriptorBufferHandleEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorBufferBindingInfoEXT-address-08057",
          "text": "<code>address</code> <strong class=\"purple\">must</strong> be aligned to <a href=\"#VkPhysicalDeviceDescriptorBufferPropertiesEXT\">VkPhysicalDeviceDescriptorBufferPropertiesEXT</a>::<code>descriptorBufferOffsetAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorBufferBindingInfoEXT-usage-08122",
          "text": "If <code>usage</code> includes <code>VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT</code>, <code>address</code> <strong class=\"purple\">must</strong> be an address within a valid buffer that was created with <code>VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorBufferBindingInfoEXT-usage-08123",
          "text": "If <code>usage</code> includes <code>VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT</code>, <code>address</code> <strong class=\"purple\">must</strong> be an address within a valid buffer that was created with <code>VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorBufferBindingInfoEXT-usage-08124",
          "text": "If <code>usage</code> includes <code>VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT</code>, <code>address</code> <strong class=\"purple\">must</strong> be an address within a valid buffer that was created with <code>VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorBufferBindingInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorBufferBindingInfoEXT-pNext-pNext",
          "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=\"#VkBufferUsageFlags2CreateInfoKHR\">VkBufferUsageFlags2CreateInfoKHR</a> or <a href=\"#VkDescriptorBufferBindingPushDescriptorBufferHandleEXT\">VkDescriptorBufferBindingPushDescriptorBufferHandleEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorBufferBindingInfoEXT-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        }
      ]
    },
    "VkDescriptorBufferBindingPushDescriptorBufferHandleEXT": {
      "core": [
        {
          "vuid": "VUID-VkDescriptorBufferBindingPushDescriptorBufferHandleEXT-bufferlessPushDescriptors-08059",
          "text": "<a href=\"#limits-bufferlessPushDescriptors\"><code>VkPhysicalDeviceDescriptorBufferPropertiesEXT</code>::<code>bufferlessPushDescriptors</code></a> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorBufferBindingPushDescriptorBufferHandleEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorBufferBindingPushDescriptorBufferHandleEXT-buffer-parameter",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetDescriptorBufferOffsetsEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetDescriptorBufferOffsetsEXT-pOffsets-08061",
          "text": "The offsets in <code>pOffsets</code> <strong class=\"purple\">must</strong> be aligned to <a href=\"#VkPhysicalDeviceDescriptorBufferPropertiesEXT\">VkPhysicalDeviceDescriptorBufferPropertiesEXT</a>::<code>descriptorBufferOffsetAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDescriptorBufferOffsetsEXT-pOffsets-08063",
          "text": "The offsets in <code>pOffsets</code> <strong class=\"purple\">must</strong> be small enough such that any descriptor binding referenced by <code>layout</code> without the <code>VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT</code> flag computes a valid address inside the underlying <a href=\"#VkBuffer\">VkBuffer</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDescriptorBufferOffsetsEXT-pOffsets-08126",
          "text": "The offsets in <code>pOffsets</code> <strong class=\"purple\">must</strong> be small enough such that any location accessed by a shader as a sampler descriptor <strong class=\"purple\">must</strong> be within <a href=\"#VkPhysicalDeviceDescriptorBufferPropertiesEXT\">VkPhysicalDeviceDescriptorBufferPropertiesEXT</a>::<code>maxSamplerDescriptorBufferRange</code> of the sampler descriptor buffer binding",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDescriptorBufferOffsetsEXT-pOffsets-08127",
          "text": "The offsets in <code>pOffsets</code> <strong class=\"purple\">must</strong> be small enough such that any location accessed by a shader as a resource descriptor <strong class=\"purple\">must</strong> be within <a href=\"#VkPhysicalDeviceDescriptorBufferPropertiesEXT\">VkPhysicalDeviceDescriptorBufferPropertiesEXT</a>::<code>maxResourceDescriptorBufferRange</code> of the resource descriptor buffer binding",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDescriptorBufferOffsetsEXT-pBufferIndices-08064",
          "text": "Each element of <code>pBufferIndices</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkPhysicalDeviceDescriptorBufferPropertiesEXT\">VkPhysicalDeviceDescriptorBufferPropertiesEXT</a>::<code>maxDescriptorBufferBindings</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDescriptorBufferOffsetsEXT-pBufferIndices-08065",
          "text": "Each element of <code>pBufferIndices</code> <strong class=\"purple\">must</strong> reference a valid descriptor buffer binding set by a previous call to <a href=\"#vkCmdBindDescriptorBuffersEXT\">vkCmdBindDescriptorBuffersEXT</a> in <code>commandBuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDescriptorBufferOffsetsEXT-firstSet-08066",
          "text": "The sum of <code>firstSet</code> and <code>setCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPipelineLayoutCreateInfo\">VkPipelineLayoutCreateInfo</a>::<code>setLayoutCount</code> provided when <code>layout</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDescriptorBufferOffsetsEXT-firstSet-09006",
          "text": "The <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> for each set from <code>firstSet</code> to <span class=\"eq\"><code>firstSet</code> +  <code>setCount</code></span> when <code>layout</code> was created <strong class=\"purple\">must</strong> have been created with the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDescriptorBufferOffsetsEXT-None-08060",
          "text": "The <a href=\"#features-descriptorBuffer\"><code>descriptorBuffer</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDescriptorBufferOffsetsEXT-pipelineBindPoint-08067",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDescriptorBufferOffsetsEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDescriptorBufferOffsetsEXT-pipelineBindPoint-parameter",
          "text": "<code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDescriptorBufferOffsetsEXT-layout-parameter",
          "text": "<code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDescriptorBufferOffsetsEXT-pBufferIndices-parameter",
          "text": "<code>pBufferIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>setCount</code> <code>uint32_t</code> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDescriptorBufferOffsetsEXT-pOffsets-parameter",
          "text": "<code>pOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>setCount</code> <a href=\"#VkDeviceSize\">VkDeviceSize</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDescriptorBufferOffsetsEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDescriptorBufferOffsetsEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDescriptorBufferOffsetsEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDescriptorBufferOffsetsEXT-setCount-arraylength",
          "text": "<code>setCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDescriptorBufferOffsetsEXT-commonparent",
          "text": "Both of <code>commandBuffer</code>, and <code>layout</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetDescriptorBufferOffsets2EXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetDescriptorBufferOffsets2EXT-descriptorBuffer-09470",
          "text": "The <a href=\"#features-descriptorBuffer\"><code>descriptorBuffer</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDescriptorBufferOffsets2EXT-pSetDescriptorBufferOffsetsInfo-09471",
          "text": "Each bit in <code>pSetDescriptorBufferOffsetsInfo-&gt;stageFlags</code> <strong class=\"purple\">must</strong> be a stage supported by the <code>commandBuffer</code>&#8217;s parent <code>VkCommandPool</code>&#8217;s queue family",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDescriptorBufferOffsets2EXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDescriptorBufferOffsets2EXT-pSetDescriptorBufferOffsetsInfo-parameter",
          "text": "<code>pSetDescriptorBufferOffsetsInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSetDescriptorBufferOffsetsInfoEXT\">VkSetDescriptorBufferOffsetsInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDescriptorBufferOffsets2EXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDescriptorBufferOffsets2EXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDescriptorBufferOffsets2EXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkSetDescriptorBufferOffsetsInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkSetDescriptorBufferOffsetsInfoEXT-pOffsets-08061",
          "text": "The offsets in <code>pOffsets</code> <strong class=\"purple\">must</strong> be aligned to <a href=\"#VkPhysicalDeviceDescriptorBufferPropertiesEXT\">VkPhysicalDeviceDescriptorBufferPropertiesEXT</a>::<code>descriptorBufferOffsetAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSetDescriptorBufferOffsetsInfoEXT-pOffsets-08063",
          "text": "The offsets in <code>pOffsets</code> <strong class=\"purple\">must</strong> be small enough such that any descriptor binding referenced by <code>layout</code> without the <code>VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT</code> flag computes a valid address inside the underlying <a href=\"#VkBuffer\">VkBuffer</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSetDescriptorBufferOffsetsInfoEXT-pOffsets-08126",
          "text": "The offsets in <code>pOffsets</code> <strong class=\"purple\">must</strong> be small enough such that any location accessed by a shader as a sampler descriptor <strong class=\"purple\">must</strong> be within <a href=\"#VkPhysicalDeviceDescriptorBufferPropertiesEXT\">VkPhysicalDeviceDescriptorBufferPropertiesEXT</a>::<code>maxSamplerDescriptorBufferRange</code> of the sampler descriptor buffer binding",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSetDescriptorBufferOffsetsInfoEXT-pOffsets-08127",
          "text": "The offsets in <code>pOffsets</code> <strong class=\"purple\">must</strong> be small enough such that any location accessed by a shader as a resource descriptor <strong class=\"purple\">must</strong> be within <a href=\"#VkPhysicalDeviceDescriptorBufferPropertiesEXT\">VkPhysicalDeviceDescriptorBufferPropertiesEXT</a>::<code>maxResourceDescriptorBufferRange</code> of the resource descriptor buffer binding",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSetDescriptorBufferOffsetsInfoEXT-pBufferIndices-08064",
          "text": "Each element of <code>pBufferIndices</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkPhysicalDeviceDescriptorBufferPropertiesEXT\">VkPhysicalDeviceDescriptorBufferPropertiesEXT</a>::<code>maxDescriptorBufferBindings</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSetDescriptorBufferOffsetsInfoEXT-pBufferIndices-08065",
          "text": "Each element of <code>pBufferIndices</code> <strong class=\"purple\">must</strong> reference a valid descriptor buffer binding set by a previous call to <a href=\"#vkCmdBindDescriptorBuffersEXT\">vkCmdBindDescriptorBuffersEXT</a> in <code>commandBuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSetDescriptorBufferOffsetsInfoEXT-firstSet-08066",
          "text": "The sum of <code>firstSet</code> and <code>setCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPipelineLayoutCreateInfo\">VkPipelineLayoutCreateInfo</a>::<code>setLayoutCount</code> provided when <code>layout</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSetDescriptorBufferOffsetsInfoEXT-firstSet-09006",
          "text": "The <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> for each set from <code>firstSet</code> to <span class=\"eq\"><code>firstSet</code> +  <code>setCount</code></span> when <code>layout</code> was created <strong class=\"purple\">must</strong> have been created with the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSetDescriptorBufferOffsetsInfoEXT-None-09495",
          "text": "If the <a href=\"#features-dynamicPipelineLayout\"><code>dynamicPipelineLayout</code></a> feature is not enabled, <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSetDescriptorBufferOffsetsInfoEXT-layout-09496",
          "text": "If <code>layout</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a valid <a href=\"#VkPipelineLayoutCreateInfo\">VkPipelineLayoutCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSetDescriptorBufferOffsetsInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSetDescriptorBufferOffsetsInfoEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineLayoutCreateInfo\">VkPipelineLayoutCreateInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSetDescriptorBufferOffsetsInfoEXT-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSetDescriptorBufferOffsetsInfoEXT-stageFlags-parameter",
          "text": "<code>stageFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSetDescriptorBufferOffsetsInfoEXT-stageFlags-requiredbitmask",
          "text": "<code>stageFlags</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSetDescriptorBufferOffsetsInfoEXT-layout-parameter",
          "text": "If <code>layout</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSetDescriptorBufferOffsetsInfoEXT-pBufferIndices-parameter",
          "text": "<code>pBufferIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>setCount</code> <code>uint32_t</code> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSetDescriptorBufferOffsetsInfoEXT-pOffsets-parameter",
          "text": "<code>pOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>setCount</code> <a href=\"#VkDeviceSize\">VkDeviceSize</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSetDescriptorBufferOffsetsInfoEXT-setCount-arraylength",
          "text": "<code>setCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdBindDescriptorBufferEmbeddedSamplersEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-set-08070",
          "text": "The <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> at index <code>set</code> when <code>layout</code> was created <strong class=\"purple\">must</strong> have been created with the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-set-08071",
          "text": "<code>set</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPipelineLayoutCreateInfo\">VkPipelineLayoutCreateInfo</a>::<code>setLayoutCount</code> provided when <code>layout</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-None-08068",
          "text": "The <a href=\"#features-descriptorBuffer\"><code>descriptorBuffer</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-pipelineBindPoint-08069",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-pipelineBindPoint-parameter",
          "text": "<code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-layout-parameter",
          "text": "<code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-commonparent",
          "text": "Both of <code>commandBuffer</code>, and <code>layout</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdBindDescriptorBufferEmbeddedSamplers2EXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdBindDescriptorBufferEmbeddedSamplers2EXT-descriptorBuffer-09472",
          "text": "The <a href=\"#features-descriptorBuffer\"><code>descriptorBuffer</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorBufferEmbeddedSamplers2EXT-pBindDescriptorBufferEmbeddedSamplersInfo-09473",
          "text": "Each bit in <code>pBindDescriptorBufferEmbeddedSamplersInfo-&gt;stageFlags</code> <strong class=\"purple\">must</strong> be a stage supported by the <code>commandBuffer</code>&#8217;s parent <code>VkCommandPool</code>&#8217;s queue family",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorBufferEmbeddedSamplers2EXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorBufferEmbeddedSamplers2EXT-pBindDescriptorBufferEmbeddedSamplersInfo-parameter",
          "text": "<code>pBindDescriptorBufferEmbeddedSamplersInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkBindDescriptorBufferEmbeddedSamplersInfoEXT\">VkBindDescriptorBufferEmbeddedSamplersInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorBufferEmbeddedSamplers2EXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorBufferEmbeddedSamplers2EXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindDescriptorBufferEmbeddedSamplers2EXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkBindDescriptorBufferEmbeddedSamplersInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkBindDescriptorBufferEmbeddedSamplersInfoEXT-set-08070",
          "text": "The <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> at index <code>set</code> when <code>layout</code> was created <strong class=\"purple\">must</strong> have been created with the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindDescriptorBufferEmbeddedSamplersInfoEXT-set-08071",
          "text": "<code>set</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPipelineLayoutCreateInfo\">VkPipelineLayoutCreateInfo</a>::<code>setLayoutCount</code> provided when <code>layout</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindDescriptorBufferEmbeddedSamplersInfoEXT-None-09495",
          "text": "If the <a href=\"#features-dynamicPipelineLayout\"><code>dynamicPipelineLayout</code></a> feature is not enabled, <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindDescriptorBufferEmbeddedSamplersInfoEXT-layout-09496",
          "text": "If <code>layout</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a valid <a href=\"#VkPipelineLayoutCreateInfo\">VkPipelineLayoutCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindDescriptorBufferEmbeddedSamplersInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindDescriptorBufferEmbeddedSamplersInfoEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineLayoutCreateInfo\">VkPipelineLayoutCreateInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindDescriptorBufferEmbeddedSamplersInfoEXT-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindDescriptorBufferEmbeddedSamplersInfoEXT-stageFlags-parameter",
          "text": "<code>stageFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindDescriptorBufferEmbeddedSamplersInfoEXT-stageFlags-requiredbitmask",
          "text": "<code>stageFlags</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindDescriptorBufferEmbeddedSamplersInfoEXT-layout-parameter",
          "text": "If <code>layout</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "vkGetBufferOpaqueCaptureDescriptorDataEXT": {
      "core": [
        {
          "vuid": "VUID-vkGetBufferOpaqueCaptureDescriptorDataEXT-None-08072",
          "text": "The <a href=\"#features-descriptorBufferCaptureReplay\"><code>descriptorBufferCaptureReplay</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetBufferOpaqueCaptureDescriptorDataEXT-pData-08073",
          "text": "<code>pData</code> <strong class=\"purple\">must</strong> point to a buffer that is at least <a href=\"#VkPhysicalDeviceDescriptorBufferPropertiesEXT\">VkPhysicalDeviceDescriptorBufferPropertiesEXT</a>::<code>bufferCaptureReplayDescriptorDataSize</code> bytes in size",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetBufferOpaqueCaptureDescriptorDataEXT-device-08074",
          "text": "If <code>device</code> was created with multiple physical devices, then the <a href=\"#features-bufferDeviceAddressMultiDevice\"><code>bufferDeviceAddressMultiDevice</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetBufferOpaqueCaptureDescriptorDataEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetBufferOpaqueCaptureDescriptorDataEXT-pInfo-parameter",
          "text": "<code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkBufferCaptureDescriptorDataInfoEXT\">VkBufferCaptureDescriptorDataInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetBufferOpaqueCaptureDescriptorDataEXT-pData-parameter",
          "text": "<code>pData</code> <strong class=\"purple\">must</strong> be a pointer value",
          "page": "vkspec"
        }
      ]
    },
    "VkBufferCaptureDescriptorDataInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkBufferCaptureDescriptorDataInfoEXT-buffer-08075",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT</code> set in <a href=\"#VkBufferCreateInfo\">VkBufferCreateInfo</a>::<code>flags</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCaptureDescriptorDataInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCaptureDescriptorDataInfoEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCaptureDescriptorDataInfoEXT-buffer-parameter",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "vkGetImageOpaqueCaptureDescriptorDataEXT": {
      "core": [
        {
          "vuid": "VUID-vkGetImageOpaqueCaptureDescriptorDataEXT-None-08076",
          "text": "The <a href=\"#features-descriptorBufferCaptureReplay\"><code>descriptorBufferCaptureReplay</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageOpaqueCaptureDescriptorDataEXT-pData-08077",
          "text": "<code>pData</code> <strong class=\"purple\">must</strong> point to a buffer that is at least <a href=\"#VkPhysicalDeviceDescriptorBufferPropertiesEXT\">VkPhysicalDeviceDescriptorBufferPropertiesEXT</a>::<code>imageCaptureReplayDescriptorDataSize</code> bytes in size",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageOpaqueCaptureDescriptorDataEXT-device-08078",
          "text": "If <code>device</code> was created with multiple physical devices, then the <a href=\"#features-bufferDeviceAddressMultiDevice\"><code>bufferDeviceAddressMultiDevice</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageOpaqueCaptureDescriptorDataEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageOpaqueCaptureDescriptorDataEXT-pInfo-parameter",
          "text": "<code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImageCaptureDescriptorDataInfoEXT\">VkImageCaptureDescriptorDataInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageOpaqueCaptureDescriptorDataEXT-pData-parameter",
          "text": "<code>pData</code> <strong class=\"purple\">must</strong> be a pointer value",
          "page": "vkspec"
        }
      ]
    },
    "VkImageCaptureDescriptorDataInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkImageCaptureDescriptorDataInfoEXT-image-08079",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT</code> set in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCaptureDescriptorDataInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCaptureDescriptorDataInfoEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCaptureDescriptorDataInfoEXT-image-parameter",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "vkGetImageViewOpaqueCaptureDescriptorDataEXT": {
      "core": [
        {
          "vuid": "VUID-vkGetImageViewOpaqueCaptureDescriptorDataEXT-None-08080",
          "text": "The <a href=\"#features-descriptorBufferCaptureReplay\"><code>descriptorBufferCaptureReplay</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageViewOpaqueCaptureDescriptorDataEXT-pData-08081",
          "text": "<code>pData</code> <strong class=\"purple\">must</strong> point to a buffer that is at least <a href=\"#VkPhysicalDeviceDescriptorBufferPropertiesEXT\">VkPhysicalDeviceDescriptorBufferPropertiesEXT</a>::<code>imageViewCaptureReplayDescriptorDataSize</code> bytes in size",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageViewOpaqueCaptureDescriptorDataEXT-device-08082",
          "text": "If <code>device</code> was created with multiple physical devices, then the <a href=\"#features-bufferDeviceAddressMultiDevice\"><code>bufferDeviceAddressMultiDevice</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageViewOpaqueCaptureDescriptorDataEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageViewOpaqueCaptureDescriptorDataEXT-pInfo-parameter",
          "text": "<code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImageViewCaptureDescriptorDataInfoEXT\">VkImageViewCaptureDescriptorDataInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageViewOpaqueCaptureDescriptorDataEXT-pData-parameter",
          "text": "<code>pData</code> <strong class=\"purple\">must</strong> be a pointer value",
          "page": "vkspec"
        }
      ]
    },
    "VkImageViewCaptureDescriptorDataInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkImageViewCaptureDescriptorDataInfoEXT-imageView-08083",
          "text": "<code>imageView</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT</code> set in <a href=\"#VkImageViewCreateInfo\">VkImageViewCreateInfo</a>::<code>flags</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCaptureDescriptorDataInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCaptureDescriptorDataInfoEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageViewCaptureDescriptorDataInfoEXT-imageView-parameter",
          "text": "<code>imageView</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageView\">VkImageView</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "vkGetSamplerOpaqueCaptureDescriptorDataEXT": {
      "core": [
        {
          "vuid": "VUID-vkGetSamplerOpaqueCaptureDescriptorDataEXT-None-08084",
          "text": "The <a href=\"#features-descriptorBufferCaptureReplay\"><code>descriptorBufferCaptureReplay</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetSamplerOpaqueCaptureDescriptorDataEXT-pData-08085",
          "text": "<code>pData</code> <strong class=\"purple\">must</strong> point to a buffer that is at least <a href=\"#VkPhysicalDeviceDescriptorBufferPropertiesEXT\">VkPhysicalDeviceDescriptorBufferPropertiesEXT</a>::<code>samplerCaptureReplayDescriptorDataSize</code> bytes in size",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetSamplerOpaqueCaptureDescriptorDataEXT-device-08086",
          "text": "If <code>device</code> was created with multiple physical devices, then the <a href=\"#features-bufferDeviceAddressMultiDevice\"><code>bufferDeviceAddressMultiDevice</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetSamplerOpaqueCaptureDescriptorDataEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetSamplerOpaqueCaptureDescriptorDataEXT-pInfo-parameter",
          "text": "<code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSamplerCaptureDescriptorDataInfoEXT\">VkSamplerCaptureDescriptorDataInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetSamplerOpaqueCaptureDescriptorDataEXT-pData-parameter",
          "text": "<code>pData</code> <strong class=\"purple\">must</strong> be a pointer value",
          "page": "vkspec"
        }
      ]
    },
    "VkSamplerCaptureDescriptorDataInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkSamplerCaptureDescriptorDataInfoEXT-sampler-08087",
          "text": "<code>sampler</code> <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT</code> set in <a href=\"#VkSamplerCreateInfo\">VkSamplerCreateInfo</a>::<code>flags</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCaptureDescriptorDataInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCaptureDescriptorDataInfoEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSamplerCaptureDescriptorDataInfoEXT-sampler-parameter",
          "text": "<code>sampler</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampler\">VkSampler</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT": {
      "core": [
        {
          "vuid": "VUID-vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT-None-08088",
          "text": "The <a href=\"#features-descriptorBufferCaptureReplay\"><code>descriptorBufferCaptureReplay</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT-pData-08089",
          "text": "<code>pData</code> <strong class=\"purple\">must</strong> point to a buffer that is at least <a href=\"#VkPhysicalDeviceDescriptorBufferPropertiesEXT\">VkPhysicalDeviceDescriptorBufferPropertiesEXT</a>::<code>accelerationStructureCaptureReplayDescriptorDataSize</code> bytes in size",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT-device-08090",
          "text": "If <code>device</code> was created with multiple physical devices, then the <a href=\"#features-bufferDeviceAddressMultiDevice\"><code>bufferDeviceAddressMultiDevice</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT-pInfo-parameter",
          "text": "<code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureCaptureDescriptorDataInfoEXT\">VkAccelerationStructureCaptureDescriptorDataInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT-pData-parameter",
          "text": "<code>pData</code> <strong class=\"purple\">must</strong> be a pointer value",
          "page": "vkspec"
        }
      ]
    },
    "VkAccelerationStructureCaptureDescriptorDataInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkAccelerationStructureCaptureDescriptorDataInfoEXT-accelerationStructure-08091",
          "text": "If <code>accelerationStructure</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> then <code>accelerationStructure</code> <strong class=\"purple\">must</strong> have been created with <code>VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT</code> set in <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>createFlags</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureCaptureDescriptorDataInfoEXT-accelerationStructureNV-08092",
          "text": "If <code>accelerationStructureNV</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> then <code>accelerationStructureNV</code> <strong class=\"purple\">must</strong> have been created with <code>VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT</code> set in <a href=\"#VkAccelerationStructureCreateInfoNV\">VkAccelerationStructureCreateInfoNV</a>::<code>info.flags</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureCaptureDescriptorDataInfoEXT-accelerationStructure-08093",
          "text": "If <code>accelerationStructure</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> then <code>accelerationStructureNV</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureCaptureDescriptorDataInfoEXT-accelerationStructureNV-08094",
          "text": "If <code>accelerationStructureNV</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> then <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureCaptureDescriptorDataInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureCaptureDescriptorDataInfoEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureCaptureDescriptorDataInfoEXT-accelerationStructure-parameter",
          "text": "If <code>accelerationStructure</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureCaptureDescriptorDataInfoEXT-accelerationStructureNV-parameter",
          "text": "If <code>accelerationStructureNV</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>accelerationStructureNV</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureNV\">VkAccelerationStructureNV</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureCaptureDescriptorDataInfoEXT-commonparent",
          "text": "Both of <code>accelerationStructure</code>, and <code>accelerationStructureNV</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkOpaqueCaptureDescriptorDataCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkOpaqueCaptureDescriptorDataCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkOpaqueCaptureDescriptorDataCreateInfoEXT-opaqueCaptureDescriptorData-parameter",
          "text": "<code>opaqueCaptureDescriptorData</code> <strong class=\"purple\">must</strong> be a pointer value",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetRenderingAttachmentLocationsKHR": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetRenderingAttachmentLocationsKHR-dynamicRenderingLocalRead-09509",
          "text": "<a href=\"#features-dynamicRenderingLocalRead\"><code>dynamicRenderingLocalRead</code></a> <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRenderingAttachmentLocationsKHR-pLocationInfo-09510",
          "text": "<code>pLocationInfo-&gt;colorAttachmentCount</code> <strong class=\"purple\">must</strong> be equal to the value of <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> used to begin the current render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRenderingAttachmentLocationsKHR-commandBuffer-09511",
          "text": "The current render pass instance <strong class=\"purple\">must</strong> have been started or resumed by <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> in this <code>commandBuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRenderingAttachmentLocationsKHR-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRenderingAttachmentLocationsKHR-pLocationInfo-parameter",
          "text": "<code>pLocationInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkRenderingAttachmentLocationInfoKHR\">VkRenderingAttachmentLocationInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRenderingAttachmentLocationsKHR-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRenderingAttachmentLocationsKHR-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRenderingAttachmentLocationsKHR-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRenderingAttachmentLocationsKHR-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkRenderingAttachmentLocationInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkRenderingAttachmentLocationInfoKHR-dynamicRenderingLocalRead-09512",
          "text": "If the <a href=\"#features-dynamicRenderingLocalRead\"><code>dynamicRenderingLocalRead</code></a> feature is not enabled, and <code>pColorAttachmentLocations</code> is not <code>NULL</code>, each element <strong class=\"purple\">must</strong> be set to the value of its index within the array",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentLocationInfoKHR-pColorAttachmentLocations-09513",
          "text": "Elements of <code>pColorAttachmentLocations</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> each be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentLocationInfoKHR-colorAttachmentCount-09514",
          "text": "<code>colorAttachmentCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxColorAttachments\"><code>maxColorAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentLocationInfoKHR-pColorAttachmentLocations-09515",
          "text": "Each element of <code>pColorAttachmentLocations</code> <strong class=\"purple\">must</strong> be less than <a href=\"#limits-maxColorAttachments\"><code>maxColorAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingAttachmentLocationInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetRenderingInputAttachmentIndicesKHR": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetRenderingInputAttachmentIndicesKHR-dynamicRenderingLocalRead-09516",
          "text": "<a href=\"#features-dynamicRenderingLocalRead\"><code>dynamicRenderingLocalRead</code></a> <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRenderingInputAttachmentIndicesKHR-pInputAttachmentIndexInfo-09517",
          "text": "<code>pInputAttachmentIndexInfo-&gt;colorAttachmentCount</code> <strong class=\"purple\">must</strong> be equal to the value of <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> used to begin the current render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRenderingInputAttachmentIndicesKHR-commandBuffer-09518",
          "text": "The current render pass instance <strong class=\"purple\">must</strong> have been started or resumed by <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> in this <code>commandBuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRenderingInputAttachmentIndicesKHR-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRenderingInputAttachmentIndicesKHR-pInputAttachmentIndexInfo-parameter",
          "text": "<code>pInputAttachmentIndexInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRenderingInputAttachmentIndicesKHR-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRenderingInputAttachmentIndicesKHR-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRenderingInputAttachmentIndicesKHR-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRenderingInputAttachmentIndicesKHR-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkRenderingInputAttachmentIndexInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkRenderingInputAttachmentIndexInfoKHR-dynamicRenderingLocalRead-09519",
          "text": "If the <a href=\"#features-dynamicRenderingLocalRead\"><code>dynamicRenderingLocalRead</code></a> feature is not enabled, and <code>pColorAttachmentInputIndices</code> is not <code>NULL</code>, each element <strong class=\"purple\">must</strong> be set to <code>VK_ATTACHMENT_UNUSED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInputAttachmentIndexInfoKHR-dynamicRenderingLocalRead-09520",
          "text": "If the <a href=\"#features-dynamicRenderingLocalRead\"><code>dynamicRenderingLocalRead</code></a> feature is not enabled, <code>pDepthInputAttachmentIndex</code> <strong class=\"purple\">must</strong> be a valid pointer to a value of <code>VK_ATTACHMENT_UNUSED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInputAttachmentIndexInfoKHR-dynamicRenderingLocalRead-09521",
          "text": "If the <a href=\"#features-dynamicRenderingLocalRead\"><code>dynamicRenderingLocalRead</code></a> feature is not enabled, <code>pStencilInputAttachmentIndex</code> <strong class=\"purple\">must</strong> be a valid pointer to a value of <code>VK_ATTACHMENT_UNUSED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInputAttachmentIndexInfoKHR-pColorAttachmentInputIndices-09522",
          "text": "Elements of <code>pColorAttachmentInputIndices</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> each be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInputAttachmentIndexInfoKHR-pColorAttachmentInputIndices-09523",
          "text": "Elements of <code>pColorAttachmentInputIndices</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> not take the same value as the content of <code>pDepthInputAttachmentIndex</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInputAttachmentIndexInfoKHR-pColorAttachmentInputIndices-09524",
          "text": "Elements of <code>pColorAttachmentInputIndices</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> not take the same value as the content of <code>pStencilInputAttachmentIndex</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInputAttachmentIndexInfoKHR-colorAttachmentCount-09525",
          "text": "<code>colorAttachmentCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxColorAttachments\"><code>maxColorAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInputAttachmentIndexInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInputAttachmentIndexInfoKHR-pColorAttachmentInputIndices-parameter",
          "text": "If <code>colorAttachmentCount</code> is not <code>0</code>, and <code>pColorAttachmentInputIndices</code> is not <code>NULL</code>, <code>pColorAttachmentInputIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>colorAttachmentCount</code> <code>uint32_t</code> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInputAttachmentIndexInfoKHR-pDepthInputAttachmentIndex-parameter",
          "text": "If <code>pDepthInputAttachmentIndex</code> is not <code>NULL</code>, <code>pDepthInputAttachmentIndex</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRenderingInputAttachmentIndexInfoKHR-pStencilInputAttachmentIndex-parameter",
          "text": "If <code>pStencilInputAttachmentIndex</code> is not <code>NULL</code>, <code>pStencilInputAttachmentIndex</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>uint32_t</code> value",
          "page": "vkspec"
        }
      ]
    },
    "BaryCoordKHR": {
      "core": [
        {
          "vuid": "VUID-BaryCoordKHR-BaryCoordKHR-04154",
          "text": "The <code>BaryCoordKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-BaryCoordKHR-BaryCoordKHR-04155",
          "text": "The variable decorated with <code>BaryCoordKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-BaryCoordKHR-BaryCoordKHR-04156",
          "text": "The variable decorated with <code>BaryCoordKHR</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit floating-point values",
          "page": "vkspec"
        }
      ]
    },
    "BaryCoordNoPerspAMD": {
      "core": [
        {
          "vuid": "VUID-BaryCoordNoPerspAMD-BaryCoordNoPerspAMD-04157",
          "text": "The <code>BaryCoordNoPerspAMD</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-BaryCoordNoPerspAMD-BaryCoordNoPerspAMD-04158",
          "text": "The variable decorated with <code>BaryCoordNoPerspAMD</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-BaryCoordNoPerspAMD-BaryCoordNoPerspAMD-04159",
          "text": "The variable decorated with <code>BaryCoordNoPerspAMD</code> <strong class=\"purple\">must</strong> be declared as a two-component vector of 32-bit floating-point values",
          "page": "vkspec"
        }
      ]
    },
    "BaryCoordNoPerspKHR": {
      "core": [
        {
          "vuid": "VUID-BaryCoordNoPerspKHR-BaryCoordNoPerspKHR-04160",
          "text": "The <code>BaryCoordNoPerspKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-BaryCoordNoPerspKHR-BaryCoordNoPerspKHR-04161",
          "text": "The variable decorated with <code>BaryCoordNoPerspKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-BaryCoordNoPerspKHR-BaryCoordNoPerspKHR-04162",
          "text": "The variable decorated with <code>BaryCoordNoPerspKHR</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit floating-point values",
          "page": "vkspec"
        }
      ]
    },
    "BaryCoordNoPerspCentroidAMD": {
      "core": [
        {
          "vuid": "VUID-BaryCoordNoPerspCentroidAMD-BaryCoordNoPerspCentroidAMD-04163",
          "text": "The <code>BaryCoordNoPerspCentroidAMD</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-BaryCoordNoPerspCentroidAMD-BaryCoordNoPerspCentroidAMD-04164",
          "text": "The variable decorated with <code>BaryCoordNoPerspCentroidAMD</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-BaryCoordNoPerspCentroidAMD-BaryCoordNoPerspCentroidAMD-04165",
          "text": "The variable decorated with <code>BaryCoordNoPerspCentroidAMD</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit floating-point values",
          "page": "vkspec"
        }
      ]
    },
    "BaryCoordNoPerspSampleAMD": {
      "core": [
        {
          "vuid": "VUID-BaryCoordNoPerspSampleAMD-BaryCoordNoPerspSampleAMD-04166",
          "text": "The <code>BaryCoordNoPerspSampleAMD</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-BaryCoordNoPerspSampleAMD-BaryCoordNoPerspSampleAMD-04167",
          "text": "The variable decorated with <code>BaryCoordNoPerspSampleAMD</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-BaryCoordNoPerspSampleAMD-BaryCoordNoPerspSampleAMD-04168",
          "text": "The variable decorated with <code>BaryCoordNoPerspSampleAMD</code> <strong class=\"purple\">must</strong> be declared as a two-component vector of 32-bit floating-point values",
          "page": "vkspec"
        }
      ]
    },
    "BaryCoordPullModelAMD": {
      "core": [
        {
          "vuid": "VUID-BaryCoordPullModelAMD-BaryCoordPullModelAMD-04169",
          "text": "The <code>BaryCoordPullModelAMD</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-BaryCoordPullModelAMD-BaryCoordPullModelAMD-04170",
          "text": "The variable decorated with <code>BaryCoordPullModelAMD</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-BaryCoordPullModelAMD-BaryCoordPullModelAMD-04171",
          "text": "The variable decorated with <code>BaryCoordPullModelAMD</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit floating-point values",
          "page": "vkspec"
        }
      ]
    },
    "BaryCoordSmoothAMD": {
      "core": [
        {
          "vuid": "VUID-BaryCoordSmoothAMD-BaryCoordSmoothAMD-04172",
          "text": "The <code>BaryCoordSmoothAMD</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-BaryCoordSmoothAMD-BaryCoordSmoothAMD-04173",
          "text": "The variable decorated with <code>BaryCoordSmoothAMD</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-BaryCoordSmoothAMD-BaryCoordSmoothAMD-04174",
          "text": "The variable decorated with <code>BaryCoordSmoothAMD</code> <strong class=\"purple\">must</strong> be declared as a two-component vector of 32-bit floating-point values",
          "page": "vkspec"
        }
      ]
    },
    "BaryCoordSmoothCentroidAMD": {
      "core": [
        {
          "vuid": "VUID-BaryCoordSmoothCentroidAMD-BaryCoordSmoothCentroidAMD-04175",
          "text": "The <code>BaryCoordSmoothCentroidAMD</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-BaryCoordSmoothCentroidAMD-BaryCoordSmoothCentroidAMD-04176",
          "text": "The variable decorated with <code>BaryCoordSmoothCentroidAMD</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-BaryCoordSmoothCentroidAMD-BaryCoordSmoothCentroidAMD-04177",
          "text": "The variable decorated with <code>BaryCoordSmoothCentroidAMD</code> <strong class=\"purple\">must</strong> be declared as a two-component vector of 32-bit floating-point values",
          "page": "vkspec"
        }
      ]
    },
    "BaryCoordSmoothSampleAMD": {
      "core": [
        {
          "vuid": "VUID-BaryCoordSmoothSampleAMD-BaryCoordSmoothSampleAMD-04178",
          "text": "The <code>BaryCoordSmoothSampleAMD</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-BaryCoordSmoothSampleAMD-BaryCoordSmoothSampleAMD-04179",
          "text": "The variable decorated with <code>BaryCoordSmoothSampleAMD</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-BaryCoordSmoothSampleAMD-BaryCoordSmoothSampleAMD-04180",
          "text": "The variable decorated with <code>BaryCoordSmoothSampleAMD</code> <strong class=\"purple\">must</strong> be declared as a two-component vector of 32-bit floating-point values",
          "page": "vkspec"
        }
      ]
    },
    "BaseInstance": {
      "core": [
        {
          "vuid": "VUID-BaseInstance-BaseInstance-04181",
          "text": "The <code>BaseInstance</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Vertex</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-BaseInstance-BaseInstance-04182",
          "text": "The variable decorated with <code>BaseInstance</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-BaseInstance-BaseInstance-04183",
          "text": "The variable decorated with <code>BaseInstance</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "BaseVertex": {
      "core": [
        {
          "vuid": "VUID-BaseVertex-BaseVertex-04184",
          "text": "The <code>BaseVertex</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Vertex</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-BaseVertex-BaseVertex-04185",
          "text": "The variable decorated with <code>BaseVertex</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-BaseVertex-BaseVertex-04186",
          "text": "The variable decorated with <code>BaseVertex</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "ClipDistance": {
      "core": [
        {
          "vuid": "VUID-ClipDistance-ClipDistance-04187",
          "text": "The <code>ClipDistance</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshEXT</code>, <code>MeshNV</code>, <code>Vertex</code>, <code>Fragment</code>, <code>TessellationControl</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-ClipDistance-ClipDistance-04188",
          "text": "The variable decorated with <code>ClipDistance</code> within the <code>MeshEXT</code>, <code>MeshNV</code>, or <code>Vertex</code> <code>Execution</code> <code>Model</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-ClipDistance-ClipDistance-04189",
          "text": "The variable decorated with <code>ClipDistance</code> within the <code>Fragment</code> <code>Execution</code> <code>Model</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-ClipDistance-ClipDistance-04190",
          "text": "The variable decorated with <code>ClipDistance</code> within the <code>TessellationControl</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> <code>Execution</code> <code>Model</code> <strong class=\"purple\">must</strong> not be declared in a <code>Storage</code> <code>Class</code> other than <code>Input</code> or <code>Output</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-ClipDistance-ClipDistance-04191",
          "text": "The variable decorated with <code>ClipDistance</code> <strong class=\"purple\">must</strong> be declared as an array of 32-bit floating-point values",
          "page": "vkspec"
        }
      ]
    },
    "ClipDistancePerViewNV": {
      "core": [
        {
          "vuid": "VUID-ClipDistancePerViewNV-ClipDistancePerViewNV-04192",
          "text": "The <code>ClipDistancePerViewNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshNV</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-ClipDistancePerViewNV-ClipDistancePerViewNV-04193",
          "text": "The variable decorated with <code>ClipDistancePerViewNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-ClipDistancePerViewNV-ClipDistancePerViewNV-04194",
          "text": "The variable decorated with <code>ClipDistancePerViewNV</code> <strong class=\"purple\">must</strong> also be decorated with the <code>PerViewNV</code> decoration",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-ClipDistancePerViewNV-ClipDistancePerViewNV-04195",
          "text": "The variable decorated with <code>ClipDistancePerViewNV</code> <strong class=\"purple\">must</strong> be declared as a two-dimensional array of 32-bit floating-point values",
          "page": "vkspec"
        }
      ]
    },
    "ClusterIDHUAWEI": {
      "core": [
        {
          "vuid": "VUID-ClusterIDHUAWEI-ClusterIDHUAWEI-07797",
          "text": "The <code>ClusterIDHUAWEI</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>ClusterCullingHUAWEI</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-ClusterIDHUAWEI-ClusterIDHUAWEI-07798",
          "text": "The variable decorated with <code>ClusterIDHUAWEI</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "ClusterShadingRateHUAWEI": {
      "core": [
        {
          "vuid": "VUID-ClusterShadingRateHUAWEI-ClusterShadingRateHUAWEI-09448",
          "text": "The <code>ClusterShadingRateHUAWEI</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>ClusterCullingHUAWEI</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-ClusterShadingRateHUAWEI-ClusterShadingRateHUAWEI-09449",
          "text": "The variable decorated with <code>ClusterShadingRateHUAWEI</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "CullDistance": {
      "core": [
        {
          "vuid": "VUID-CullDistance-CullDistance-04196",
          "text": "The <code>CullDistance</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshEXT</code>, <code>MeshNV</code>, <code>Vertex</code>, <code>Fragment</code>, <code>TessellationControl</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-CullDistance-CullDistance-04197",
          "text": "The variable decorated with <code>CullDistance</code> within the <code>MeshEXT</code>, <code>MeshNV</code> or <code>Vertex</code> <code>Execution</code> <code>Model</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-CullDistance-CullDistance-04198",
          "text": "The variable decorated with <code>CullDistance</code> within the <code>Fragment</code> <code>Execution</code> <code>Model</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-CullDistance-CullDistance-04199",
          "text": "The variable decorated with <code>CullDistance</code> within the <code>TessellationControl</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> <code>Execution</code> <code>Model</code> <strong class=\"purple\">must</strong> not be declared using a <code>Storage</code> <code>Class</code> other than <code>Input</code> or <code>Output</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-CullDistance-CullDistance-04200",
          "text": "The variable decorated with <code>CullDistance</code> <strong class=\"purple\">must</strong> be declared as an array of 32-bit floating-point values",
          "page": "vkspec"
        }
      ]
    },
    "CullDistancePerViewNV": {
      "core": [
        {
          "vuid": "VUID-CullDistancePerViewNV-CullDistancePerViewNV-04201",
          "text": "The <code>CullDistancePerViewNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshNV</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-CullDistancePerViewNV-CullDistancePerViewNV-04202",
          "text": "The variable decorated with <code>CullDistancePerViewNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-CullDistancePerViewNV-CullDistancePerViewNV-04203",
          "text": "The variable decorated with <code>CullDistancePerViewNV</code> <strong class=\"purple\">must</strong> also be decorated with the <code>PerViewNV</code> decoration",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-CullDistancePerViewNV-CullDistancePerViewNV-04204",
          "text": "The variable decorated with <code>CullDistancePerViewNV</code> <strong class=\"purple\">must</strong> be declared as a two-dimensional array of 32-bit floating-point values",
          "page": "vkspec"
        }
      ]
    },
    "CullPrimitiveEXT": {
      "core": [
        {
          "vuid": "VUID-CullPrimitiveEXT-CullPrimitiveEXT-07034",
          "text": "The <code>CullPrimitiveEXT</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshEXT</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-CullPrimitiveEXT-CullPrimitiveEXT-07035",
          "text": "The variable decorated with <code>CullPrimitiveEXT</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-CullPrimitiveEXT-CullPrimitiveEXT-07036",
          "text": "The variable decorated with <code>CullPrimitiveEXT</code> <strong class=\"purple\">must</strong> be declared as an array of boolean values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-CullPrimitiveEXT-CullPrimitiveEXT-07037",
          "text": "The size of the array decorated with <code>CullPrimitiveEXT</code> <strong class=\"purple\">must</strong> match the value specified by <code>OutputPrimitivesEXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-CullPrimitiveEXT-CullPrimitiveEXT-07038",
          "text": "The variable decorated with <code>CullPrimitiveEXT</code> within the <code>MeshEXT</code> <code>Execution</code> <code>Model</code> <strong class=\"purple\">must</strong> also be decorated with the <code>PerPrimitiveEXT</code> decoration",
          "page": "vkspec"
        }
      ]
    },
    "CullMaskKHR": {
      "core": [
        {
          "vuid": "VUID-CullMaskKHR-CullMaskKHR-06735",
          "text": "The <code>CullMaskKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, <code>ClosestHitKHR</code>, or <code>MissKHR</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-CullMaskKHR-CullMaskKHR-06736",
          "text": "The variable decorated with <code>CullMaskKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-CullMaskKHR-CullMaskKHR-06737",
          "text": "The variable decorated with <code>CullMaskKHR</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "CurrentRayTimeNV": {
      "core": [
        {
          "vuid": "VUID-CurrentRayTimeNV-CurrentRayTimeNV-04942",
          "text": "The <code>CurrentRayTimeNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, <code>ClosestHitKHR</code>, or <code>MissKHR</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-CurrentRayTimeNV-CurrentRayTimeNV-04943",
          "text": "The variable decorated with <code>CurrentRayTimeNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-CurrentRayTimeNV-CurrentRayTimeNV-04944",
          "text": "The variable decorated with <code>CurrentRayTimeNV</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit floating-point value",
          "page": "vkspec"
        }
      ]
    },
    "DeviceIndex": {
      "core": [
        {
          "vuid": "VUID-DeviceIndex-DeviceIndex-04205",
          "text": "The variable decorated with <code>DeviceIndex</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-DeviceIndex-DeviceIndex-04206",
          "text": "The variable decorated with <code>DeviceIndex</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "DrawIndex": {
      "core": [
        {
          "vuid": "VUID-DrawIndex-DrawIndex-04207",
          "text": "The <code>DrawIndex</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Vertex</code>, <code>MeshEXT</code>, <code>TaskEXT</code>, <code>MeshNV</code>, or <code>TaskNV</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-DrawIndex-DrawIndex-04208",
          "text": "The variable decorated with <code>DrawIndex</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-DrawIndex-DrawIndex-04209",
          "text": "The variable decorated with <code>DrawIndex</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "FirstIndexHUAWEI": {
      "core": [
        {
          "vuid": "VUID-FirstIndexHUAWEI-FirstIndexHUAWEI-07799",
          "text": "The <code>FirstIndexHUAWEI</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>ClusterCullingHUAWEI</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-FirstIndexHUAWEI-FirstIndexHUAWEI-07800",
          "text": "The variable decorated with <code>FirstIndexHUAWEI</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "FragCoord": {
      "core": [
        {
          "vuid": "VUID-FragCoord-FragCoord-04210",
          "text": "The <code>FragCoord</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-FragCoord-FragCoord-04211",
          "text": "The variable decorated with <code>FragCoord</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-FragCoord-FragCoord-04212",
          "text": "The variable decorated with <code>FragCoord</code> <strong class=\"purple\">must</strong> be declared as a four-component vector of 32-bit floating-point values",
          "page": "vkspec"
        }
      ]
    },
    "FragDepth": {
      "core": [
        {
          "vuid": "VUID-FragDepth-FragDepth-04213",
          "text": "The <code>FragDepth</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-FragDepth-FragDepth-04214",
          "text": "The variable decorated with <code>FragDepth</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-FragDepth-FragDepth-04215",
          "text": "The variable decorated with <code>FragDepth</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit floating-point value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-FragDepth-FragDepth-04216",
          "text": "If the shader dynamically writes to the variable decorated with <code>FragDepth</code>, the <code>DepthReplacing</code> <code>Execution</code> <code>Mode</code> <strong class=\"purple\">must</strong> be declared",
          "page": "vkspec"
        }
      ]
    },
    "FirstInstanceHUAWEI": {
      "core": [
        {
          "vuid": "VUID-FirstInstanceHUAWEI-FirstInstanceHUAWEI-07801",
          "text": "The <code>FirstInstanceHUAWEI</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>ClusterCullingHUAWEI</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-FirstInstanceHUAWEI-FirstInstanceHUAWEI-07802",
          "text": "The variable decorated with <code>FirstInstanceHUAWEI</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "FirstVertexHUAWEI": {
      "core": [
        {
          "vuid": "VUID-FirstVertexHUAWEI-FirstVertexHUAWEI-07803",
          "text": "The <code>FirstVertexHUAWEI</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>FirstVertexHUAWEI</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-FirstVertexHUAWEI-FirstVertexHUAWEI-07804",
          "text": "The variable decorated with <code>FirstVertexHUAWEI</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "FragInvocationCountEXT": {
      "core": [
        {
          "vuid": "VUID-FragInvocationCountEXT-FragInvocationCountEXT-04217",
          "text": "The <code>FragInvocationCountEXT</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-FragInvocationCountEXT-FragInvocationCountEXT-04218",
          "text": "The variable decorated with <code>FragInvocationCountEXT</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-FragInvocationCountEXT-FragInvocationCountEXT-04219",
          "text": "The variable decorated with <code>FragInvocationCountEXT</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "FragSizeEXT": {
      "core": [
        {
          "vuid": "VUID-FragSizeEXT-FragSizeEXT-04220",
          "text": "The <code>FragSizeEXT</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-FragSizeEXT-FragSizeEXT-04221",
          "text": "The variable decorated with <code>FragSizeEXT</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-FragSizeEXT-FragSizeEXT-04222",
          "text": "The variable decorated with <code>FragSizeEXT</code> <strong class=\"purple\">must</strong> be declared as a two-component vector of 32-bit integer values",
          "page": "vkspec"
        }
      ]
    },
    "FragStencilRefEXT": {
      "core": [
        {
          "vuid": "VUID-FragStencilRefEXT-FragStencilRefEXT-04223",
          "text": "The <code>FragStencilRefEXT</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-FragStencilRefEXT-FragStencilRefEXT-04224",
          "text": "The variable decorated with <code>FragStencilRefEXT</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-FragStencilRefEXT-FragStencilRefEXT-04225",
          "text": "The variable decorated with <code>FragStencilRefEXT</code> <strong class=\"purple\">must</strong> be declared as a scalar integer value",
          "page": "vkspec"
        }
      ]
    },
    "FragmentSizeNV": {
      "core": [
        {
          "vuid": "VUID-FragmentSizeNV-FragmentSizeNV-04226",
          "text": "The <code>FragmentSizeNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-FragmentSizeNV-FragmentSizeNV-04227",
          "text": "The variable decorated with <code>FragmentSizeNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-FragmentSizeNV-FragmentSizeNV-04228",
          "text": "The variable decorated with <code>FragmentSizeNV</code> <strong class=\"purple\">must</strong> be declared as a two-component vector of 32-bit integer values",
          "page": "vkspec"
        }
      ]
    },
    "FrontFacing": {
      "core": [
        {
          "vuid": "VUID-FrontFacing-FrontFacing-04229",
          "text": "The <code>FrontFacing</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-FrontFacing-FrontFacing-04230",
          "text": "The variable decorated with <code>FrontFacing</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-FrontFacing-FrontFacing-04231",
          "text": "The variable decorated with <code>FrontFacing</code> <strong class=\"purple\">must</strong> be declared as a boolean value",
          "page": "vkspec"
        }
      ]
    },
    "FullyCoveredEXT": {
      "core": [
        {
          "vuid": "VUID-FullyCoveredEXT-FullyCoveredEXT-04232",
          "text": "The <code>FullyCoveredEXT</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-FullyCoveredEXT-FullyCoveredEXT-04233",
          "text": "The variable decorated with <code>FullyCoveredEXT</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-FullyCoveredEXT-FullyCoveredEXT-04234",
          "text": "The variable decorated with <code>FullyCoveredEXT</code> <strong class=\"purple\">must</strong> be declared as a boolean value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-FullyCoveredEXT-conservativeRasterizationPostDepthCoverage-04235",
          "text": "If <code>VkPhysicalDeviceConservativeRasterizationPropertiesEXT</code>::<code>conservativeRasterizationPostDepthCoverage</code> is not supported the <code>PostDepthCoverage</code> <code>Execution</code> <code>Mode</code> <strong class=\"purple\">must</strong> not be declared, when a variable with the <code>FullyCoveredEXT</code> decoration is declared",
          "page": "vkspec"
        }
      ]
    },
    "GlobalInvocationId": {
      "core": [
        {
          "vuid": "VUID-GlobalInvocationId-GlobalInvocationId-04236",
          "text": "The <code>GlobalInvocationId</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>GLCompute</code>, <code>MeshEXT</code>, <code>TaskEXT</code>, <code>MeshNV</code>, or <code>TaskNV</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-GlobalInvocationId-GlobalInvocationId-04237",
          "text": "The variable decorated with <code>GlobalInvocationId</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-GlobalInvocationId-GlobalInvocationId-04238",
          "text": "The variable decorated with <code>GlobalInvocationId</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit integer values",
          "page": "vkspec"
        }
      ]
    },
    "HelperInvocation": {
      "core": [
        {
          "vuid": "VUID-HelperInvocation-HelperInvocation-04239",
          "text": "The <code>HelperInvocation</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-HelperInvocation-HelperInvocation-04240",
          "text": "The variable decorated with <code>HelperInvocation</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-HelperInvocation-HelperInvocation-04241",
          "text": "The variable decorated with <code>HelperInvocation</code> <strong class=\"purple\">must</strong> be declared as a boolean value",
          "page": "vkspec"
        }
      ]
    },
    "HitKindKHR": {
      "core": [
        {
          "vuid": "VUID-HitKindKHR-HitKindKHR-04242",
          "text": "The <code>HitKindKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>AnyHitKHR</code> or <code>ClosestHitKHR</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-HitKindKHR-HitKindKHR-04243",
          "text": "The variable decorated with <code>HitKindKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-HitKindKHR-HitKindKHR-04244",
          "text": "The variable decorated with <code>HitKindKHR</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "HitTNV": {
      "core": [
        {
          "vuid": "VUID-HitTNV-HitTNV-04245",
          "text": "The <code>HitTNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>AnyHitNV</code> or <code>ClosestHitNV</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-HitTNV-HitTNV-04246",
          "text": "The variable decorated with <code>HitTNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-HitTNV-HitTNV-04247",
          "text": "The variable decorated with <code>HitTNV</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit floating-point value",
          "page": "vkspec"
        }
      ]
    },
    "HitTriangleVertexPositionsKHR": {
      "core": [
        {
          "vuid": "VUID-HitTriangleVertexPositionsKHR-HitTriangleVertexPositionsKHR-08747",
          "text": "The <code>HitTriangleVertexPositionsKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>AnyHitKHR</code> or <code>ClosestHitKHR</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-HitTriangleVertexPositionsKHR-HitTriangleVertexPositionsKHR-08748",
          "text": "The variable decorated with <code>HitTriangleVertexPositionsKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-HitTriangleVertexPositionsKHR-HitTriangleVertexPositionsKHR-08749",
          "text": "The variable decorated with <code>HitTriangleVertexPositionsKHR</code> <strong class=\"purple\">must</strong> be declared as an array of three vectors of three 32-bit float values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-HitTriangleVertexPositionsKHR-HitTriangleVertexPositionsKHR-08750",
          "text": "The variable decorated with <code>HitTriangleVertexPositionsKHR</code> <strong class=\"purple\">must</strong> be used only if the value of <code>HitKindKHR</code> is <code>HitKindFrontFacingTriangleKHR</code> or <code>HitKindBackFacingTriangleKHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-HitTriangleVertexPositionsKHR-None-08751",
          "text": "The acceleration structure corresponding to the current intersection <strong class=\"purple\">must</strong> have been built with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "IncomingRayFlagsKHR": {
      "core": [
        {
          "vuid": "VUID-IncomingRayFlagsKHR-IncomingRayFlagsKHR-04248",
          "text": "The <code>IncomingRayFlagsKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, <code>ClosestHitKHR</code>, or <code>MissKHR</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-IncomingRayFlagsKHR-IncomingRayFlagsKHR-04249",
          "text": "The variable decorated with <code>IncomingRayFlagsKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-IncomingRayFlagsKHR-IncomingRayFlagsKHR-04250",
          "text": "The variable decorated with <code>IncomingRayFlagsKHR</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "IndexCountHUAWEI": {
      "core": [
        {
          "vuid": "VUID-IndexCountHUAWEI-IndexCountHUAWEI-07805",
          "text": "The <code>IndexCountHUAWEI</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>ClusterCullingHUAWEI</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-IndexCountHUAWEI-IndexCountHUAWEI-07806",
          "text": "The variable decorated with <code>IndexCountHUAWEI</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "InstanceCountHUAWEI": {
      "core": [
        {
          "vuid": "VUID-InstanceCountHUAWEI-InstanceCountHUAWEI-07807",
          "text": "The <code>InstanceCountHUAWEI</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>ClusterCullingHUAWEI</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-InstanceCountHUAWEI-InstanceCountHUAWEI-07808",
          "text": "The variable decorated with <code>InstanceCountHUAWEI</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "InstanceCustomIndexKHR": {
      "core": [
        {
          "vuid": "VUID-InstanceCustomIndexKHR-InstanceCustomIndexKHR-04251",
          "text": "The <code>InstanceCustomIndexKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, or <code>ClosestHitKHR</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-InstanceCustomIndexKHR-InstanceCustomIndexKHR-04252",
          "text": "The variable decorated with <code>InstanceCustomIndexKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-InstanceCustomIndexKHR-InstanceCustomIndexKHR-04253",
          "text": "The variable decorated with <code>InstanceCustomIndexKHR</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "InstanceId": {
      "core": [
        {
          "vuid": "VUID-InstanceId-InstanceId-04254",
          "text": "The <code>InstanceId</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, or <code>ClosestHitKHR</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-InstanceId-InstanceId-04255",
          "text": "The variable decorated with <code>InstanceId</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-InstanceId-InstanceId-04256",
          "text": "The variable decorated with <code>InstanceId</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "InvocationId": {
      "core": [
        {
          "vuid": "VUID-InvocationId-InvocationId-04257",
          "text": "The <code>InvocationId</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>TessellationControl</code> or <code>Geometry</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-InvocationId-InvocationId-04258",
          "text": "The variable decorated with <code>InvocationId</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-InvocationId-InvocationId-04259",
          "text": "The variable decorated with <code>InvocationId</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "InvocationsPerPixelNV": {
      "core": [
        {
          "vuid": "VUID-InvocationsPerPixelNV-InvocationsPerPixelNV-04260",
          "text": "The <code>InvocationsPerPixelNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-InvocationsPerPixelNV-InvocationsPerPixelNV-04261",
          "text": "The variable decorated with <code>InvocationsPerPixelNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-InvocationsPerPixelNV-InvocationsPerPixelNV-04262",
          "text": "The variable decorated with <code>InvocationsPerPixelNV</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "InstanceIndex": {
      "core": [
        {
          "vuid": "VUID-InstanceIndex-InstanceIndex-04263",
          "text": "The <code>InstanceIndex</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Vertex</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-InstanceIndex-InstanceIndex-04264",
          "text": "The variable decorated with <code>InstanceIndex</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-InstanceIndex-InstanceIndex-04265",
          "text": "The variable decorated with <code>InstanceIndex</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "LaunchIdKHR": {
      "core": [
        {
          "vuid": "VUID-LaunchIdKHR-LaunchIdKHR-04266",
          "text": "The <code>LaunchIdKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>RayGenerationKHR</code>, <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, <code>ClosestHitKHR</code>, <code>MissKHR</code>, or <code>CallableKHR</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-LaunchIdKHR-LaunchIdKHR-04267",
          "text": "The variable decorated with <code>LaunchIdKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-LaunchIdKHR-LaunchIdKHR-04268",
          "text": "The variable decorated with <code>LaunchIdKHR</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit integer values",
          "page": "vkspec"
        }
      ]
    },
    "LaunchSizeKHR": {
      "core": [
        {
          "vuid": "VUID-LaunchSizeKHR-LaunchSizeKHR-04269",
          "text": "The <code>LaunchSizeKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>RayGenerationKHR</code>, <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, <code>ClosestHitKHR</code>, <code>MissKHR</code>, or <code>CallableKHR</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-LaunchSizeKHR-LaunchSizeKHR-04270",
          "text": "The variable decorated with <code>LaunchSizeKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-LaunchSizeKHR-LaunchSizeKHR-04271",
          "text": "The variable decorated with <code>LaunchSizeKHR</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit integer values",
          "page": "vkspec"
        }
      ]
    },
    "Layer": {
      "core": [
        {
          "vuid": "VUID-Layer-Layer-04272",
          "text": "The <code>Layer</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshEXT</code>, <code>MeshNV</code>, <code>Vertex</code>, <code>TessellationEvaluation</code>, <code>Geometry</code>, or <code>Fragment</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-Layer-Layer-04273",
          "text": "If the <a href=\"#features-shaderOutputLayer\"><code>shaderOutputLayer</code></a> feature is not enabled then the <code>Layer</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Geometry</code> or <code>Fragment</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-Layer-Layer-04274",
          "text": "The variable decorated with <code>Layer</code> within the <code>MeshEXT</code>, <code>MeshNV</code>, <code>Vertex</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> <code>Execution</code> <code>Model</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-Layer-Layer-04275",
          "text": "The variable decorated with <code>Layer</code> within the <code>Fragment</code> <code>Execution</code> <code>Model</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-Layer-Layer-04276",
          "text": "The variable decorated with <code>Layer</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-Layer-Layer-07039",
          "text": "The variable decorated with <code>Layer</code> within the <code>MeshEXT</code> <code>Execution</code> <code>Model</code> <strong class=\"purple\">must</strong> also be decorated with the <code>PerPrimitiveEXT</code> decoration",
          "page": "vkspec"
        }
      ]
    },
    "LayerPerViewNV": {
      "core": [
        {
          "vuid": "VUID-LayerPerViewNV-LayerPerViewNV-04277",
          "text": "The <code>LayerPerViewNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshNV</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-LayerPerViewNV-LayerPerViewNV-04278",
          "text": "The variable decorated with <code>LayerPerViewNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-LayerPerViewNV-LayerPerViewNV-04279",
          "text": "The variable decorated with <code>LayerPerViewNV</code> <strong class=\"purple\">must</strong> also be decorated with the <code>PerViewNV</code> decoration",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-LayerPerViewNV-LayerPerViewNV-04280",
          "text": "The variable decorated with <code>LayerPerViewNV</code> <strong class=\"purple\">must</strong> be declared as an array of scalar 32-bit integer values",
          "page": "vkspec"
        }
      ]
    },
    "LocalInvocationId": {
      "core": [
        {
          "vuid": "VUID-LocalInvocationId-LocalInvocationId-04281",
          "text": "The <code>LocalInvocationId</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>GLCompute</code>, <code>MeshEXT</code>, <code>TaskEXT</code>, <code>MeshNV</code>, or <code>TaskNV</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-LocalInvocationId-LocalInvocationId-04282",
          "text": "The variable decorated with <code>LocalInvocationId</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-LocalInvocationId-LocalInvocationId-04283",
          "text": "The variable decorated with <code>LocalInvocationId</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit integer values",
          "page": "vkspec"
        }
      ]
    },
    "LocalInvocationIndex": {
      "core": [
        {
          "vuid": "VUID-LocalInvocationIndex-LocalInvocationIndex-04284",
          "text": "The <code>LocalInvocationIndex</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>GLCompute</code>, <code>MeshEXT</code>, <code>TaskEXT</code>, <code>MeshNV</code>, or <code>TaskNV</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-LocalInvocationIndex-LocalInvocationIndex-04285",
          "text": "The variable decorated with <code>LocalInvocationIndex</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-LocalInvocationIndex-LocalInvocationIndex-04286",
          "text": "The variable decorated with <code>LocalInvocationIndex</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "MeshViewCountNV": {
      "core": [
        {
          "vuid": "VUID-MeshViewCountNV-MeshViewCountNV-04287",
          "text": "The <code>MeshViewCountNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshNV</code> or <code>TaskNV</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-MeshViewCountNV-MeshViewCountNV-04288",
          "text": "The variable decorated with <code>MeshViewCountNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-MeshViewCountNV-MeshViewCountNV-04289",
          "text": "The variable decorated with <code>MeshViewCountNV</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "MeshViewIndicesNV": {
      "core": [
        {
          "vuid": "VUID-MeshViewIndicesNV-MeshViewIndicesNV-04290",
          "text": "The <code>MeshViewIndicesNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshNV</code> or <code>TaskNV</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-MeshViewIndicesNV-MeshViewIndicesNV-04291",
          "text": "The variable decorated with <code>MeshViewIndicesNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-MeshViewIndicesNV-MeshViewIndicesNV-04292",
          "text": "The variable decorated with <code>MeshViewIndicesNV</code> <strong class=\"purple\">must</strong> be declared as an array of scalar 32-bit integer values",
          "page": "vkspec"
        }
      ]
    },
    "NumSubgroups": {
      "core": [
        {
          "vuid": "VUID-NumSubgroups-NumSubgroups-04293",
          "text": "The <code>NumSubgroups</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>GLCompute</code>, <code>MeshEXT</code>, <code>TaskEXT</code>, <code>MeshNV</code>, or <code>TaskNV</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-NumSubgroups-NumSubgroups-04294",
          "text": "The variable decorated with <code>NumSubgroups</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-NumSubgroups-NumSubgroups-04295",
          "text": "The variable decorated with <code>NumSubgroups</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "NumWorkgroups": {
      "core": [
        {
          "vuid": "VUID-NumWorkgroups-NumWorkgroups-04296",
          "text": "The <code>NumWorkgroups</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>GLCompute</code>, <code>MeshEXT</code>, or <code>TaskEXT</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-NumWorkgroups-NumWorkgroups-04297",
          "text": "The variable decorated with <code>NumWorkgroups</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-NumWorkgroups-NumWorkgroups-04298",
          "text": "The variable decorated with <code>NumWorkgroups</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit integer values",
          "page": "vkspec"
        }
      ]
    },
    "ObjectRayDirectionKHR": {
      "core": [
        {
          "vuid": "VUID-ObjectRayDirectionKHR-ObjectRayDirectionKHR-04299",
          "text": "The <code>ObjectRayDirectionKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, or <code>ClosestHitKHR</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-ObjectRayDirectionKHR-ObjectRayDirectionKHR-04300",
          "text": "The variable decorated with <code>ObjectRayDirectionKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-ObjectRayDirectionKHR-ObjectRayDirectionKHR-04301",
          "text": "The variable decorated with <code>ObjectRayDirectionKHR</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit floating-point values",
          "page": "vkspec"
        }
      ]
    },
    "ObjectRayOriginKHR": {
      "core": [
        {
          "vuid": "VUID-ObjectRayOriginKHR-ObjectRayOriginKHR-04302",
          "text": "The <code>ObjectRayOriginKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, or <code>ClosestHitKHR</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-ObjectRayOriginKHR-ObjectRayOriginKHR-04303",
          "text": "The variable decorated with <code>ObjectRayOriginKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-ObjectRayOriginKHR-ObjectRayOriginKHR-04304",
          "text": "The variable decorated with <code>ObjectRayOriginKHR</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit floating-point values",
          "page": "vkspec"
        }
      ]
    },
    "ObjectToWorldKHR": {
      "core": [
        {
          "vuid": "VUID-ObjectToWorldKHR-ObjectToWorldKHR-04305",
          "text": "The <code>ObjectToWorldKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, or <code>ClosestHitKHR</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-ObjectToWorldKHR-ObjectToWorldKHR-04306",
          "text": "The variable decorated with <code>ObjectToWorldKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-ObjectToWorldKHR-ObjectToWorldKHR-04307",
          "text": "The variable decorated with <code>ObjectToWorldKHR</code> <strong class=\"purple\">must</strong> be declared as a matrix with four columns of three-component vectors of 32-bit floating-point values",
          "page": "vkspec"
        }
      ]
    },
    "PatchVertices": {
      "core": [
        {
          "vuid": "VUID-PatchVertices-PatchVertices-04308",
          "text": "The <code>PatchVertices</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>TessellationControl</code> or <code>TessellationEvaluation</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PatchVertices-PatchVertices-04309",
          "text": "The variable decorated with <code>PatchVertices</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PatchVertices-PatchVertices-04310",
          "text": "The variable decorated with <code>PatchVertices</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "PointCoord": {
      "core": [
        {
          "vuid": "VUID-PointCoord-PointCoord-04311",
          "text": "The <code>PointCoord</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PointCoord-PointCoord-04312",
          "text": "The variable decorated with <code>PointCoord</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PointCoord-PointCoord-04313",
          "text": "The variable decorated with <code>PointCoord</code> <strong class=\"purple\">must</strong> be declared as a two-component vector of 32-bit floating-point values",
          "page": "vkspec"
        }
      ]
    },
    "PointSize": {
      "core": [
        {
          "vuid": "VUID-PointSize-PointSize-04314",
          "text": "The <code>PointSize</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshEXT</code>, <code>MeshNV</code>, <code>Vertex</code>, <code>TessellationControl</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PointSize-PointSize-04315",
          "text": "The variable decorated with <code>PointSize</code> within the <code>MeshEXT</code>, <code>MeshNV</code>, or <code>Vertex</code> <code>Execution</code> <code>Model</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PointSize-PointSize-04316",
          "text": "The variable decorated with <code>PointSize</code> within the <code>TessellationControl</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> <code>Execution</code> <code>Model</code> <strong class=\"purple\">must</strong> not be declared using a <code>Storage</code> <code>Class</code> other than <code>Input</code> or <code>Output</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PointSize-PointSize-04317",
          "text": "The variable decorated with <code>PointSize</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit floating-point value",
          "page": "vkspec"
        }
      ]
    },
    "Position": {
      "core": [
        {
          "vuid": "VUID-Position-Position-04318",
          "text": "The <code>Position</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshEXT</code>, <code>MeshNV</code>, <code>Vertex</code>, <code>TessellationControl</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-Position-Position-04319",
          "text": "The variable decorated with <code>Position</code> within the <code>MeshEXT</code>, <code>MeshNV</code>, or <code>Vertex</code> <code>Execution</code> <code>Model</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-Position-Position-04320",
          "text": "The variable decorated with <code>Position</code> within the <code>TessellationControl</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> <code>Execution</code> <code>Model</code> <strong class=\"purple\">must</strong> not be declared using a <code>Storage</code> <code>Class</code> other than <code>Input</code> or <code>Output</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-Position-Position-04321",
          "text": "The variable decorated with <code>Position</code> <strong class=\"purple\">must</strong> be declared as a four-component vector of 32-bit floating-point values",
          "page": "vkspec"
        }
      ]
    },
    "PositionPerViewNV": {
      "core": [
        {
          "vuid": "VUID-PositionPerViewNV-PositionPerViewNV-04322",
          "text": "The <code>PositionPerViewNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshNV</code>, <code>Vertex</code>, <code>TessellationControl</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PositionPerViewNV-PositionPerViewNV-04323",
          "text": "The variable decorated with <code>PositionPerViewNV</code> within the <code>Vertex</code>, or <code>MeshNV</code> <code>Execution</code> <code>Model</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PositionPerViewNV-PositionPerViewNV-04324",
          "text": "The variable decorated with <code>PositionPerViewNV</code> within the <code>TessellationControl</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> <code>Execution</code> <code>Model</code> <strong class=\"purple\">must</strong> not be declared using a <code>Storage</code> <code>Class</code> other than <code>Input</code> or <code>Output</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PositionPerViewNV-PositionPerViewNV-04325",
          "text": "The variable decorated with <code>PositionPerViewNV</code> <strong class=\"purple\">must</strong> be declared as an array of four-component vector of 32-bit floating-point values with at least as many elements as the maximum view in the subpass&#8217;s view mask plus one",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PositionPerViewNV-PositionPerViewNV-04326",
          "text": "The array variable decorated with <code>PositionPerViewNV</code> <strong class=\"purple\">must</strong> only be indexed by a constant or specialization constant",
          "page": "vkspec"
        }
      ]
    },
    "PrimitiveCountNV": {
      "core": [
        {
          "vuid": "VUID-PrimitiveCountNV-PrimitiveCountNV-04327",
          "text": "The <code>PrimitiveCountNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshNV</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PrimitiveCountNV-PrimitiveCountNV-04328",
          "text": "The variable decorated with <code>PrimitiveCountNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PrimitiveCountNV-PrimitiveCountNV-04329",
          "text": "The variable decorated with <code>PrimitiveCountNV</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "PrimitiveId": {
      "core": [
        {
          "vuid": "VUID-PrimitiveId-PrimitiveId-04330",
          "text": "The <code>PrimitiveId</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshEXT</code>, <code>MeshNV</code>, <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, <code>ClosestHitKHR</code>, <code>TessellationControl</code>, <code>TessellationEvaluation</code>, <code>Geometry</code>, or <code>Fragment</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PrimitiveId-Fragment-04331",
          "text": "If pipeline contains both the <code>Fragment</code> and <code>Geometry</code> <code>Execution</code> <code>Model</code> and a variable decorated with <code>PrimitiveId</code> is read from <code>Fragment</code> shader, then the <code>Geometry</code> shader <strong class=\"purple\">must</strong> write to the output variables decorated with <code>PrimitiveId</code> in all execution paths",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PrimitiveId-Fragment-04332",
          "text": "If pipeline contains both the <code>Fragment</code> and <code>MeshEXT</code> or <code>MeshNV</code> <code>Execution</code> <code>Model</code> and a variable decorated with <code>PrimitiveId</code> is read from <code>Fragment</code> shader, then the <code>MeshEXT</code> or <code>MeshNV</code> shader <strong class=\"purple\">must</strong> write to the output variables decorated with <code>PrimitiveId</code> in all execution paths",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PrimitiveId-Fragment-04333",
          "text": "If <code>Fragment</code> <code>Execution</code> <code>Model</code> contains a variable decorated with <code>PrimitiveId</code>, then either the <code>MeshShadingEXT</code>, <code>MeshShadingNV</code>, <code>Geometry</code> or <code>Tessellation</code> capability <strong class=\"purple\">must</strong> also be declared",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PrimitiveId-PrimitiveId-04334",
          "text": "The variable decorated with <code>PrimitiveId</code> within the <code>TessellationControl</code>, <code>TessellationEvaluation</code>, <code>Fragment</code>, <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, or <code>ClosestHitKHR</code> <code>Execution</code> <code>Model</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PrimitiveId-PrimitiveId-04335",
          "text": "The variable decorated with <code>PrimitiveId</code> within the <code>Geometry</code> <code>Execution</code> <code>Model</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> or <code>Output</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PrimitiveId-PrimitiveId-04336",
          "text": "The variable decorated with <code>PrimitiveId</code> within the <code>MeshEXT</code> or <code>MeshNV</code> <code>Execution</code> <code>Model</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PrimitiveId-PrimitiveId-04337",
          "text": "The variable decorated with <code>PrimitiveId</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PrimitiveId-PrimitiveId-07040",
          "text": "The variable decorated with <code>PrimitiveId</code> within the <code>MeshEXT</code> <code>Execution</code> <code>Model</code> <strong class=\"purple\">must</strong> also be decorated with the <code>PerPrimitiveEXT</code> decoration",
          "page": "vkspec"
        }
      ]
    },
    "PrimitiveIndicesNV": {
      "core": [
        {
          "vuid": "VUID-PrimitiveIndicesNV-PrimitiveIndicesNV-04338",
          "text": "The <code>PrimitiveIndicesNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshNV</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PrimitiveIndicesNV-PrimitiveIndicesNV-04339",
          "text": "The variable decorated with <code>PrimitiveIndicesNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PrimitiveIndicesNV-PrimitiveIndicesNV-04340",
          "text": "The variable decorated with <code>PrimitiveIndicesNV</code> <strong class=\"purple\">must</strong> be declared as an array of scalar 32-bit integer values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PrimitiveIndicesNV-PrimitiveIndicesNV-04341",
          "text": "All index values of the array decorated with <code>PrimitiveIndicesNV</code> <strong class=\"purple\">must</strong> be in the range <span class=\"eq\">[0, N-1]</span>, where <span class=\"eq\">N</span> is the value specified by the <code>OutputVertices</code> <code>Execution</code> <code>Mode</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PrimitiveIndicesNV-OutputPoints-04342",
          "text": "If the <code>Execution</code> <code>Mode</code> is <code>OutputPoints</code>, then the array decorated with <code>PrimitiveIndicesNV</code> <strong class=\"purple\">must</strong> be the size of the value specified by <code>OutputPrimitivesNV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PrimitiveIndicesNV-OutputLinesNV-04343",
          "text": "If the <code>Execution</code> <code>Mode</code> is <code>OutputLinesNV</code>, then the array decorated with <code>PrimitiveIndicesNV</code> <strong class=\"purple\">must</strong> be the size of two times the value specified by <code>OutputPrimitivesNV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PrimitiveIndicesNV-OutputTrianglesNV-04344",
          "text": "If the <code>Execution</code> <code>Mode</code> is <code>OutputTrianglesNV</code>, then the array decorated with <code>PrimitiveIndicesNV</code> <strong class=\"purple\">must</strong> be the size of three times the value specified by <code>OutputPrimitivesNV</code>",
          "page": "vkspec"
        }
      ]
    },
    "PrimitivePointIndicesEXT": {
      "core": [
        {
          "vuid": "VUID-PrimitivePointIndicesEXT-PrimitivePointIndicesEXT-07041",
          "text": "The <code>PrimitivePointIndicesEXT</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshEXT</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PrimitivePointIndicesEXT-PrimitivePointIndicesEXT-07042",
          "text": "The <code>PrimitivePointIndicesEXT</code> decoration <strong class=\"purple\">must</strong> be used with the <code>OutputPoints</code> <code>Execution</code> <code>Mode</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PrimitivePointIndicesEXT-PrimitivePointIndicesEXT-07043",
          "text": "The variable decorated with <code>PrimitivePointIndicesEXT</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PrimitivePointIndicesEXT-PrimitivePointIndicesEXT-07044",
          "text": "The variable decorated with <code>PrimitivePointIndicesEXT</code> <strong class=\"purple\">must</strong> be declared as an array of scalar 32-bit integer values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PrimitivePointIndicesEXT-PrimitivePointIndicesEXT-07045",
          "text": "All index values of the array decorated with <code>PrimitivePointIndicesEXT</code> <strong class=\"purple\">must</strong> be in the range <span class=\"eq\">[0, N-1]</span>, where <span class=\"eq\">N</span> is the value specified by the <code>OutputVertices</code> <code>Execution</code> <code>Mode</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PrimitivePointIndicesEXT-PrimitivePointIndicesEXT-07046",
          "text": "The size of the array decorated with <code>PrimitivePointIndicesEXT</code> <strong class=\"purple\">must</strong> match the value specified by <code>OutputPrimitivesEXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "PrimitiveLineIndicesEXT": {
      "core": [
        {
          "vuid": "VUID-PrimitiveLineIndicesEXT-PrimitiveLineIndicesEXT-07047",
          "text": "The <code>PrimitiveLineIndicesEXT</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshEXT</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PrimitiveLineIndicesEXT-PrimitiveLineIndicesEXT-07048",
          "text": "The <code>PrimitiveLineIndicesEXT</code> decoration <strong class=\"purple\">must</strong> be used with the <code>OutputLinesEXT</code> <code>Execution</code> <code>Mode</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PrimitiveLineIndicesEXT-PrimitiveLineIndicesEXT-07049",
          "text": "The variable decorated with <code>PrimitiveLineIndicesEXT</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PrimitiveLineIndicesEXT-PrimitiveLineIndicesEXT-07050",
          "text": "The variable decorated with <code>PrimitiveLineIndicesEXT</code> <strong class=\"purple\">must</strong> be declared as an array of two component vector 32-bit integer values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PrimitiveLineIndicesEXT-PrimitiveLineIndicesEXT-07051",
          "text": "All index values of the array decorated with <code>PrimitiveLineIndicesEXT</code> <strong class=\"purple\">must</strong> be in the range <span class=\"eq\">[0, N-1]</span>, where <span class=\"eq\">N</span> is the value specified by the <code>OutputVertices</code> <code>Execution</code> <code>Mode</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PrimitiveLineIndicesEXT-PrimitiveLineIndicesEXT-07052",
          "text": "The size of the array decorated with <code>PrimitiveLineIndicesEXT</code> <strong class=\"purple\">must</strong> match the value specified by <code>OutputPrimitivesEXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "PrimitiveTriangleIndicesEXT": {
      "core": [
        {
          "vuid": "VUID-PrimitiveTriangleIndicesEXT-PrimitiveTriangleIndicesEXT-07053",
          "text": "The <code>PrimitiveTriangleIndicesEXT</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshEXT</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PrimitiveTriangleIndicesEXT-PrimitiveTriangleIndicesEXT-07054",
          "text": "The <code>PrimitiveTriangleIndicesEXT</code> decoration <strong class=\"purple\">must</strong> be used with the <code>OutputTrianglesEXT</code> <code>Execution</code> <code>Mode</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PrimitiveTriangleIndicesEXT-PrimitiveTriangleIndicesEXT-07055",
          "text": "The variable decorated with <code>PrimitiveTriangleIndicesEXT</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PrimitiveTriangleIndicesEXT-PrimitiveTriangleIndicesEXT-07056",
          "text": "The variable decorated with <code>PrimitiveTriangleIndicesEXT</code> <strong class=\"purple\">must</strong> be declared as an array of three component vector 32-bit integer values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PrimitiveTriangleIndicesEXT-PrimitiveTriangleIndicesEXT-07057",
          "text": "All index values of the array decorated with <code>PrimitiveTriangleIndicesEXT</code> <strong class=\"purple\">must</strong> be in the range <span class=\"eq\">[0, N-1]</span>, where <span class=\"eq\">N</span> is the value specified by the <code>OutputVertices</code> <code>Execution</code> <code>Mode</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PrimitiveTriangleIndicesEXT-PrimitiveTriangleIndicesEXT-07058",
          "text": "The size of the array decorated with <code>PrimitiveTriangleIndicesEXT</code> <strong class=\"purple\">must</strong> match the value specified by <code>OutputPrimitivesEXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "PrimitiveShadingRateKHR": {
      "core": [
        {
          "vuid": "VUID-PrimitiveShadingRateKHR-PrimitiveShadingRateKHR-04484",
          "text": "The <code>PrimitiveShadingRateKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshEXT</code>, <code>MeshNV</code>, <code>Vertex</code>, or <code>Geometry</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PrimitiveShadingRateKHR-PrimitiveShadingRateKHR-04485",
          "text": "The variable decorated with <code>PrimitiveShadingRateKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PrimitiveShadingRateKHR-PrimitiveShadingRateKHR-04486",
          "text": "The variable decorated with <code>PrimitiveShadingRateKHR</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PrimitiveShadingRateKHR-PrimitiveShadingRateKHR-04487",
          "text": "The value written to <code>PrimitiveShadingRateKHR</code> <strong class=\"purple\">must</strong> include no more than one of <code>Vertical2Pixels</code> and <code>Vertical4Pixels</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PrimitiveShadingRateKHR-PrimitiveShadingRateKHR-04488",
          "text": "The value written to <code>PrimitiveShadingRateKHR</code> <strong class=\"purple\">must</strong> include no more than one of <code>Horizontal2Pixels</code> and <code>Horizontal4Pixels</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PrimitiveShadingRateKHR-PrimitiveShadingRateKHR-04489",
          "text": "The value written to <code>PrimitiveShadingRateKHR</code> <strong class=\"purple\">must</strong> not have any bits set other than those defined by <strong>Fragment Shading Rate Flags</strong> enumerants in the SPIR-V specification",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-PrimitiveShadingRateKHR-PrimitiveShadingRateKHR-07059",
          "text": "The variable decorated with <code>PrimitiveShadingRateKHR</code> within the <code>MeshEXT</code> <code>Execution</code> <code>Model</code> <strong class=\"purple\">must</strong> also be decorated with the <code>PerPrimitiveEXT</code> decoration",
          "page": "vkspec"
        }
      ]
    },
    "RayGeometryIndexKHR": {
      "core": [
        {
          "vuid": "VUID-RayGeometryIndexKHR-RayGeometryIndexKHR-04345",
          "text": "The <code>RayGeometryIndexKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, or <code>ClosestHitKHR</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RayGeometryIndexKHR-RayGeometryIndexKHR-04346",
          "text": "The variable decorated with <code>RayGeometryIndexKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RayGeometryIndexKHR-RayGeometryIndexKHR-04347",
          "text": "The variable decorated with <code>RayGeometryIndexKHR</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "RayTmaxKHR": {
      "core": [
        {
          "vuid": "VUID-RayTmaxKHR-RayTmaxKHR-04348",
          "text": "The <code>RayTmaxKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, <code>ClosestHitKHR</code>, or <code>MissKHR</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RayTmaxKHR-RayTmaxKHR-04349",
          "text": "The variable decorated with <code>RayTmaxKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RayTmaxKHR-RayTmaxKHR-04350",
          "text": "The variable decorated with <code>RayTmaxKHR</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit floating-point value",
          "page": "vkspec"
        }
      ]
    },
    "RayTminKHR": {
      "core": [
        {
          "vuid": "VUID-RayTminKHR-RayTminKHR-04351",
          "text": "The <code>RayTminKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, <code>ClosestHitKHR</code>, or <code>MissKHR</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RayTminKHR-RayTminKHR-04352",
          "text": "The variable decorated with <code>RayTminKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RayTminKHR-RayTminKHR-04353",
          "text": "The variable decorated with <code>RayTminKHR</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit floating-point value",
          "page": "vkspec"
        }
      ]
    },
    "SampleId": {
      "core": [
        {
          "vuid": "VUID-SampleId-SampleId-04354",
          "text": "The <code>SampleId</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-SampleId-SampleId-04355",
          "text": "The variable decorated with <code>SampleId</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-SampleId-SampleId-04356",
          "text": "The variable decorated with <code>SampleId</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "SampleMask": {
      "core": [
        {
          "vuid": "VUID-SampleMask-SampleMask-04357",
          "text": "The <code>SampleMask</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-SampleMask-SampleMask-04358",
          "text": "The variable decorated with <code>SampleMask</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> or <code>Output</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-SampleMask-SampleMask-04359",
          "text": "The variable decorated with <code>SampleMask</code> <strong class=\"purple\">must</strong> be declared as an array of 32-bit integer values",
          "page": "vkspec"
        }
      ]
    },
    "SamplePosition": {
      "core": [
        {
          "vuid": "VUID-SamplePosition-SamplePosition-04360",
          "text": "The <code>SamplePosition</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-SamplePosition-SamplePosition-04361",
          "text": "The variable decorated with <code>SamplePosition</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-SamplePosition-SamplePosition-04362",
          "text": "The variable decorated with <code>SamplePosition</code> <strong class=\"purple\">must</strong> be declared as a two-component vector of 32-bit floating-point values",
          "page": "vkspec"
        }
      ]
    },
    "ShadingRateKHR": {
      "core": [
        {
          "vuid": "VUID-ShadingRateKHR-ShadingRateKHR-04490",
          "text": "The <code>ShadingRateKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-ShadingRateKHR-ShadingRateKHR-04491",
          "text": "The variable decorated with <code>ShadingRateKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-ShadingRateKHR-ShadingRateKHR-04492",
          "text": "The variable decorated with <code>ShadingRateKHR</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "SMCountNV": {
      "core": [
        {
          "vuid": "VUID-SMCountNV-SMCountNV-04363",
          "text": "The variable decorated with <code>SMCountNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-SMCountNV-SMCountNV-04364",
          "text": "The variable decorated with <code>SMCountNV</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "SMIDNV": {
      "core": [
        {
          "vuid": "VUID-SMIDNV-SMIDNV-04365",
          "text": "The variable decorated with <code>SMIDNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-SMIDNV-SMIDNV-04366",
          "text": "The variable decorated with <code>SMIDNV</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "SubgroupId": {
      "core": [
        {
          "vuid": "VUID-SubgroupId-SubgroupId-04367",
          "text": "The <code>SubgroupId</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>GLCompute</code>, <code>MeshEXT</code>, <code>TaskEXT</code>, <code>MeshNV</code>, or <code>TaskNV</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-SubgroupId-SubgroupId-04368",
          "text": "The variable decorated with <code>SubgroupId</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-SubgroupId-SubgroupId-04369",
          "text": "The variable decorated with <code>SubgroupId</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "SubgroupEqMask": {
      "core": [
        {
          "vuid": "VUID-SubgroupEqMask-SubgroupEqMask-04370",
          "text": "The variable decorated with <code>SubgroupEqMask</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-SubgroupEqMask-SubgroupEqMask-04371",
          "text": "The variable decorated with <code>SubgroupEqMask</code> <strong class=\"purple\">must</strong> be declared as a four-component vector of 32-bit integer values",
          "page": "vkspec"
        }
      ]
    },
    "SubgroupGeMask": {
      "core": [
        {
          "vuid": "VUID-SubgroupGeMask-SubgroupGeMask-04372",
          "text": "The variable decorated with <code>SubgroupGeMask</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-SubgroupGeMask-SubgroupGeMask-04373",
          "text": "The variable decorated with <code>SubgroupGeMask</code> <strong class=\"purple\">must</strong> be declared as a four-component vector of 32-bit integer values",
          "page": "vkspec"
        }
      ]
    },
    "SubgroupGtMask": {
      "core": [
        {
          "vuid": "VUID-SubgroupGtMask-SubgroupGtMask-04374",
          "text": "The variable decorated with <code>SubgroupGtMask</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-SubgroupGtMask-SubgroupGtMask-04375",
          "text": "The variable decorated with <code>SubgroupGtMask</code> <strong class=\"purple\">must</strong> be declared as a four-component vector of 32-bit integer values",
          "page": "vkspec"
        }
      ]
    },
    "SubgroupLeMask": {
      "core": [
        {
          "vuid": "VUID-SubgroupLeMask-SubgroupLeMask-04376",
          "text": "The variable decorated with <code>SubgroupLeMask</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-SubgroupLeMask-SubgroupLeMask-04377",
          "text": "The variable decorated with <code>SubgroupLeMask</code> <strong class=\"purple\">must</strong> be declared as a four-component vector of 32-bit integer values",
          "page": "vkspec"
        }
      ]
    },
    "SubgroupLtMask": {
      "core": [
        {
          "vuid": "VUID-SubgroupLtMask-SubgroupLtMask-04378",
          "text": "The variable decorated with <code>SubgroupLtMask</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-SubgroupLtMask-SubgroupLtMask-04379",
          "text": "The variable decorated with <code>SubgroupLtMask</code> <strong class=\"purple\">must</strong> be declared as a four-component vector of 32-bit integer values",
          "page": "vkspec"
        }
      ]
    },
    "SubgroupLocalInvocationId": {
      "core": [
        {
          "vuid": "VUID-SubgroupLocalInvocationId-SubgroupLocalInvocationId-04380",
          "text": "The variable decorated with <code>SubgroupLocalInvocationId</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-SubgroupLocalInvocationId-SubgroupLocalInvocationId-04381",
          "text": "The variable decorated with <code>SubgroupLocalInvocationId</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "SubgroupSize": {
      "core": [
        {
          "vuid": "VUID-SubgroupSize-SubgroupSize-04382",
          "text": "The variable decorated with <code>SubgroupSize</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-SubgroupSize-SubgroupSize-04383",
          "text": "The variable decorated with <code>SubgroupSize</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "TaskCountNV": {
      "core": [
        {
          "vuid": "VUID-TaskCountNV-TaskCountNV-04384",
          "text": "The <code>TaskCountNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>TaskNV</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-TaskCountNV-TaskCountNV-04385",
          "text": "The variable decorated with <code>TaskCountNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-TaskCountNV-TaskCountNV-04386",
          "text": "The variable decorated with <code>TaskCountNV</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "TessCoord": {
      "core": [
        {
          "vuid": "VUID-TessCoord-TessCoord-04387",
          "text": "The <code>TessCoord</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>TessellationEvaluation</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-TessCoord-TessCoord-04388",
          "text": "The variable decorated with <code>TessCoord</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-TessCoord-TessCoord-04389",
          "text": "The variable decorated with <code>TessCoord</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit floating-point values",
          "page": "vkspec"
        }
      ]
    },
    "TessLevelOuter": {
      "core": [
        {
          "vuid": "VUID-TessLevelOuter-TessLevelOuter-04390",
          "text": "The <code>TessLevelOuter</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>TessellationControl</code> or <code>TessellationEvaluation</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-TessLevelOuter-TessLevelOuter-04391",
          "text": "The variable decorated with <code>TessLevelOuter</code> within the <code>TessellationControl</code> <code>Execution</code> <code>Model</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-TessLevelOuter-TessLevelOuter-04392",
          "text": "The variable decorated with <code>TessLevelOuter</code> within the <code>TessellationEvaluation</code> <code>Execution</code> <code>Model</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-TessLevelOuter-TessLevelOuter-04393",
          "text": "The variable decorated with <code>TessLevelOuter</code> <strong class=\"purple\">must</strong> be declared as an array of size four, containing 32-bit floating-point values",
          "page": "vkspec"
        }
      ]
    },
    "TessLevelInner": {
      "core": [
        {
          "vuid": "VUID-TessLevelInner-TessLevelInner-04394",
          "text": "The <code>TessLevelInner</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>TessellationControl</code> or <code>TessellationEvaluation</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-TessLevelInner-TessLevelInner-04395",
          "text": "The variable decorated with <code>TessLevelInner</code> within the <code>TessellationControl</code> <code>Execution</code> <code>Model</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-TessLevelInner-TessLevelInner-04396",
          "text": "The variable decorated with <code>TessLevelInner</code> within the <code>TessellationEvaluation</code> <code>Execution</code> <code>Model</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-TessLevelInner-TessLevelInner-04397",
          "text": "The variable decorated with <code>TessLevelInner</code> <strong class=\"purple\">must</strong> be declared as an array of size two, containing 32-bit floating-point values",
          "page": "vkspec"
        }
      ]
    },
    "VertexCountHUAWEI": {
      "core": [
        {
          "vuid": "VUID-VertexCountHUAWEI-VertexCountHUAWEI-07809",
          "text": "The <code>VertexCountHUAWEI</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>ClusterCullingHUAWEI</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VertexCountHUAWEI-VertexCountHUAWEI-07810",
          "text": "The variable decorated with <code>VertexCountHUAWEI</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "VertexIndex": {
      "core": [
        {
          "vuid": "VUID-VertexIndex-VertexIndex-04398",
          "text": "The <code>VertexIndex</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Vertex</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VertexIndex-VertexIndex-04399",
          "text": "The variable decorated with <code>VertexIndex</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VertexIndex-VertexIndex-04400",
          "text": "The variable decorated with <code>VertexIndex</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "VertexOffsetHUAWEI": {
      "core": [
        {
          "vuid": "VUID-VertexOffsetHUAWEI-VertexOffsetHUAWEI-07811",
          "text": "The <code>VertexOffsetHUAWEI</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>ClusterCullingHUAWEI</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VertexOffsetHUAWEI-VertexOffsetHUAWEI-07812",
          "text": "The variable decorated with <code>VertexOffsetHUAWEI</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "ViewIndex": {
      "core": [
        {
          "vuid": "VUID-ViewIndex-ViewIndex-04401",
          "text": "The <code>ViewIndex</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshEXT</code>, <code>Vertex</code>, <code>Geometry</code>, <code>TessellationControl</code>, <code>TessellationEvaluation</code> or <code>Fragment</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-ViewIndex-ViewIndex-04402",
          "text": "The variable decorated with <code>ViewIndex</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-ViewIndex-ViewIndex-04403",
          "text": "The variable decorated with <code>ViewIndex</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "ViewportIndex": {
      "core": [
        {
          "vuid": "VUID-ViewportIndex-ViewportIndex-04404",
          "text": "The <code>ViewportIndex</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshEXT</code>, <code>MeshNV</code>, <code>Vertex</code>, <code>TessellationEvaluation</code>, <code>Geometry</code>, or <code>Fragment</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-ViewportIndex-ViewportIndex-04405",
          "text": "If the <a href=\"#features-shaderOutputViewportIndex\"><code>shaderOutputViewportIndex</code></a> feature is not enabled then the <code>ViewportIndex</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Geometry</code> or <code>Fragment</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-ViewportIndex-ViewportIndex-04406",
          "text": "The variable decorated with <code>ViewportIndex</code> within the <code>MeshEXT</code>, <code>MeshNV</code>, <code>Vertex</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> <code>Execution</code> <code>Model</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-ViewportIndex-ViewportIndex-04407",
          "text": "The variable decorated with <code>ViewportIndex</code> within the <code>Fragment</code> <code>Execution</code> <code>Model</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-ViewportIndex-ViewportIndex-04408",
          "text": "The variable decorated with <code>ViewportIndex</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-ViewportIndex-ViewportIndex-07060",
          "text": "The variable decorated with <code>ViewportIndex</code> within the <code>MeshEXT</code> <code>Execution</code> <code>Model</code> <strong class=\"purple\">must</strong> also be decorated with the <code>PerPrimitiveEXT</code> decoration",
          "page": "vkspec"
        }
      ]
    },
    "ViewportMaskNV": {
      "core": [
        {
          "vuid": "VUID-ViewportMaskNV-ViewportMaskNV-04409",
          "text": "The <code>ViewportMaskNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Vertex</code>, <code>MeshNV</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-ViewportMaskNV-ViewportMaskNV-04410",
          "text": "The variable decorated with <code>ViewportMaskNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-ViewportMaskNV-ViewportMaskNV-04411",
          "text": "The variable decorated with <code>ViewportMaskNV</code> <strong class=\"purple\">must</strong> be declared as an array of 32-bit integer values",
          "page": "vkspec"
        }
      ]
    },
    "ViewportMaskPerViewNV": {
      "core": [
        {
          "vuid": "VUID-ViewportMaskPerViewNV-ViewportMaskPerViewNV-04412",
          "text": "The <code>ViewportMaskPerViewNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Vertex</code>, <code>MeshNV</code>, <code>TessellationControl</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-ViewportMaskPerViewNV-ViewportMaskPerViewNV-04413",
          "text": "The variable decorated with <code>ViewportMaskPerViewNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-ViewportMaskPerViewNV-ViewportMaskPerViewNV-04414",
          "text": "The variable decorated with <code>ViewportMaskPerViewNV</code> <strong class=\"purple\">must</strong> be declared as an array of 32-bit integer values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-ViewportMaskPerViewNV-ViewportMaskPerViewNV-04415",
          "text": "The array decorated with <code>ViewportMaskPerViewNV</code> <strong class=\"purple\">must</strong> be a size less than or equal to 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-ViewportMaskPerViewNV-ViewportMaskPerViewNV-04416",
          "text": "The array decorated with <code>ViewportMaskPerViewNV</code> <strong class=\"purple\">must</strong> be a size greater than the maximum view in the subpass&#8217;s view mask",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-ViewportMaskPerViewNV-ViewportMaskPerViewNV-04417",
          "text": "The array variable decorated with <code>ViewportMaskPerViewNV</code> <strong class=\"purple\">must</strong> only be indexed by a constant or specialization constant",
          "page": "vkspec"
        }
      ]
    },
    "WarpsPerSMNV": {
      "core": [
        {
          "vuid": "VUID-WarpsPerSMNV-WarpsPerSMNV-04418",
          "text": "The variable decorated with <code>WarpsPerSMNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-WarpsPerSMNV-WarpsPerSMNV-04419",
          "text": "The variable decorated with <code>WarpsPerSMNV</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "WarpIDNV": {
      "core": [
        {
          "vuid": "VUID-WarpIDNV-WarpIDNV-04420",
          "text": "The variable decorated with <code>WarpIDNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-WarpIDNV-WarpIDNV-04421",
          "text": "The variable decorated with <code>WarpIDNV</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "WorkgroupId": {
      "core": [
        {
          "vuid": "VUID-WorkgroupId-WorkgroupId-04422",
          "text": "The <code>WorkgroupId</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>GLCompute</code>, <code>MeshEXT</code>, <code>TaskEXT</code>, <code>MeshNV</code>, or <code>TaskNV</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-WorkgroupId-WorkgroupId-04423",
          "text": "The variable decorated with <code>WorkgroupId</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-WorkgroupId-WorkgroupId-04424",
          "text": "The variable decorated with <code>WorkgroupId</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit integer values",
          "page": "vkspec"
        }
      ]
    },
    "WorkgroupSize": {
      "core": [
        {
          "vuid": "VUID-WorkgroupSize-WorkgroupSize-04425",
          "text": "The <code>WorkgroupSize</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>GLCompute</code>, <code>MeshEXT</code>, <code>TaskEXT</code>, <code>MeshNV</code>, or <code>TaskNV</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-WorkgroupSize-WorkgroupSize-04426",
          "text": "The variable decorated with <code>WorkgroupSize</code> <strong class=\"purple\">must</strong> be a specialization constant or a constant",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-WorkgroupSize-WorkgroupSize-04427",
          "text": "The variable decorated with <code>WorkgroupSize</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit integer values",
          "page": "vkspec"
        }
      ]
    },
    "WorldRayDirectionKHR": {
      "core": [
        {
          "vuid": "VUID-WorldRayDirectionKHR-WorldRayDirectionKHR-04428",
          "text": "The <code>WorldRayDirectionKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, <code>ClosestHitKHR</code>, or <code>MissKHR</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-WorldRayDirectionKHR-WorldRayDirectionKHR-04429",
          "text": "The variable decorated with <code>WorldRayDirectionKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-WorldRayDirectionKHR-WorldRayDirectionKHR-04430",
          "text": "The variable decorated with <code>WorldRayDirectionKHR</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit floating-point values",
          "page": "vkspec"
        }
      ]
    },
    "WorldRayOriginKHR": {
      "core": [
        {
          "vuid": "VUID-WorldRayOriginKHR-WorldRayOriginKHR-04431",
          "text": "The <code>WorldRayOriginKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, <code>ClosestHitKHR</code>, or <code>MissKHR</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-WorldRayOriginKHR-WorldRayOriginKHR-04432",
          "text": "The variable decorated with <code>WorldRayOriginKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-WorldRayOriginKHR-WorldRayOriginKHR-04433",
          "text": "The variable decorated with <code>WorldRayOriginKHR</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit floating-point values",
          "page": "vkspec"
        }
      ]
    },
    "WorldToObjectKHR": {
      "core": [
        {
          "vuid": "VUID-WorldToObjectKHR-WorldToObjectKHR-04434",
          "text": "The <code>WorldToObjectKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, or <code>ClosestHitKHR</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-WorldToObjectKHR-WorldToObjectKHR-04435",
          "text": "The variable decorated with <code>WorldToObjectKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-WorldToObjectKHR-WorldToObjectKHR-04436",
          "text": "The variable decorated with <code>WorldToObjectKHR</code> <strong class=\"purple\">must</strong> be declared as a matrix with four columns of three-component vectors of 32-bit floating-point values",
          "page": "vkspec"
        }
      ]
    },
    "CoreCountARM": {
      "core": [
        {
          "vuid": "VUID-CoreCountARM-CoreCountARM-07595",
          "text": "The variable decorated with <code>CoreCountARM</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-CoreCountARM-CoreCountARM-07596",
          "text": "The variable decorated with <code>CoreCountARM</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "CoreMaxIDARM": {
      "core": [
        {
          "vuid": "VUID-CoreMaxIDARM-CoreMaxIDARM-07597",
          "text": "The variable decorated with <code>CoreMaxIDARM</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-CoreMaxIDARM-CoreMaxIDARM-07598",
          "text": "The variable decorated with <code>CoreMaxIDARM</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "CoreIDARM": {
      "core": [
        {
          "vuid": "VUID-CoreIDARM-CoreIDARM-07599",
          "text": "The variable decorated with <code>CoreIDARM</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-CoreIDARM-CoreIDARM-07600",
          "text": "The variable decorated with <code>CoreIDARM</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "WarpMaxIDARM": {
      "core": [
        {
          "vuid": "VUID-WarpMaxIDARM-WarpMaxIDARM-07601",
          "text": "The variable decorated with <code>WarpMaxIDARM</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-WarpMaxIDARM-WarpMaxIDARM-07602",
          "text": "The variable decorated with <code>WarpMaxIDARM</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "WarpIDARM": {
      "core": [
        {
          "vuid": "VUID-WarpIDARM-WarpIDARM-07603",
          "text": "The variable decorated with <code>WarpIDARM</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-WarpIDARM-WarpIDARM-07604",
          "text": "The variable decorated with <code>WarpIDARM</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "CoalescedInputCountAMDX": {
      "core": [
        {
          "vuid": "VUID-CoalescedInputCountAMDX-CoalescedInputCountAMDX-09172",
          "text": "The variable decorated with <code>CoalescedInputCountAMDX</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-CoalescedInputCountAMDX-CoalescedInputCountAMDX-09173",
          "text": "If a variable is decorated with <code>CoalescedInputCountAMDX</code>, the <code>CoalescingAMDX</code> execution mode <strong class=\"purple\">must</strong> be declared",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-CoalescedInputCountAMDX-CoalescedInputCountAMDX-09174",
          "text": "The variable decorated with <code>CoalescedInputCountAMDX</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "ShaderIndexAMDX": {
      "core": [
        {
          "vuid": "VUID-ShaderIndexAMDX-ShaderIndexAMDX-09175",
          "text": "The variable decorated with <code>ShaderIndexAMDX</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-ShaderIndexAMDX-ShaderIndexAMDX-09176",
          "text": "The variable decorated with <code>ShaderIndexAMDX</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateQueryPool": {
      "core": [
        {
          "vuid": "VUID-vkCreateQueryPool-device-09663",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> support at least one queue family with one of the <code>VK_QUEUE_VIDEO_ENCODE_BIT_KHR</code>, <code>VK_QUEUE_VIDEO_DECODE_BIT_KHR</code>, <code>VK_QUEUE_COMPUTE_BIT</code>, or <code>VK_QUEUE_GRAPHICS_BIT</code> capabilities",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateQueryPool-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateQueryPool-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkQueryPoolCreateInfo\">VkQueryPoolCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateQueryPool-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateQueryPool-pQueryPool-parameter",
          "text": "<code>pQueryPool</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkQueryPool\">VkQueryPool</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkQueryPoolCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkQueryPoolCreateInfo-queryType-00791",
          "text": "If the <a href=\"#features-pipelineStatisticsQuery\"><code>pipelineStatisticsQuery</code></a> feature is not enabled, <code>queryType</code> <strong class=\"purple\">must</strong> not be <code>VK_QUERY_TYPE_PIPELINE_STATISTICS</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkQueryPoolCreateInfo-meshShaderQueries-07068",
          "text": "If the <a href=\"#features-meshShaderQueries\"><code>meshShaderQueries</code></a> feature is not enabled, <code>queryType</code> <strong class=\"purple\">must</strong> not be <code>VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkQueryPoolCreateInfo-meshShaderQueries-07069",
          "text": "If the <a href=\"#features-meshShaderQueries\"><code>meshShaderQueries</code></a> feature is not enabled, and <code>queryType</code> is <code>VK_QUERY_TYPE_PIPELINE_STATISTICS</code>, <code>pipelineStatistics</code> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT</code> or <code>VK_QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkQueryPoolCreateInfo-queryType-00792",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkQueryPoolCreateInfo-queryType-09534",
          "text": "If <code>queryType</code> is <code>VK_QUERY_TYPE_PIPELINE_STATISTICS</code>, <code>pipelineStatistics</code> <strong class=\"purple\">must</strong> not be zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkQueryPoolCreateInfo-queryType-03222",
          "text": "If <code>queryType</code> is <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkQueryPoolPerformanceCreateInfoKHR\">VkQueryPoolPerformanceCreateInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkQueryPoolCreateInfo-queryCount-02763",
          "text": "<code>queryCount</code> <strong class=\"purple\">must</strong> be greater than 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkQueryPoolCreateInfo-queryType-07133",
          "text": "If <code>queryType</code> is <code>VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoProfileInfoKHR\">VkVideoProfileInfoKHR</a> structure with <code>videoCodecOperation</code> specifying an encode operation",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkQueryPoolCreateInfo-queryType-07906",
          "text": "If <code>queryType</code> is <code>VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkQueryPoolVideoEncodeFeedbackCreateInfoKHR\">VkQueryPoolVideoEncodeFeedbackCreateInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkQueryPoolCreateInfo-queryType-07907",
          "text": "If <code>queryType</code> is <code>VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR</code>, and the <code>pNext</code> chain includes a <a href=\"#VkVideoProfileInfoKHR\">VkVideoProfileInfoKHR</a> structure and a <a href=\"#VkQueryPoolVideoEncodeFeedbackCreateInfoKHR\">VkQueryPoolVideoEncodeFeedbackCreateInfoKHR</a> structure, then <a href=\"#VkQueryPoolVideoEncodeFeedbackCreateInfoKHR\">VkQueryPoolVideoEncodeFeedbackCreateInfoKHR</a>::<code>encodeFeedbackFlags</code> <strong class=\"purple\">must</strong> not contain any bits that are not set in <a href=\"#VkVideoEncodeCapabilitiesKHR\">VkVideoEncodeCapabilitiesKHR</a>::<code>supportedEncodeFeedbackFlags</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the <a href=\"#video-profiles\">video profile</a> described by <a href=\"#VkVideoProfileInfoKHR\">VkVideoProfileInfoKHR</a> and its <code>pNext</code> chain",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkQueryPoolCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkQueryPoolCreateInfo-pNext-pNext",
          "text": "Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkQueryPoolPerformanceCreateInfoKHR\">VkQueryPoolPerformanceCreateInfoKHR</a>, <a href=\"#VkQueryPoolPerformanceQueryCreateInfoINTEL\">VkQueryPoolPerformanceQueryCreateInfoINTEL</a>, <a href=\"#VkQueryPoolVideoEncodeFeedbackCreateInfoKHR\">VkQueryPoolVideoEncodeFeedbackCreateInfoKHR</a>, <a href=\"#VkVideoDecodeAV1ProfileInfoKHR\">VkVideoDecodeAV1ProfileInfoKHR</a>, <a href=\"#VkVideoDecodeH264ProfileInfoKHR\">VkVideoDecodeH264ProfileInfoKHR</a>, <a href=\"#VkVideoDecodeH265ProfileInfoKHR\">VkVideoDecodeH265ProfileInfoKHR</a>, <a href=\"#VkVideoDecodeUsageInfoKHR\">VkVideoDecodeUsageInfoKHR</a>, <a href=\"#VkVideoEncodeH264ProfileInfoKHR\">VkVideoEncodeH264ProfileInfoKHR</a>, <a href=\"#VkVideoEncodeH265ProfileInfoKHR\">VkVideoEncodeH265ProfileInfoKHR</a>, <a href=\"#VkVideoEncodeUsageInfoKHR\">VkVideoEncodeUsageInfoKHR</a>, or <a href=\"#VkVideoProfileInfoKHR\">VkVideoProfileInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkQueryPoolCreateInfo-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkQueryPoolCreateInfo-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkQueryPoolCreateInfo-queryType-parameter",
          "text": "<code>queryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryType\">VkQueryType</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkQueryPoolPerformanceCreateInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkQueryPoolPerformanceCreateInfoKHR-queueFamilyIndex-03236",
          "text": "<code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be a valid queue family index of the device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkQueryPoolPerformanceCreateInfoKHR-performanceCounterQueryPools-03237",
          "text": "The <a href=\"#features-performanceCounterQueryPools\"><code>performanceCounterQueryPools</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkQueryPoolPerformanceCreateInfoKHR-pCounterIndices-03321",
          "text": "Each element of <code>pCounterIndices</code> <strong class=\"purple\">must</strong> be in the range of counters reported by <code>vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR</code> for the queue family specified in <code>queueFamilyIndex</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkQueryPoolPerformanceCreateInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkQueryPoolPerformanceCreateInfoKHR-pCounterIndices-parameter",
          "text": "<code>pCounterIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>counterIndexCount</code> <code>uint32_t</code> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkQueryPoolPerformanceCreateInfoKHR-counterIndexCount-arraylength",
          "text": "<code>counterIndexCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR-pPerformanceQueryCreateInfo-parameter",
          "text": "<code>pPerformanceQueryCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkQueryPoolPerformanceCreateInfoKHR\">VkQueryPoolPerformanceCreateInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR-pNumPasses-parameter",
          "text": "<code>pNumPasses</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroyQueryPool": {
      "core": [
        {
          "vuid": "VUID-vkDestroyQueryPool-queryPool-00793",
          "text": "All submitted commands that refer to <code>queryPool</code> <strong class=\"purple\">must</strong> have completed execution",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyQueryPool-queryPool-00794",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyQueryPool-queryPool-00795",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyQueryPool-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyQueryPool-queryPool-parameter",
          "text": "If <code>queryPool</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyQueryPool-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyQueryPool-queryPool-parent",
          "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>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdResetQueryPool": {
      "core": [
        {
          "vuid": "VUID-vkCmdResetQueryPool-firstQuery-09436",
          "text": "<code>firstQuery</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetQueryPool-firstQuery-09437",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetQueryPool-None-02841",
          "text": "All queries used by the command <strong class=\"purple\">must</strong> not be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetQueryPool-firstQuery-02862",
          "text": "If <code>queryPool</code> was created with <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, this command <strong class=\"purple\">must</strong> not be recorded in a command buffer that, either directly or through secondary command buffers, also contains begin commands for a query from the set of queries <span class=\"eq\">[<code>firstQuery</code>, <code>firstQuery</code> +  <code>queryCount</code> - 1]</span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetQueryPool-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetQueryPool-queryPool-parameter",
          "text": "<code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetQueryPool-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetQueryPool-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, decode, encode, or optical flow operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetQueryPool-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetQueryPool-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResetQueryPool-commonparent",
          "text": "Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkResetQueryPool": {
      "core": [
        {
          "vuid": "VUID-vkResetQueryPool-firstQuery-09436",
          "text": "<code>firstQuery</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkResetQueryPool-firstQuery-09437",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkResetQueryPool-None-02665",
          "text": "The <a href=\"#features-hostQueryReset\"><code>hostQueryReset</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkResetQueryPool-firstQuery-02741",
          "text": "Submitted commands that refer to the range specified by <code>firstQuery</code> and <code>queryCount</code> in <code>queryPool</code> <strong class=\"purple\">must</strong> have completed execution",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkResetQueryPool-firstQuery-02742",
          "text": "The range of queries specified by <code>firstQuery</code> and <code>queryCount</code> in <code>queryPool</code> <strong class=\"purple\">must</strong> not be in use by calls to <a href=\"#vkGetQueryPoolResults\">vkGetQueryPoolResults</a> or <code>vkResetQueryPool</code> in other threads",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkResetQueryPool-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkResetQueryPool-queryPool-parameter",
          "text": "<code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkResetQueryPool-queryPool-parent",
          "text": "<code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdBeginQuery": {
      "core": [
        {
          "vuid": "VUID-vkCmdBeginQuery-None-00807",
          "text": "All queries used by the command <strong class=\"purple\">must</strong> be <em>unavailable</em>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQuery-queryType-02804",
          "text": "The <code>queryType</code> used to create <code>queryPool</code> <strong class=\"purple\">must</strong> not be <code>VK_QUERY_TYPE_TIMESTAMP</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQuery-queryType-04728",
          "text": "The <code>queryType</code> used to create <code>queryPool</code> <strong class=\"purple\">must</strong> not be <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code> or <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQuery-queryType-06741",
          "text": "The <code>queryType</code> used to create <code>queryPool</code> <strong class=\"purple\">must</strong> not be <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR</code> or <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQuery-queryType-04729",
          "text": "The <code>queryType</code> used to create <code>queryPool</code> <strong class=\"purple\">must</strong> not be <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQuery-queryType-00800",
          "text": "If the <a href=\"#features-occlusionQueryPrecise\"><code>occlusionQueryPrecise</code></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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQuery-query-00802",
          "text": "<code>query</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQuery-queryType-00803",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQuery-queryType-00804",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQuery-queryType-00805",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQuery-commandBuffer-01885",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQuery-query-00808",
          "text": "If called within a render pass instance, the sum of <code>query</code> and the number of bits set in the current subpass&#8217;s view mask <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQuery-queryType-07126",
          "text": "If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR</code>, then the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> have been created with a queue family index that supports <a href=\"#queries-result-status-only\">result status queries</a>, as indicated by <a href=\"#VkQueueFamilyQueryResultStatusPropertiesKHR\">VkQueueFamilyQueryResultStatusPropertiesKHR</a>::<code>queryResultStatusSupport</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQuery-None-07127",
          "text": "If there is a bound video session, then there <strong class=\"purple\">must</strong> be no <a href=\"#queries-operation-active\">active</a> queries",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQuery-None-08370",
          "text": "If there is a bound video session, then it <strong class=\"purple\">must</strong> not have been created with <code>VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQuery-queryType-07128",
          "text": "If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR</code> and there is a bound video session, then <code>queryPool</code> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkVideoProfileInfoKHR\">VkVideoProfileInfoKHR</a> structure included in the <code>pNext</code> chain of <a href=\"#VkQueryPoolCreateInfo\">VkQueryPoolCreateInfo</a> identical to the one specified in <a href=\"#VkVideoSessionCreateInfoKHR\">VkVideoSessionCreateInfoKHR</a>::<code>pVideoProfile</code> the bound video session was created with",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQuery-queryType-07129",
          "text": "If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR</code>, then there <strong class=\"purple\">must</strong> be a bound video session",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQuery-queryType-07130",
          "text": "If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR</code> and there is a bound video session, then <code>queryPool</code> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkVideoProfileInfoKHR\">VkVideoProfileInfoKHR</a> structure included in the <code>pNext</code> chain of <a href=\"#VkQueryPoolCreateInfo\">VkQueryPoolCreateInfo</a> identical to the one specified in <a href=\"#VkVideoSessionCreateInfoKHR\">VkVideoSessionCreateInfoKHR</a>::<code>pVideoProfile</code> the bound video session was created with",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQuery-queryType-07131",
          "text": "If the <code>queryType</code> used to create <code>queryPool</code> was not <code>VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR</code> or <code>VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR</code>, then there <strong class=\"purple\">must</strong> be no bound video session",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQuery-queryPool-01922",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQuery-queryType-07070",
          "text": "If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT</code> the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQuery-queryType-02327",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQuery-queryType-02328",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQuery-queryType-06687",
          "text": "If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQuery-queryType-06688",
          "text": "If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> then <a href=\"#features-primitivesGeneratedQuery\"><code>primitivesGeneratedQuery</code></a> <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQuery-queryPool-07289",
          "text": "If <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, then the <a href=\"#VkQueryPoolPerformanceCreateInfoKHR\">VkQueryPoolPerformanceCreateInfoKHR</a>::<code>queueFamilyIndex</code> <code>queryPool</code> was created with <strong class=\"purple\">must</strong> equal the queue family index of the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQuery-queryPool-03223",
          "text": "If <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, the <a href=\"#profiling-lock\">profiling lock</a> <strong class=\"purple\">must</strong> have been held before <a href=\"#vkBeginCommandBuffer\">vkBeginCommandBuffer</a> was called on <code>commandBuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQuery-queryPool-03224",
          "text": "If <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code> and one of the counters used to create <code>queryPool</code> was <code>VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR</code>, the query begin <strong class=\"purple\">must</strong> be the first recorded command in <code>commandBuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQuery-queryPool-03225",
          "text": "If <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code> and one of the counters used to create <code>queryPool</code> was <code>VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR</code>, the begin command <strong class=\"purple\">must</strong> not be recorded within a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQuery-queryPool-03226",
          "text": "If <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code> and another query pool with a <code>queryType</code> <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code> has been used within <code>commandBuffer</code>, its parent primary command buffer or secondary command buffer recorded within the same parent primary command buffer as <code>commandBuffer</code>, the <a href=\"#features-performanceCounterMultipleQueryPools\"><code>performanceCounterMultipleQueryPools</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQuery-None-02863",
          "text": "If <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, this command <strong class=\"purple\">must</strong> not be recorded in a command buffer that, either directly or through secondary command buffers, also contains a <code>vkCmdResetQueryPool</code> command affecting the same query",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQuery-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQuery-queryPool-parameter",
          "text": "<code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQuery-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryControlFlagBits\">VkQueryControlFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQuery-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQuery-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, decode, or encode operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQuery-commonparent",
          "text": "Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdBeginQueryIndexedEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-None-00807",
          "text": "All queries used by the command <strong class=\"purple\">must</strong> be <em>unavailable</em>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02804",
          "text": "The <code>queryType</code> used to create <code>queryPool</code> <strong class=\"purple\">must</strong> not be <code>VK_QUERY_TYPE_TIMESTAMP</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-04728",
          "text": "The <code>queryType</code> used to create <code>queryPool</code> <strong class=\"purple\">must</strong> not be <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code> or <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-06741",
          "text": "The <code>queryType</code> used to create <code>queryPool</code> <strong class=\"purple\">must</strong> not be <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR</code> or <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-04729",
          "text": "The <code>queryType</code> used to create <code>queryPool</code> <strong class=\"purple\">must</strong> not be <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-00800",
          "text": "If the <a href=\"#features-occlusionQueryPrecise\"><code>occlusionQueryPrecise</code></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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-query-00802",
          "text": "<code>query</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-00803",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-00804",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-00805",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-01885",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-query-00808",
          "text": "If called within a render pass instance, the sum of <code>query</code> and the number of bits set in the current subpass&#8217;s view mask <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-07126",
          "text": "If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR</code>, then the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> have been created with a queue family index that supports <a href=\"#queries-result-status-only\">result status queries</a>, as indicated by <a href=\"#VkQueueFamilyQueryResultStatusPropertiesKHR\">VkQueueFamilyQueryResultStatusPropertiesKHR</a>::<code>queryResultStatusSupport</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-None-07127",
          "text": "If there is a bound video session, then there <strong class=\"purple\">must</strong> be no <a href=\"#queries-operation-active\">active</a> queries",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-None-08370",
          "text": "If there is a bound video session, then it <strong class=\"purple\">must</strong> not have been created with <code>VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-07128",
          "text": "If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR</code> and there is a bound video session, then <code>queryPool</code> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkVideoProfileInfoKHR\">VkVideoProfileInfoKHR</a> structure included in the <code>pNext</code> chain of <a href=\"#VkQueryPoolCreateInfo\">VkQueryPoolCreateInfo</a> identical to the one specified in <a href=\"#VkVideoSessionCreateInfoKHR\">VkVideoSessionCreateInfoKHR</a>::<code>pVideoProfile</code> the bound video session was created with",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-07129",
          "text": "If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR</code>, then there <strong class=\"purple\">must</strong> be a bound video session",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-07130",
          "text": "If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR</code> and there is a bound video session, then <code>queryPool</code> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkVideoProfileInfoKHR\">VkVideoProfileInfoKHR</a> structure included in the <code>pNext</code> chain of <a href=\"#VkQueryPoolCreateInfo\">VkQueryPoolCreateInfo</a> identical to the one specified in <a href=\"#VkVideoSessionCreateInfoKHR\">VkVideoSessionCreateInfoKHR</a>::<code>pVideoProfile</code> the bound video session was created with",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-07131",
          "text": "If the <code>queryType</code> used to create <code>queryPool</code> was not <code>VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR</code> or <code>VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR</code>, then there <strong class=\"purple\">must</strong> be no bound video session",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-04753",
          "text": "If the <code>queryPool</code> was created with the same <code>queryType</code> as that of another <a href=\"#queries-operation-active\">active</a> query within <code>commandBuffer</code>, then <code>index</code> <strong class=\"purple\">must</strong> not match the index used for the active query",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02338",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02339",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-06692",
          "text": "If the <code>queryType</code> used to create <code>queryPool</code> was not <code>VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT</code> and not <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code>, the <code>index</code> <strong class=\"purple\">must</strong> be zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-06689",
          "text": "If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-06690",
          "text": "If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> the <code>index</code> parameter <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackStreams</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-06691",
          "text": "If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> and the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled, the <code>index</code> parameter <strong class=\"purple\">must</strong> be zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-06693",
          "text": "If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> then <a href=\"#features-primitivesGeneratedQuery\"><code>primitivesGeneratedQuery</code></a> <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02341",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-07071",
          "text": "The <code>queryType</code> used to create <code>queryPool</code> <strong class=\"purple\">must</strong> not be <code>VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-07289",
          "text": "If <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, then the <a href=\"#VkQueryPoolPerformanceCreateInfoKHR\">VkQueryPoolPerformanceCreateInfoKHR</a>::<code>queueFamilyIndex</code> <code>queryPool</code> was created with <strong class=\"purple\">must</strong> equal the queue family index of the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-03223",
          "text": "If <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, the <a href=\"#profiling-lock\">profiling lock</a> <strong class=\"purple\">must</strong> have been held before <a href=\"#vkBeginCommandBuffer\">vkBeginCommandBuffer</a> was called on <code>commandBuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-03224",
          "text": "If <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code> and one of the counters used to create <code>queryPool</code> was <code>VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR</code>, the query begin <strong class=\"purple\">must</strong> be the first recorded command in <code>commandBuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-03225",
          "text": "If <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code> and one of the counters used to create <code>queryPool</code> was <code>VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR</code>, the begin command <strong class=\"purple\">must</strong> not be recorded within a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-03226",
          "text": "If <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code> and another query pool with a <code>queryType</code> <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code> has been used within <code>commandBuffer</code>, its parent primary command buffer or secondary command buffer recorded within the same parent primary command buffer as <code>commandBuffer</code>, the <a href=\"#features-performanceCounterMultipleQueryPools\"><code>performanceCounterMultipleQueryPools</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-None-02863",
          "text": "If <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, this command <strong class=\"purple\">must</strong> not be recorded in a command buffer that, either directly or through secondary command buffers, also contains a <code>vkCmdResetQueryPool</code> command affecting the same query",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-parameter",
          "text": "<code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryControlFlagBits\">VkQueryControlFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, decode, or encode operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commonparent",
          "text": "Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdEndQuery": {
      "core": [
        {
          "vuid": "VUID-vkCmdEndQuery-None-01923",
          "text": "All queries used by the command <strong class=\"purple\">must</strong> be <a href=\"#queries-operation-active\">active</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndQuery-query-00810",
          "text": "<code>query</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndQuery-commandBuffer-01886",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndQuery-query-00812",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndQuery-queryPool-03227",
          "text": "If <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code> and one or more of the counters used to create <code>queryPool</code> was <code>VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR</code>, the <a href=\"#vkCmdEndQuery\">vkCmdEndQuery</a> <strong class=\"purple\">must</strong> be the last recorded command in <code>commandBuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndQuery-queryPool-03228",
          "text": "If <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code> and one or more of the counters used to create <code>queryPool</code> was <code>VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR</code>, the <a href=\"#vkCmdEndQuery\">vkCmdEndQuery</a> <strong class=\"purple\">must</strong> not be recorded within a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndQuery-None-07007",
          "text": "If called within a subpass of a render pass instance, the corresponding <code>vkCmdBeginQuery</code>* command <strong class=\"purple\">must</strong> have been called previously within the same subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndQuery-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndQuery-queryPool-parameter",
          "text": "<code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndQuery-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndQuery-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, decode, or encode operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndQuery-commonparent",
          "text": "Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdEndQueryIndexedEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdEndQueryIndexedEXT-None-02342",
          "text": "All queries used by the command <strong class=\"purple\">must</strong> be <a href=\"#queries-operation-active\">active</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndQueryIndexedEXT-query-02343",
          "text": "<code>query</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-02344",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndQueryIndexedEXT-query-02345",
          "text": "If <code>vkCmdEndQueryIndexedEXT</code> is called within a render pass instance, the sum of <code>query</code> and the number of bits set in the current subpass&#8217;s view mask <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndQueryIndexedEXT-queryType-06694",
          "text": "If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT</code> or <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code>, the <code>index</code> parameter <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackStreams</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndQueryIndexedEXT-queryType-06695",
          "text": "If the <code>queryType</code> used to create <code>queryPool</code> was not <code>VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT</code> and not <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code>, the <code>index</code> <strong class=\"purple\">must</strong> be zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndQueryIndexedEXT-queryType-06696",
          "text": "If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT</code> or <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code>, <code>index</code> <strong class=\"purple\">must</strong> equal the <code>index</code> used to begin the query",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndQueryIndexedEXT-None-07007",
          "text": "If called within a subpass of a render pass instance, the corresponding <code>vkCmdBeginQuery</code>* command <strong class=\"purple\">must</strong> have been called previously within the same subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndQueryIndexedEXT-queryPool-parameter",
          "text": "<code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, decode, or encode operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndQueryIndexedEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndQueryIndexedEXT-commonparent",
          "text": "Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetQueryPoolResults": {
      "core": [
        {
          "vuid": "VUID-vkGetQueryPoolResults-firstQuery-09436",
          "text": "<code>firstQuery</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetQueryPoolResults-firstQuery-09437",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetQueryPoolResults-queryCount-09438",
          "text": "If <code>queryCount</code> is greater than 1, <code>stride</code> <strong class=\"purple\">must</strong> not be zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetQueryPoolResults-queryType-09439",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetQueryPoolResults-queryType-09440",
          "text": "If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_RESULT_WITH_AVAILABILITY_BIT</code>, <code>VK_QUERY_RESULT_WITH_STATUS_BIT_KHR</code>, <code>VK_QUERY_RESULT_PARTIAL_BIT</code>, or <code>VK_QUERY_RESULT_64_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetQueryPoolResults-queryType-09441",
          "text": "If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, the <code>queryPool</code> <strong class=\"purple\">must</strong> have been recorded once for each pass as retrieved via a call to <a href=\"#vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR\">vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetQueryPoolResults-queryType-09442",
          "text": "If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR</code>, then <code>flags</code> <strong class=\"purple\">must</strong> include <code>VK_QUERY_RESULT_WITH_STATUS_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetQueryPoolResults-flags-09443",
          "text": "If <code>flags</code> includes <code>VK_QUERY_RESULT_WITH_STATUS_BIT_KHR</code>, then it <strong class=\"purple\">must</strong> not include <code>VK_QUERY_RESULT_WITH_AVAILABILITY_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetQueryPoolResults-None-09401",
          "text": "All queries used by the command <strong class=\"purple\">must</strong> not be uninitialized",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetQueryPoolResults-flags-02828",
          "text": "If <code>VK_QUERY_RESULT_64_BIT</code> is not set in <code>flags</code> and the <code>queryType</code> used to create <code>queryPool</code> was not <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, then <code>pData</code> and <code>stride</code> <strong class=\"purple\">must</strong> be multiples of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetQueryPoolResults-flags-00815",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetQueryPoolResults-stride-08993",
          "text": "If <code>VK_QUERY_RESULT_WITH_AVAILABILITY_BIT</code> is set, <code>stride</code>     <strong class=\"purple\">must</strong> be large enough to contain the unsigned integer representing     availability or status     in addition to the query result",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetQueryPoolResults-queryType-03229",
          "text": "If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, then <code>pData</code> and <code>stride</code> <strong class=\"purple\">must</strong> be multiples of the size of <a href=\"#VkPerformanceCounterResultKHR\">VkPerformanceCounterResultKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetQueryPoolResults-queryType-04519",
          "text": "If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, then <code>stride</code> <strong class=\"purple\">must</strong> be large enough to contain the <a href=\"#VkQueryPoolPerformanceCreateInfoKHR\">VkQueryPoolPerformanceCreateInfoKHR</a>::<code>counterIndexCount</code> used to create <code>queryPool</code> times the size of <a href=\"#VkPerformanceCounterResultKHR\">VkPerformanceCounterResultKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetQueryPoolResults-dataSize-00817",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetQueryPoolResults-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetQueryPoolResults-queryPool-parameter",
          "text": "<code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetQueryPoolResults-pData-parameter",
          "text": "<code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetQueryPoolResults-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryResultFlagBits\">VkQueryResultFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetQueryPoolResults-dataSize-arraylength",
          "text": "<code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetQueryPoolResults-queryPool-parent",
          "text": "<code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdCopyQueryPoolResults": {
      "core": [
        {
          "vuid": "VUID-vkCmdCopyQueryPoolResults-firstQuery-09436",
          "text": "<code>firstQuery</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyQueryPoolResults-firstQuery-09437",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyQueryPoolResults-queryCount-09438",
          "text": "If <code>queryCount</code> is greater than 1, <code>stride</code> <strong class=\"purple\">must</strong> not be zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyQueryPoolResults-queryType-09439",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyQueryPoolResults-queryType-09440",
          "text": "If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_RESULT_WITH_AVAILABILITY_BIT</code>, <code>VK_QUERY_RESULT_WITH_STATUS_BIT_KHR</code>, <code>VK_QUERY_RESULT_PARTIAL_BIT</code>, or <code>VK_QUERY_RESULT_64_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyQueryPoolResults-queryType-09441",
          "text": "If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, the <code>queryPool</code> <strong class=\"purple\">must</strong> have been recorded once for each pass as retrieved via a call to <a href=\"#vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR\">vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyQueryPoolResults-queryType-09442",
          "text": "If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR</code>, then <code>flags</code> <strong class=\"purple\">must</strong> include <code>VK_QUERY_RESULT_WITH_STATUS_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyQueryPoolResults-flags-09443",
          "text": "If <code>flags</code> includes <code>VK_QUERY_RESULT_WITH_STATUS_BIT_KHR</code>, then it <strong class=\"purple\">must</strong> not include <code>VK_QUERY_RESULT_WITH_AVAILABILITY_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyQueryPoolResults-None-09402",
          "text": "All queries used by the command <strong class=\"purple\">must</strong> not be uninitialized when the command is executed",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyQueryPoolResults-dstOffset-00819",
          "text": "<code>dstOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>dstBuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyQueryPoolResults-flags-00822",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyQueryPoolResults-flags-00823",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-00824",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-00825",
          "text": "<code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-00826",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyQueryPoolResults-queryType-03232",
          "text": "If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, <a href=\"#VkPhysicalDevicePerformanceQueryPropertiesKHR\">VkPhysicalDevicePerformanceQueryPropertiesKHR</a>::<code>allowCommandBufferQueryCopies</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyQueryPoolResults-queryType-02734",
          "text": "<a href=\"#vkCmdCopyQueryPoolResults\">vkCmdCopyQueryPoolResults</a> <strong class=\"purple\">must</strong> not be called if the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyQueryPoolResults-None-07429",
          "text": "All queries used by the command <strong class=\"purple\">must</strong> not be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyQueryPoolResults-None-08752",
          "text": "All queries used by the command <strong class=\"purple\">must</strong> have been made <em>available</em> by prior executed commands",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyQueryPoolResults-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyQueryPoolResults-queryPool-parameter",
          "text": "<code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-parameter",
          "text": "<code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyQueryPoolResults-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryResultFlagBits\">VkQueryResultFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyQueryPoolResults-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyQueryPoolResults-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyQueryPoolResults-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyQueryPoolResults-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyQueryPoolResults-commonparent",
          "text": "Each of <code>commandBuffer</code>, <code>dstBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdWriteTimestamp2": {
      "core": [
        {
          "vuid": "VUID-vkCmdWriteTimestamp2-stage-03929",
          "text": "If the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp2-stage-03930",
          "text": "If the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp2-stage-03931",
          "text": "If the <a href=\"#features-conditionalRendering\"><code>conditionalRendering</code></a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp2-stage-03932",
          "text": "If the <a href=\"#features-fragmentDensityMap\"><code>fragmentDensityMap</code></a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp2-stage-03933",
          "text": "If the <a href=\"#features-transformFeedback\"><code>transformFeedback</code></a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp2-stage-03934",
          "text": "If the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp2-stage-03935",
          "text": "If the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp2-stage-07316",
          "text": "If neither the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> or <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> are enabled, <code>stage</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp2-stage-04957",
          "text": "If the <a href=\"#features-subpassShading\"><code>subpassShading</code></a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp2-stage-04995",
          "text": "If the <a href=\"#features-invocationMask\"><code>invocationMask</code></a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp2-stage-07946",
          "text": "If neither the <a href=\"#VK_NV_ray_tracing\">VK_NV_ray_tracing</a> extension or <a href=\"#features-rayTracingPipeline\"><code>rayTracingPipeline</code> feature</a> are enabled, <code>stage</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp2-synchronization2-03858",
          "text": "The <a href=\"#features-synchronization2\"><code>synchronization2</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp2-stage-03859",
          "text": "<code>stage</code> <strong class=\"purple\">must</strong> only include a single pipeline stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp2-stage-03860",
          "text": "<code>stage</code> <strong class=\"purple\">must</strong> only include stages valid for the queue family that was used to create the command pool that <code>commandBuffer</code> was allocated from",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp2-queryPool-03861",
          "text": "<code>queryPool</code> <strong class=\"purple\">must</strong> have been created with a <code>queryType</code> of <code>VK_QUERY_TYPE_TIMESTAMP</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp2-timestampValidBits-03863",
          "text": "The command pool&#8217;s queue family <strong class=\"purple\">must</strong> support a non-zero <code>timestampValidBits</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp2-query-04903",
          "text": "<code>query</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp2-None-03864",
          "text": "All queries used by the command <strong class=\"purple\">must</strong> be <em>unavailable</em>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp2-query-03865",
          "text": "If <code>vkCmdWriteTimestamp2</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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp2-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp2-stage-parameter",
          "text": "<code>stage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits2\">VkPipelineStageFlagBits2</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp2-queryPool-parameter",
          "text": "<code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp2-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp2-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, compute, decode, or encode operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp2-commonparent",
          "text": "Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdWriteTimestamp": {
      "core": [
        {
          "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-04074",
          "text": "<code>pipelineStage</code> <strong class=\"purple\">must</strong> be a <a href=\"#synchronization-pipeline-stages-supported\">valid stage</a> for the queue family that was used to create the command pool that <code>commandBuffer</code> was allocated from",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-04075",
          "text": "If the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-04076",
          "text": "If the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-04077",
          "text": "If the <a href=\"#features-conditionalRendering\"><code>conditionalRendering</code></a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-04078",
          "text": "If the <a href=\"#features-fragmentDensityMap\"><code>fragmentDensityMap</code></a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-04079",
          "text": "If the <a href=\"#features-transformFeedback\"><code>transformFeedback</code></a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-04080",
          "text": "If the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-07077",
          "text": "If the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp-shadingRateImage-07314",
          "text": "If neither the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> or <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> are enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp-synchronization2-06489",
          "text": "If the <a href=\"#features-synchronization2\"><code>synchronization2</code></a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_NONE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp-rayTracingPipeline-07943",
          "text": "If neither the <a href=\"#VK_NV_ray_tracing\">VK_NV_ray_tracing</a> extension or <a href=\"#features-rayTracingPipeline\"><code>rayTracingPipeline</code> feature</a> are enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp-queryPool-01416",
          "text": "<code>queryPool</code> <strong class=\"purple\">must</strong> have been created with a <code>queryType</code> of <code>VK_QUERY_TYPE_TIMESTAMP</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp-timestampValidBits-00829",
          "text": "The command pool&#8217;s queue family <strong class=\"purple\">must</strong> support a non-zero <code>timestampValidBits</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp-query-04904",
          "text": "<code>query</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp-None-00830",
          "text": "All queries used by the command <strong class=\"purple\">must</strong> be <em>unavailable</em>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp-query-00831",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-parameter",
          "text": "<code>pipelineStage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp-queryPool-parameter",
          "text": "<code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, compute, decode, encode, or optical flow operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteTimestamp-commonparent",
          "text": "Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkAcquireProfilingLockKHR": {
      "core": [
        {
          "vuid": "VUID-vkAcquireProfilingLockKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAcquireProfilingLockKHR-pInfo-parameter",
          "text": "<code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAcquireProfilingLockInfoKHR\">VkAcquireProfilingLockInfoKHR</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkAcquireProfilingLockInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkAcquireProfilingLockInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAcquireProfilingLockInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAcquireProfilingLockInfoKHR-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkReleaseProfilingLockKHR": {
      "core": [
        {
          "vuid": "VUID-vkReleaseProfilingLockKHR-device-03235",
          "text": "The profiling lock of <code>device</code> <strong class=\"purple\">must</strong> have been held via a previous successful call to <a href=\"#vkAcquireProfilingLockKHR\">vkAcquireProfilingLockKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkReleaseProfilingLockKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "vkInitializePerformanceApiINTEL": {
      "core": [
        {
          "vuid": "VUID-vkInitializePerformanceApiINTEL-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkInitializePerformanceApiINTEL-pInitializeInfo-parameter",
          "text": "<code>pInitializeInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkInitializePerformanceApiInfoINTEL\">VkInitializePerformanceApiInfoINTEL</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkInitializePerformanceApiInfoINTEL": {
      "core": [
        {
          "vuid": "VUID-VkInitializePerformanceApiInfoINTEL-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkInitializePerformanceApiInfoINTEL-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkUninitializePerformanceApiINTEL": {
      "core": [
        {
          "vuid": "VUID-vkUninitializePerformanceApiINTEL-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPerformanceParameterINTEL": {
      "core": [
        {
          "vuid": "VUID-vkGetPerformanceParameterINTEL-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPerformanceParameterINTEL-parameter-parameter",
          "text": "<code>parameter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPerformanceParameterTypeINTEL\">VkPerformanceParameterTypeINTEL</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPerformanceParameterINTEL-pValue-parameter",
          "text": "<code>pValue</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPerformanceValueINTEL\">VkPerformanceValueINTEL</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkQueryPoolPerformanceQueryCreateInfoINTEL": {
      "core": [
        {
          "vuid": "VUID-VkQueryPoolPerformanceQueryCreateInfoINTEL-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkQueryPoolPerformanceQueryCreateInfoINTEL-performanceCountersSampling-parameter",
          "text": "<code>performanceCountersSampling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPoolSamplingModeINTEL\">VkQueryPoolSamplingModeINTEL</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetPerformanceMarkerINTEL": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetPerformanceMarkerINTEL-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetPerformanceMarkerINTEL-pMarkerInfo-parameter",
          "text": "<code>pMarkerInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPerformanceMarkerInfoINTEL\">VkPerformanceMarkerInfoINTEL</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetPerformanceMarkerINTEL-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetPerformanceMarkerINTEL-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, or transfer operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetPerformanceMarkerINTEL-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkPerformanceMarkerInfoINTEL": {
      "core": [
        {
          "vuid": "VUID-VkPerformanceMarkerInfoINTEL-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPerformanceMarkerInfoINTEL-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetPerformanceStreamMarkerINTEL": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetPerformanceStreamMarkerINTEL-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetPerformanceStreamMarkerINTEL-pMarkerInfo-parameter",
          "text": "<code>pMarkerInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPerformanceStreamMarkerInfoINTEL\">VkPerformanceStreamMarkerInfoINTEL</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetPerformanceStreamMarkerINTEL-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetPerformanceStreamMarkerINTEL-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, or transfer operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetPerformanceStreamMarkerINTEL-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkPerformanceStreamMarkerInfoINTEL": {
      "core": [
        {
          "vuid": "VUID-VkPerformanceStreamMarkerInfoINTEL-marker-02735",
          "text": "The value written by the application into <code>marker</code> <strong class=\"purple\">must</strong> only used the valid bits as reported by <a href=\"#vkGetPerformanceParameterINTEL\">vkGetPerformanceParameterINTEL</a> with the <code>VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPerformanceStreamMarkerInfoINTEL-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPerformanceStreamMarkerInfoINTEL-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetPerformanceOverrideINTEL": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetPerformanceOverrideINTEL-pOverrideInfo-02736",
          "text": "<code>pOverrideInfo</code> <strong class=\"purple\">must</strong> not be used with a <a href=\"#VkPerformanceOverrideTypeINTEL\">VkPerformanceOverrideTypeINTEL</a> that is not reported available by <code>vkGetPerformanceParameterINTEL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetPerformanceOverrideINTEL-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetPerformanceOverrideINTEL-pOverrideInfo-parameter",
          "text": "<code>pOverrideInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPerformanceOverrideInfoINTEL\">VkPerformanceOverrideInfoINTEL</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetPerformanceOverrideINTEL-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetPerformanceOverrideINTEL-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, or transfer operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetPerformanceOverrideINTEL-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkPerformanceOverrideInfoINTEL": {
      "core": [
        {
          "vuid": "VUID-VkPerformanceOverrideInfoINTEL-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPerformanceOverrideInfoINTEL-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPerformanceOverrideInfoINTEL-type-parameter",
          "text": "<code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPerformanceOverrideTypeINTEL\">VkPerformanceOverrideTypeINTEL</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkAcquirePerformanceConfigurationINTEL": {
      "core": [
        {
          "vuid": "VUID-vkAcquirePerformanceConfigurationINTEL-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAcquirePerformanceConfigurationINTEL-pAcquireInfo-parameter",
          "text": "<code>pAcquireInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPerformanceConfigurationAcquireInfoINTEL\">VkPerformanceConfigurationAcquireInfoINTEL</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAcquirePerformanceConfigurationINTEL-pConfiguration-parameter",
          "text": "<code>pConfiguration</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPerformanceConfigurationINTEL\">VkPerformanceConfigurationINTEL</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkPerformanceConfigurationAcquireInfoINTEL": {
      "core": [
        {
          "vuid": "VUID-VkPerformanceConfigurationAcquireInfoINTEL-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPerformanceConfigurationAcquireInfoINTEL-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPerformanceConfigurationAcquireInfoINTEL-type-parameter",
          "text": "<code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPerformanceConfigurationTypeINTEL\">VkPerformanceConfigurationTypeINTEL</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkQueueSetPerformanceConfigurationINTEL": {
      "core": [
        {
          "vuid": "VUID-vkQueueSetPerformanceConfigurationINTEL-queue-parameter",
          "text": "<code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSetPerformanceConfigurationINTEL-configuration-parameter",
          "text": "<code>configuration</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPerformanceConfigurationINTEL\">VkPerformanceConfigurationINTEL</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueSetPerformanceConfigurationINTEL-commonparent",
          "text": "Both of <code>configuration</code>, and <code>queue</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkReleasePerformanceConfigurationINTEL": {
      "core": [
        {
          "vuid": "VUID-vkReleasePerformanceConfigurationINTEL-configuration-02737",
          "text": "<code>configuration</code> <strong class=\"purple\">must</strong> not be released before all command buffers submitted while the configuration was set are in <a href=\"#commandbuffers-lifecycle\">pending state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkReleasePerformanceConfigurationINTEL-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkReleasePerformanceConfigurationINTEL-configuration-parameter",
          "text": "If <code>configuration</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>configuration</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPerformanceConfigurationINTEL\">VkPerformanceConfigurationINTEL</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkReleasePerformanceConfigurationINTEL-configuration-parent",
          "text": "If <code>configuration</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkQueryPoolVideoEncodeFeedbackCreateInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkQueryPoolVideoEncodeFeedbackCreateInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkQueryPoolVideoEncodeFeedbackCreateInfoKHR-encodeFeedbackFlags-parameter",
          "text": "<code>encodeFeedbackFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkVideoEncodeFeedbackFlagBitsKHR\">VkVideoEncodeFeedbackFlagBitsKHR</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkQueryPoolVideoEncodeFeedbackCreateInfoKHR-encodeFeedbackFlags-requiredbitmask",
          "text": "<code>encodeFeedbackFlags</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdClearColorImage": {
      "core": [
        {
          "vuid": "VUID-vkCmdClearColorImage-image-01993",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearColorImage-image-00002",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearColorImage-image-01545",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> not use any of the <a href=\"#formats-requiring-sampler-ycbcr-conversion\">formats that require a sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearColorImage-image-00003",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearColorImage-imageLayout-00004",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearColorImage-imageLayout-01394",
          "text": "<code>imageLayout</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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearColorImage-aspectMask-02498",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearColorImage-baseMipLevel-01470",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearColorImage-pRanges-01692",
          "text": "For each <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a> element of <code>pRanges</code>, if the <code>levelCount</code> member is not <code>VK_REMAINING_MIP_LEVELS</code>, then <span class=\"eq\"><code>baseMipLevel</code> +  <code>levelCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearColorImage-baseArrayLayer-01472",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearColorImage-pRanges-01693",
          "text": "For each <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a> element of <code>pRanges</code>, if the <code>layerCount</code> member is not <code>VK_REMAINING_ARRAY_LAYERS</code>, then <span class=\"eq\"><code>baseArrayLayer</code> +  <code>layerCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearColorImage-image-00007",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> not have a compressed or depth/stencil format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearColorImage-pColor-04961",
          "text": "<code>pColor</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkClearColorValue\">VkClearColorValue</a> union",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearColorImage-commandBuffer-01805",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>image</code> <strong class=\"purple\">must</strong> not be a protected image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearColorImage-commandBuffer-01806",
          "text": "If <code>commandBuffer</code> is a protected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <strong class=\"purple\">must</strong> not be an unprotected image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearColorImage-image-09678",
          "text": "If <code>image</code>&#8217;s format has components other than R and G, it <strong class=\"purple\">must</strong> not have a 64-bit component width",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearColorImage-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearColorImage-image-parameter",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearColorImage-imageLayout-parameter",
          "text": "<code>imageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearColorImage-pRanges-parameter",
          "text": "<code>pRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>rangeCount</code> valid <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearColorImage-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearColorImage-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearColorImage-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearColorImage-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearColorImage-rangeCount-arraylength",
          "text": "<code>rangeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearColorImage-commonparent",
          "text": "Both of <code>commandBuffer</code>, and <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdClearDepthStencilImage": {
      "core": [
        {
          "vuid": "VUID-vkCmdClearDepthStencilImage-image-01994",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-02658",
          "text": "If the <code>aspect</code> member of any element of <code>pRanges</code> includes <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>, and <code>image</code> was created with <a href=\"#VkImageStencilUsageCreateInfo\">separate stencil usage</a>, <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> <strong class=\"purple\">must</strong> have been included in the <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a>::<code>stencilUsage</code> used to create <code>image</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-02659",
          "text": "If the <code>aspect</code> member of any element of <code>pRanges</code> includes <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>, and <code>image</code> was not created with <a href=\"#VkImageStencilUsageCreateInfo\">separate stencil usage</a>, <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> <strong class=\"purple\">must</strong> have been included in the <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>usage</code> used to create <code>image</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-02660",
          "text": "If the <code>aspect</code> member of any element of <code>pRanges</code> includes <code>VK_IMAGE_ASPECT_DEPTH_BIT</code>, <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> <strong class=\"purple\">must</strong> have been included in the <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>usage</code> used to create <code>image</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearDepthStencilImage-image-00010",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearDepthStencilImage-imageLayout-00011",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearDepthStencilImage-imageLayout-00012",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearDepthStencilImage-aspectMask-02824",
          "text": "The <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>aspectMask</code> member of each element of the <code>pRanges</code> array <strong class=\"purple\">must</strong> not include bits other than <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> or <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearDepthStencilImage-image-02825",
          "text": "If the <code>image</code>&#8217;s format does not have a stencil component, then the <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>aspectMask</code> member of each element of the <code>pRanges</code> array <strong class=\"purple\">must</strong> not include the <code>VK_IMAGE_ASPECT_STENCIL_BIT</code> bit",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearDepthStencilImage-image-02826",
          "text": "If the <code>image</code>&#8217;s format does not have a depth component, then the <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>aspectMask</code> member of each element of the <code>pRanges</code> array <strong class=\"purple\">must</strong> not include the <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> bit",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearDepthStencilImage-baseMipLevel-01474",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-01694",
          "text": "For each <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a> element of <code>pRanges</code>, if the <code>levelCount</code> member is not <code>VK_REMAINING_MIP_LEVELS</code>, then <span class=\"eq\"><code>baseMipLevel</code> +  <code>levelCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearDepthStencilImage-baseArrayLayer-01476",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-01695",
          "text": "For each <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a> element of <code>pRanges</code>, if the <code>layerCount</code> member is not <code>VK_REMAINING_ARRAY_LAYERS</code>, then <span class=\"eq\"><code>baseArrayLayer</code> +  <code>layerCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearDepthStencilImage-image-00014",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> have a depth/stencil format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-01807",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>image</code> <strong class=\"purple\">must</strong> not be a protected image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-01808",
          "text": "If <code>commandBuffer</code> is a protected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>image</code> <strong class=\"purple\">must</strong> not be an unprotected image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearDepthStencilImage-image-parameter",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearDepthStencilImage-imageLayout-parameter",
          "text": "<code>imageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearDepthStencilImage-pDepthStencil-parameter",
          "text": "<code>pDepthStencil</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkClearDepthStencilValue\">VkClearDepthStencilValue</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-parameter",
          "text": "<code>pRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>rangeCount</code> valid <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearDepthStencilImage-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearDepthStencilImage-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearDepthStencilImage-rangeCount-arraylength",
          "text": "<code>rangeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearDepthStencilImage-commonparent",
          "text": "Both of <code>commandBuffer</code>, and <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdClearAttachments": {
      "core": [
        {
          "vuid": "VUID-vkCmdClearAttachments-aspectMask-07884",
          "text": "If the current render pass instance does not use dynamic rendering, and the <code>aspectMask</code> member of any element of <code>pAttachments</code> contains <code>VK_IMAGE_ASPECT_DEPTH_BIT</code>, the current subpass instance&#8217;s depth-stencil attachment <strong class=\"purple\">must</strong> be either <code>VK_ATTACHMENT_UNUSED</code> or the attachment <code>format</code> <strong class=\"purple\">must</strong> contain a depth component",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearAttachments-aspectMask-07885",
          "text": "If the current render pass instance does not use dynamic rendering, and the <code>aspectMask</code> member of any element of <code>pAttachments</code> contains <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>, the current subpass instance&#8217;s depth-stencil attachment <strong class=\"purple\">must</strong> be either <code>VK_ATTACHMENT_UNUSED</code> or the attachment <code>format</code> <strong class=\"purple\">must</strong> contain a stencil component",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearAttachments-aspectMask-07271",
          "text": "If the <code>aspectMask</code> member of any element of <code>pAttachments</code> contains <code>VK_IMAGE_ASPECT_COLOR_BIT</code>, the <code>colorAttachment</code> <strong class=\"purple\">must</strong> be a valid color attachment index in the current render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearAttachments-rect-02682",
          "text": "The <code>rect</code> member of each element of <code>pRects</code> <strong class=\"purple\">must</strong> have an <code>extent.width</code> greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearAttachments-rect-02683",
          "text": "The <code>rect</code> member of each element of <code>pRects</code> <strong class=\"purple\">must</strong> have an <code>extent.height</code> greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearAttachments-pRects-00016",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearAttachments-pRects-06937",
          "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, i.e. for each element of <code>pRects</code>, <a href=\"#VkClearRect\">VkClearRect</a>::<code>baseArrayLayer</code> +  <a href=\"#VkClearRect\">VkClearRect</a>::<code>layerCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of layers rendered to in the current render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearAttachments-layerCount-01934",
          "text": "The <code>layerCount</code> member of each element of <code>pRects</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearAttachments-commandBuffer-02504",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, each attachment to be cleared <strong class=\"purple\">must</strong> not be a protected image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearAttachments-commandBuffer-02505",
          "text": "If <code>commandBuffer</code> is a protected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, each attachment to be cleared <strong class=\"purple\">must</strong> not be an unprotected image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearAttachments-baseArrayLayer-00018",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearAttachments-colorAttachment-09503",
          "text": "The <code>colorAttachment</code> member of each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> not identify a color attachment that is currently mapped to <code>VK_ATTACHMENT_UNUSED</code> in <code>commandBuffer</code> via <a href=\"#VkRenderingAttachmentLocationInfoKHR\">VkRenderingAttachmentLocationInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearAttachments-aspectMask-09298",
          "text": "If the subpass this is recorded in performs an external format resolve, the <code>aspectMask</code> member of any element of <code>pAttachments</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_PLANE<em>_i_</em>BIT</code> for any index <em>i</em>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearAttachments-None-09679",
          "text": "If the attachment format has components other than R and G, it <strong class=\"purple\">must</strong> not have a 64-bit component width",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearAttachments-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearAttachments-pAttachments-parameter",
          "text": "<code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <a href=\"#VkClearAttachment\">VkClearAttachment</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearAttachments-pRects-parameter",
          "text": "<code>pRects</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>rectCount</code> <a href=\"#VkClearRect\">VkClearRect</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearAttachments-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearAttachments-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearAttachments-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearAttachments-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearAttachments-attachmentCount-arraylength",
          "text": "<code>attachmentCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdClearAttachments-rectCount-arraylength",
          "text": "<code>rectCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkClearAttachment": {
      "core": [
        {
          "vuid": "VUID-VkClearAttachment-aspectMask-00019",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkClearAttachment-aspectMask-00020",
          "text": "<code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_METADATA_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkClearAttachment-aspectMask-02246",
          "text": "<code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_MEMORY_PLANE<em>_i_</em>BIT_EXT</code> for any index <em>i</em>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkClearAttachment-aspectMask-parameter",
          "text": "<code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkClearAttachment-aspectMask-requiredbitmask",
          "text": "<code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkClearDepthStencilValue": {
      "core": [
        {
          "vuid": "VUID-VkClearDepthStencilValue-depth-00022",
          "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",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdFillBuffer": {
      "core": [
        {
          "vuid": "VUID-vkCmdFillBuffer-dstOffset-00024",
          "text": "<code>dstOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>dstBuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdFillBuffer-dstOffset-00025",
          "text": "<code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdFillBuffer-size-00026",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdFillBuffer-size-00027",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdFillBuffer-size-00028",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdFillBuffer-dstBuffer-00029",
          "text": "<code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdFillBuffer-apiVersion-07894",
          "text": "If the <a href=\"#VK_KHR_maintenance1\">VK_KHR_maintenance1</a> extension is not enabled and <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan 1.1, the <a href=\"#VkCommandPool\">VkCommandPool</a> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdFillBuffer-dstBuffer-00031",
          "text": "If <code>dstBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdFillBuffer-commandBuffer-01811",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdFillBuffer-commandBuffer-01812",
          "text": "If <code>commandBuffer</code> is a protected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdFillBuffer-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdFillBuffer-dstBuffer-parameter",
          "text": "<code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdFillBuffer-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdFillBuffer-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdFillBuffer-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdFillBuffer-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdFillBuffer-commonparent",
          "text": "Both of <code>commandBuffer</code>, and <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdUpdateBuffer": {
      "core": [
        {
          "vuid": "VUID-vkCmdUpdateBuffer-dstOffset-00032",
          "text": "<code>dstOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>dstBuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdUpdateBuffer-dataSize-00033",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdUpdateBuffer-dstBuffer-00034",
          "text": "<code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdUpdateBuffer-dstBuffer-00035",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdUpdateBuffer-dstOffset-00036",
          "text": "<code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdUpdateBuffer-dataSize-00037",
          "text": "<code>dataSize</code> <strong class=\"purple\">must</strong> be less than or equal to <code>65536</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdUpdateBuffer-dataSize-00038",
          "text": "<code>dataSize</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-01813",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-01814",
          "text": "If <code>commandBuffer</code> is a protected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdUpdateBuffer-dstBuffer-parameter",
          "text": "<code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdUpdateBuffer-pData-parameter",
          "text": "<code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdUpdateBuffer-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdUpdateBuffer-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdUpdateBuffer-dataSize-arraylength",
          "text": "<code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdUpdateBuffer-commonparent",
          "text": "Both of <code>commandBuffer</code>, and <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdCopyBuffer": {
      "core": [
        {
          "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-01822",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>srcBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-01823",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-01824",
          "text": "If <code>commandBuffer</code> is a protected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBuffer-srcOffset-00113",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBuffer-dstOffset-00114",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBuffer-size-00115",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBuffer-size-00116",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBuffer-pRegions-00117",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBuffer-srcBuffer-00118",
          "text": "<code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_SRC_BIT</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBuffer-srcBuffer-00119",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBuffer-dstBuffer-00120",
          "text": "<code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBuffer-dstBuffer-00121",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBuffer-srcBuffer-parameter",
          "text": "<code>srcBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBuffer-dstBuffer-parameter",
          "text": "<code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBuffer-pRegions-parameter",
          "text": "<code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href=\"#VkBufferCopy\">VkBufferCopy</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBuffer-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBuffer-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBuffer-regionCount-arraylength",
          "text": "<code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBuffer-commonparent",
          "text": "Each of <code>commandBuffer</code>, <code>dstBuffer</code>, and <code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkBufferCopy": {
      "core": [
        {
          "vuid": "VUID-VkBufferCopy-size-01988",
          "text": "The <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdCopyBuffer2": {
      "core": [
        {
          "vuid": "VUID-vkCmdCopyBuffer2-commandBuffer-01822",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>srcBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBuffer2-commandBuffer-01823",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBuffer2-commandBuffer-01824",
          "text": "If <code>commandBuffer</code> is a protected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBuffer2-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBuffer2-pCopyBufferInfo-parameter",
          "text": "<code>pCopyBufferInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyBufferInfo2\">VkCopyBufferInfo2</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBuffer2-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBuffer2-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBuffer2-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBuffer2-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkCopyBufferInfo2": {
      "core": [
        {
          "vuid": "VUID-VkCopyBufferInfo2-srcOffset-00113",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferInfo2-dstOffset-00114",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferInfo2-size-00115",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferInfo2-size-00116",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferInfo2-pRegions-00117",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferInfo2-srcBuffer-00118",
          "text": "<code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_SRC_BIT</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferInfo2-srcBuffer-00119",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferInfo2-dstBuffer-00120",
          "text": "<code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferInfo2-dstBuffer-00121",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferInfo2-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferInfo2-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferInfo2-srcBuffer-parameter",
          "text": "<code>srcBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferInfo2-dstBuffer-parameter",
          "text": "<code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferInfo2-pRegions-parameter",
          "text": "<code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href=\"#VkBufferCopy2\">VkBufferCopy2</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferInfo2-regionCount-arraylength",
          "text": "<code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferInfo2-commonparent",
          "text": "Both of <code>dstBuffer</code>, and <code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkBufferCopy2": {
      "core": [
        {
          "vuid": "VUID-VkBufferCopy2-size-01988",
          "text": "The <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCopy2-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_COPY_2</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferCopy2-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdCopyImage": {
      "core": [
        {
          "vuid": "VUID-vkCmdCopyImage-commandBuffer-01825",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-commandBuffer-01826",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-commandBuffer-01827",
          "text": "If <code>commandBuffer</code> is a protected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-pRegions-00124",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-srcImage-01995",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-srcImageLayout-00128",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-srcImageLayout-01917",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-srcImage-09460",
          "text": "If <code>srcImage</code> and <code>dstImage</code> are the same, and any elements of <code>pRegions</code> contains the <code>srcSubresource</code> and <code>dstSubresource</code> with matching <code>mipLevel</code> and overlapping array layers, then the <code>srcImageLayout</code> and <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_GENERAL</code> or <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-dstImage-01996",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-dstImageLayout-00133",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-dstImageLayout-01395",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-srcImage-01548",
          "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 <a href=\"#formats-size-compatibility\">size-compatible</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-None-01549",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-srcImage-09247",
          "text": "If the <a href=\"#VkFormat\">VkFormat</a> of each of <code>srcImage</code> and <code>dstImage</code> is a <a href=\"#compressed_image_formats\">compressed image format</a>, the formats <strong class=\"purple\">must</strong> have the same texel block extent",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-srcImage-00136",
          "text": "The sample count of <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-srcOffset-01783",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-dstOffset-01784",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-srcImage-01551",
          "text": "If neither <code>srcImage</code> nor <code>dstImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a> then for each element of <code>pRegions</code>, <code>srcSubresource.aspectMask</code> and <code>dstSubresource.aspectMask</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-srcImage-08713",
          "text": "If <code>srcImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a>, then for each element of <code>pRegions</code>, <code>srcSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be a single valid <a href=\"#formats-planes-image-aspect\">multi-planar aspect mask</a> bit",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-dstImage-08714",
          "text": "If <code>dstImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a>, then for each element of <code>pRegions</code>, <code>dstSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be a single valid <a href=\"#formats-planes-image-aspect\">multi-planar aspect mask</a> bit",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-srcImage-01556",
          "text": "If <code>srcImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a> and the <code>dstImage</code> does not have a multi-planar image format, then for each element of <code>pRegions</code>, <code>dstSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-dstImage-01557",
          "text": "If <code>dstImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a> and the <code>srcImage</code> does not have a multi-planar image format, then for each element of <code>pRegions</code>, <code>srcSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-apiVersion-07932",
          "text": "If     the <a href=\"#VK_KHR_maintenance1\">VK_KHR_maintenance1</a> extension is not enabled, or     <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan     1.1, and     either <code>srcImage</code> or <code>dstImage</code> is of type     <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>,     <code>srcSubresource.baseArrayLayer</code> and     <code>dstSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> both be <code>0</code>, and     <code>srcSubresource.layerCount</code> and <code>dstSubresource.layerCount</code>     <strong class=\"purple\">must</strong> both be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-srcImage-04443",
          "text": "If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>srcSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>srcSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-dstImage-04444",
          "text": "If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>dstSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>dstSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-aspectMask-00142",
          "text": "For each element of <code>pRegions</code>, <code>srcSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-aspectMask-00143",
          "text": "For each element of <code>pRegions</code>, <code>dstSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-srcOffset-00144",
          "text": "For each element of <code>pRegions</code>, <code>srcOffset.x</code> and <span class=\"eq\">(<code>extent.width</code> +  <code>srcOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>srcSubresource</code> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-srcOffset-00145",
          "text": "For each element of <code>pRegions</code>, <code>srcOffset.y</code> and <span class=\"eq\">(<code>extent.height</code> +  <code>srcOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>srcSubresource</code> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-srcImage-00146",
          "text": "If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>srcOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-srcOffset-00147",
          "text": "If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>srcOffset.z</code> and <span class=\"eq\">(<code>extent.depth</code> +  <code>srcOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>srcSubresource</code> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-srcImage-01785",
          "text": "If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>srcOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-dstImage-01786",
          "text": "If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>dstOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-srcImage-01787",
          "text": "If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>srcOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-dstImage-01788",
          "text": "If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>dstOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-apiVersion-07933",
          "text": "If     the <a href=\"#VK_KHR_maintenance1\">VK_KHR_maintenance1</a> extension is not enabled, and     <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan     1.1,     <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> have the same <a href=\"#VkImageType\">VkImageType</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-apiVersion-08969",
          "text": "If     the <a href=\"#VK_KHR_maintenance1\">VK_KHR_maintenance1</a> extension is not enabled, and     <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan     1.1,     <code>srcImage</code> or <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, then     for each element of <code>pRegions</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-srcImage-07743",
          "text": "If <code>srcImage</code> and <code>dstImage</code> have a different <a href=\"#VkImageType\">VkImageType</a>, and <a href=\"#features-maintenance5\"><code>maintenance5</code></a> is not enabled, one <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_3D</code> and the other <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-srcImage-08793",
          "text": "If <code>srcImage</code> and <code>dstImage</code> have the same <a href=\"#VkImageType\">VkImageType</a>, for each element of <code>pRegions</code>, if neither of the <code>layerCount</code> members of <code>srcSubresource</code> or <code>dstSubresource</code> are <code>VK_REMAINING_ARRAY_LAYERS</code>, the <code>layerCount</code> members of <code>srcSubresource</code> or <code>dstSubresource</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-srcImage-08794",
          "text": "If <code>srcImage</code> and <code>dstImage</code> have the same <a href=\"#VkImageType\">VkImageType</a>, and one of the <code>layerCount</code> members of <code>srcSubresource</code> or <code>dstSubresource</code> is <code>VK_REMAINING_ARRAY_LAYERS</code>, the other member <strong class=\"purple\">must</strong> be either <code>VK_REMAINING_ARRAY_LAYERS</code> or equal to the <code>arrayLayers</code> member of the <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> used to create the image minus <code>baseArrayLayer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-srcImage-01790",
          "text": "If <code>srcImage</code> and <code>dstImage</code> are both of type <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-srcImage-01791",
          "text": "If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, and <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> equal <code>srcSubresource.layerCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-dstImage-01792",
          "text": "If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, and <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> equal <code>dstSubresource.layerCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-dstOffset-00150",
          "text": "For each element of <code>pRegions</code>, <code>dstOffset.x</code> and <span class=\"eq\">(<code>extent.width</code> +  <code>dstOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>dstSubresource</code> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-dstOffset-00151",
          "text": "For each element of <code>pRegions</code>, <code>dstOffset.y</code> and <span class=\"eq\">(<code>extent.height</code> +  <code>dstOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>dstSubresource</code> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-dstImage-00152",
          "text": "If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>dstOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-dstOffset-00153",
          "text": "If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>dstOffset.z</code> and <span class=\"eq\">(<code>extent.depth</code> +  <code>dstOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>dstSubresource</code> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-pRegions-07278",
          "text": "For each element of <code>pRegions</code>, <code>srcOffset.x</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-pRegions-07279",
          "text": "For each element of <code>pRegions</code>, <code>srcOffset.y</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-pRegions-07280",
          "text": "For each element of <code>pRegions</code>, <code>srcOffset.z</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-pRegions-07281",
          "text": "For each element of <code>pRegions</code>, <code>dstOffset.x</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-pRegions-07282",
          "text": "For each element of <code>pRegions</code>, <code>dstOffset.y</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-pRegions-07283",
          "text": "For each element of <code>pRegions</code>, <code>dstOffset.z</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-srcImage-01728",
          "text": "For each element of <code>pRegions</code>, if the sum of <code>srcOffset.x</code> and <code>extent.width</code> does not equal the width of the subresource specified by <code>srcSubresource</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-srcImage-01729",
          "text": "For each element of <code>pRegions</code>, if the sum of <code>srcOffset.y</code> and <code>extent.height</code> does not equal the height of the subresource specified by <code>srcSubresource</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-srcImage-01730",
          "text": "For each element of <code>pRegions</code>, if the sum of <code>srcOffset.z</code> and <code>extent.depth</code> does not equal the depth of the subresource specified by <code>srcSubresource</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-dstImage-01732",
          "text": "For each element of <code>pRegions</code>, if the sum of <code>dstOffset.x</code> and <code>extent.width</code> does not equal the width of the subresource specified by <code>dstSubresource</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-dstImage-01733",
          "text": "For each element of <code>pRegions</code>, if the sum of <code>dstOffset.y</code> and <code>extent.height</code> does not equal the height of the subresource specified by <code>dstSubresource</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-dstImage-01734",
          "text": "For each element of <code>pRegions</code>, if the sum of <code>dstOffset.z</code> and <code>extent.depth</code> does not equal the depth of the subresource specified by <code>dstSubresource</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-aspect-06662",
          "text": "If the <code>aspect</code> member of any element of <code>pRegions</code> includes any flag other than <code>VK_IMAGE_ASPECT_STENCIL_BIT</code> or <code>srcImage</code> was not created with <a href=\"#VkImageStencilUsageCreateInfo\">separate stencil usage</a>, <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> <strong class=\"purple\">must</strong> have been included in the <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>usage</code> used to create <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-aspect-06663",
          "text": "If the <code>aspect</code> member of any element of <code>pRegions</code> includes any flag other than <code>VK_IMAGE_ASPECT_STENCIL_BIT</code> or <code>dstImage</code> was not created with <a href=\"#VkImageStencilUsageCreateInfo\">separate stencil usage</a>, <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> <strong class=\"purple\">must</strong> have been included in the <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>usage</code> used to create <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-aspect-06664",
          "text": "If the <code>aspect</code> member of any element of <code>pRegions</code> includes <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>, and <code>srcImage</code> was created with <a href=\"#VkImageStencilUsageCreateInfo\">separate stencil usage</a>, <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> <strong class=\"purple\">must</strong> have been included in the <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a>::<code>stencilUsage</code> used to create <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-aspect-06665",
          "text": "If the <code>aspect</code> member of any element of <code>pRegions</code> includes <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>, and <code>dstImage</code> was created with <a href=\"#VkImageStencilUsageCreateInfo\">separate stencil usage</a>, <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> <strong class=\"purple\">must</strong> have been included in the <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a>::<code>stencilUsage</code> used to create <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-srcImage-07966",
          "text": "If <code>srcImage</code> is non-sparse then the image or the specified <em>disjoint</em> plane <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-srcSubresource-07967",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-srcSubresource-07968",
          "text": "If <code>srcSubresource.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <span class=\"eq\"><code>srcSubresource.baseArrayLayer</code> +  <code>srcSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-srcImage-07969",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-dstImage-07966",
          "text": "If <code>dstImage</code> is non-sparse then the image or the specified <em>disjoint</em> plane <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-dstSubresource-07967",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-dstSubresource-07968",
          "text": "If <code>dstSubresource.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <span class=\"eq\"><code>dstSubresource.baseArrayLayer</code> +  <code>dstSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-dstImage-07969",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-srcImage-parameter",
          "text": "<code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-srcImageLayout-parameter",
          "text": "<code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-dstImage-parameter",
          "text": "<code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-dstImageLayout-parameter",
          "text": "<code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-pRegions-parameter",
          "text": "<code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href=\"#VkImageCopy\">VkImageCopy</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-regionCount-arraylength",
          "text": "<code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage-commonparent",
          "text": "Each of <code>commandBuffer</code>, <code>dstImage</code>, and <code>srcImage</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkImageCopy": {
      "core": [
        {
          "vuid": "VUID-VkImageCopy-apiVersion-07940",
          "text": "If     the <a href=\"#VK_KHR_sampler_ycbcr_conversion\">VK_KHR_sampler_ycbcr_conversion</a> extension is not enabled, and     <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan     1.1, the     <code>aspectMask</code> member of <code>srcSubresource</code> and <code>dstSubresource</code>     <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCopy-apiVersion-07941",
          "text": "If     the <a href=\"#VK_KHR_maintenance1\">VK_KHR_maintenance1</a> extension is not enabled, and     <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan     1.1, the     <code>layerCount</code> member of <code>srcSubresource</code> and <code>dstSubresource</code>     <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCopy-extent-06668",
          "text": "<code>extent.width</code> <strong class=\"purple\">must</strong> not be 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCopy-extent-06669",
          "text": "<code>extent.height</code> <strong class=\"purple\">must</strong> not be 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCopy-extent-06670",
          "text": "<code>extent.depth</code> <strong class=\"purple\">must</strong> not be 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCopy-srcSubresource-parameter",
          "text": "<code>srcSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCopy-dstSubresource-parameter",
          "text": "<code>dstSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkImageSubresourceLayers": {
      "core": [
        {
          "vuid": "VUID-VkImageSubresourceLayers-aspectMask-00167",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageSubresourceLayers-aspectMask-00168",
          "text": "<code>aspectMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_ASPECT_METADATA_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageSubresourceLayers-aspectMask-02247",
          "text": "<code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_MEMORY_PLANE<em>_i_</em>BIT_EXT</code> for any index <em>i</em>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageSubresourceLayers-layerCount-09243",
          "text": "If the <a href=\"#features-maintenance5\"><code>maintenance5</code></a> feature is not enabled, <code>layerCount</code> <strong class=\"purple\">must</strong> not be <code>VK_REMAINING_ARRAY_LAYERS</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageSubresourceLayers-layerCount-01700",
          "text": "If <code>layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, it <strong class=\"purple\">must</strong> be greater than 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageSubresourceLayers-aspectMask-parameter",
          "text": "<code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageSubresourceLayers-aspectMask-requiredbitmask",
          "text": "<code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdCopyImage2": {
      "core": [
        {
          "vuid": "VUID-vkCmdCopyImage2-commandBuffer-01825",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage2-commandBuffer-01826",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage2-commandBuffer-01827",
          "text": "If <code>commandBuffer</code> is a protected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage2-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage2-pCopyImageInfo-parameter",
          "text": "<code>pCopyImageInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyImageInfo2\">VkCopyImageInfo2</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage2-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage2-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage2-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImage2-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkCopyImageInfo2": {
      "core": [
        {
          "vuid": "VUID-VkCopyImageInfo2-pRegions-00124",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-srcImage-01995",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-srcImageLayout-00128",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-srcImageLayout-01917",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-srcImage-09460",
          "text": "If <code>srcImage</code> and <code>dstImage</code> are the same, and any elements of <code>pRegions</code> contains the <code>srcSubresource</code> and <code>dstSubresource</code> with matching <code>mipLevel</code> and overlapping array layers, then the <code>srcImageLayout</code> and <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_GENERAL</code> or <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-dstImage-01996",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-dstImageLayout-00133",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-dstImageLayout-01395",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-srcImage-01548",
          "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 <a href=\"#formats-size-compatibility\">size-compatible</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-None-01549",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-srcImage-09247",
          "text": "If the <a href=\"#VkFormat\">VkFormat</a> of each of <code>srcImage</code> and <code>dstImage</code> is a <a href=\"#compressed_image_formats\">compressed image format</a>, the formats <strong class=\"purple\">must</strong> have the same texel block extent",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-srcImage-00136",
          "text": "The sample count of <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-srcOffset-01783",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-dstOffset-01784",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-srcImage-01551",
          "text": "If neither <code>srcImage</code> nor <code>dstImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a> then for each element of <code>pRegions</code>, <code>srcSubresource.aspectMask</code> and <code>dstSubresource.aspectMask</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-srcImage-08713",
          "text": "If <code>srcImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a>, then for each element of <code>pRegions</code>, <code>srcSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be a single valid <a href=\"#formats-planes-image-aspect\">multi-planar aspect mask</a> bit",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-dstImage-08714",
          "text": "If <code>dstImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a>, then for each element of <code>pRegions</code>, <code>dstSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be a single valid <a href=\"#formats-planes-image-aspect\">multi-planar aspect mask</a> bit",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-srcImage-01556",
          "text": "If <code>srcImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a> and the <code>dstImage</code> does not have a multi-planar image format, then for each element of <code>pRegions</code>, <code>dstSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-dstImage-01557",
          "text": "If <code>dstImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a> and the <code>srcImage</code> does not have a multi-planar image format, then for each element of <code>pRegions</code>, <code>srcSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-apiVersion-07932",
          "text": "If     the <a href=\"#VK_KHR_maintenance1\">VK_KHR_maintenance1</a> extension is not enabled, or     <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan     1.1, and     either <code>srcImage</code> or <code>dstImage</code> is of type     <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>,     <code>srcSubresource.baseArrayLayer</code> and     <code>dstSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> both be <code>0</code>, and     <code>srcSubresource.layerCount</code> and <code>dstSubresource.layerCount</code>     <strong class=\"purple\">must</strong> both be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-srcImage-04443",
          "text": "If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>srcSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>srcSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-dstImage-04444",
          "text": "If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>dstSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>dstSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-aspectMask-00142",
          "text": "For each element of <code>pRegions</code>, <code>srcSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-aspectMask-00143",
          "text": "For each element of <code>pRegions</code>, <code>dstSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-srcOffset-00144",
          "text": "For each element of <code>pRegions</code>, <code>srcOffset.x</code> and <span class=\"eq\">(<code>extent.width</code> +  <code>srcOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>srcSubresource</code> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-srcOffset-00145",
          "text": "For each element of <code>pRegions</code>, <code>srcOffset.y</code> and <span class=\"eq\">(<code>extent.height</code> +  <code>srcOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>srcSubresource</code> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-srcImage-00146",
          "text": "If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>srcOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-srcOffset-00147",
          "text": "If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>srcOffset.z</code> and <span class=\"eq\">(<code>extent.depth</code> +  <code>srcOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>srcSubresource</code> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-srcImage-01785",
          "text": "If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>srcOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-dstImage-01786",
          "text": "If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>dstOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-srcImage-01787",
          "text": "If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>srcOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-dstImage-01788",
          "text": "If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>dstOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-apiVersion-07933",
          "text": "If     the <a href=\"#VK_KHR_maintenance1\">VK_KHR_maintenance1</a> extension is not enabled, and     <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan     1.1,     <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> have the same <a href=\"#VkImageType\">VkImageType</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-apiVersion-08969",
          "text": "If     the <a href=\"#VK_KHR_maintenance1\">VK_KHR_maintenance1</a> extension is not enabled, and     <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan     1.1,     <code>srcImage</code> or <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, then     for each element of <code>pRegions</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-srcImage-07743",
          "text": "If <code>srcImage</code> and <code>dstImage</code> have a different <a href=\"#VkImageType\">VkImageType</a>, and <a href=\"#features-maintenance5\"><code>maintenance5</code></a> is not enabled, one <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_3D</code> and the other <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-srcImage-08793",
          "text": "If <code>srcImage</code> and <code>dstImage</code> have the same <a href=\"#VkImageType\">VkImageType</a>, for each element of <code>pRegions</code>, if neither of the <code>layerCount</code> members of <code>srcSubresource</code> or <code>dstSubresource</code> are <code>VK_REMAINING_ARRAY_LAYERS</code>, the <code>layerCount</code> members of <code>srcSubresource</code> or <code>dstSubresource</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-srcImage-08794",
          "text": "If <code>srcImage</code> and <code>dstImage</code> have the same <a href=\"#VkImageType\">VkImageType</a>, and one of the <code>layerCount</code> members of <code>srcSubresource</code> or <code>dstSubresource</code> is <code>VK_REMAINING_ARRAY_LAYERS</code>, the other member <strong class=\"purple\">must</strong> be either <code>VK_REMAINING_ARRAY_LAYERS</code> or equal to the <code>arrayLayers</code> member of the <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> used to create the image minus <code>baseArrayLayer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-srcImage-01790",
          "text": "If <code>srcImage</code> and <code>dstImage</code> are both of type <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-srcImage-01791",
          "text": "If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, and <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> equal <code>srcSubresource.layerCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-dstImage-01792",
          "text": "If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, and <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> equal <code>dstSubresource.layerCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-dstOffset-00150",
          "text": "For each element of <code>pRegions</code>, <code>dstOffset.x</code> and <span class=\"eq\">(<code>extent.width</code> +  <code>dstOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>dstSubresource</code> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-dstOffset-00151",
          "text": "For each element of <code>pRegions</code>, <code>dstOffset.y</code> and <span class=\"eq\">(<code>extent.height</code> +  <code>dstOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>dstSubresource</code> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-dstImage-00152",
          "text": "If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>dstOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-dstOffset-00153",
          "text": "If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>dstOffset.z</code> and <span class=\"eq\">(<code>extent.depth</code> +  <code>dstOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>dstSubresource</code> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-pRegions-07278",
          "text": "For each element of <code>pRegions</code>, <code>srcOffset.x</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-pRegions-07279",
          "text": "For each element of <code>pRegions</code>, <code>srcOffset.y</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-pRegions-07280",
          "text": "For each element of <code>pRegions</code>, <code>srcOffset.z</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-pRegions-07281",
          "text": "For each element of <code>pRegions</code>, <code>dstOffset.x</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-pRegions-07282",
          "text": "For each element of <code>pRegions</code>, <code>dstOffset.y</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-pRegions-07283",
          "text": "For each element of <code>pRegions</code>, <code>dstOffset.z</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-srcImage-01728",
          "text": "For each element of <code>pRegions</code>, if the sum of <code>srcOffset.x</code> and <code>extent.width</code> does not equal the width of the subresource specified by <code>srcSubresource</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-srcImage-01729",
          "text": "For each element of <code>pRegions</code>, if the sum of <code>srcOffset.y</code> and <code>extent.height</code> does not equal the height of the subresource specified by <code>srcSubresource</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-srcImage-01730",
          "text": "For each element of <code>pRegions</code>, if the sum of <code>srcOffset.z</code> and <code>extent.depth</code> does not equal the depth of the subresource specified by <code>srcSubresource</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-dstImage-01732",
          "text": "For each element of <code>pRegions</code>, if the sum of <code>dstOffset.x</code> and <code>extent.width</code> does not equal the width of the subresource specified by <code>dstSubresource</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-dstImage-01733",
          "text": "For each element of <code>pRegions</code>, if the sum of <code>dstOffset.y</code> and <code>extent.height</code> does not equal the height of the subresource specified by <code>dstSubresource</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-dstImage-01734",
          "text": "For each element of <code>pRegions</code>, if the sum of <code>dstOffset.z</code> and <code>extent.depth</code> does not equal the depth of the subresource specified by <code>dstSubresource</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-aspect-06662",
          "text": "If the <code>aspect</code> member of any element of <code>pRegions</code> includes any flag other than <code>VK_IMAGE_ASPECT_STENCIL_BIT</code> or <code>srcImage</code> was not created with <a href=\"#VkImageStencilUsageCreateInfo\">separate stencil usage</a>, <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> <strong class=\"purple\">must</strong> have been included in the <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>usage</code> used to create <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-aspect-06663",
          "text": "If the <code>aspect</code> member of any element of <code>pRegions</code> includes any flag other than <code>VK_IMAGE_ASPECT_STENCIL_BIT</code> or <code>dstImage</code> was not created with <a href=\"#VkImageStencilUsageCreateInfo\">separate stencil usage</a>, <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> <strong class=\"purple\">must</strong> have been included in the <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>usage</code> used to create <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-aspect-06664",
          "text": "If the <code>aspect</code> member of any element of <code>pRegions</code> includes <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>, and <code>srcImage</code> was created with <a href=\"#VkImageStencilUsageCreateInfo\">separate stencil usage</a>, <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> <strong class=\"purple\">must</strong> have been included in the <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a>::<code>stencilUsage</code> used to create <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-aspect-06665",
          "text": "If the <code>aspect</code> member of any element of <code>pRegions</code> includes <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>, and <code>dstImage</code> was created with <a href=\"#VkImageStencilUsageCreateInfo\">separate stencil usage</a>, <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> <strong class=\"purple\">must</strong> have been included in the <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a>::<code>stencilUsage</code> used to create <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-srcImage-07966",
          "text": "If <code>srcImage</code> is non-sparse then the image or the specified <em>disjoint</em> plane <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-srcSubresource-07967",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-srcSubresource-07968",
          "text": "If <code>srcSubresource.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <span class=\"eq\"><code>srcSubresource.baseArrayLayer</code> +  <code>srcSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-srcImage-07969",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-dstImage-07966",
          "text": "If <code>dstImage</code> is non-sparse then the image or the specified <em>disjoint</em> plane <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-dstSubresource-07967",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-dstSubresource-07968",
          "text": "If <code>dstSubresource.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <span class=\"eq\"><code>dstSubresource.baseArrayLayer</code> +  <code>dstSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-dstImage-07969",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-srcImage-parameter",
          "text": "<code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-srcImageLayout-parameter",
          "text": "<code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-dstImage-parameter",
          "text": "<code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-dstImageLayout-parameter",
          "text": "<code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-pRegions-parameter",
          "text": "<code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href=\"#VkImageCopy2\">VkImageCopy2</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-regionCount-arraylength",
          "text": "<code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageInfo2-commonparent",
          "text": "Both of <code>dstImage</code>, and <code>srcImage</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkImageCopy2": {
      "core": [
        {
          "vuid": "VUID-VkImageCopy2-apiVersion-07940",
          "text": "If     the <a href=\"#VK_KHR_sampler_ycbcr_conversion\">VK_KHR_sampler_ycbcr_conversion</a> extension is not enabled, and     <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan     1.1, the     <code>aspectMask</code> member of <code>srcSubresource</code> and <code>dstSubresource</code>     <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCopy2-apiVersion-07941",
          "text": "If     the <a href=\"#VK_KHR_maintenance1\">VK_KHR_maintenance1</a> extension is not enabled, and     <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan     1.1, the     <code>layerCount</code> member of <code>srcSubresource</code> and <code>dstSubresource</code>     <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCopy2-extent-06668",
          "text": "<code>extent.width</code> <strong class=\"purple\">must</strong> not be 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCopy2-extent-06669",
          "text": "<code>extent.height</code> <strong class=\"purple\">must</strong> not be 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCopy2-extent-06670",
          "text": "<code>extent.depth</code> <strong class=\"purple\">must</strong> not be 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCopy2-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_COPY_2</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCopy2-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCopy2-srcSubresource-parameter",
          "text": "<code>srcSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageCopy2-dstSubresource-parameter",
          "text": "<code>dstSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdCopyBufferToImage": {
      "core": [
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-07966",
          "text": "If <code>dstImage</code> is non-sparse then the image or the specified <em>disjoint</em> plane <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-imageSubresource-07967",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-imageSubresource-07968",
          "text": "If <code>imageSubresource.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <span class=\"eq\"><code>imageSubresource.baseArrayLayer</code> +  <code>imageSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-07969",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-imageSubresource-07970",
          "text": "The image region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be contained within the specified <code>imageSubresource</code> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-imageSubresource-07971",
          "text": "For each element of <code>pRegions</code>, <code>imageOffset.x</code> and <span class=\"eq\">(<code>imageExtent.width</code> +  <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>imageSubresource</code> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-imageSubresource-07972",
          "text": "For each element of <code>pRegions</code>, <code>imageOffset.y</code> and <span class=\"eq\">(<code>imageExtent.height</code> +  <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>imageSubresource</code> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-07973",
          "text": "<code>dstImage</code> <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-01828",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>srcBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-01829",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-01830",
          "text": "If <code>commandBuffer</code> is a protected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-07737",
          "text": "If the queue family used to create the <a href=\"#VkCommandPool\">VkCommandPool</a> which <code>commandBuffer</code> was allocated from does not support <code>VK_QUEUE_GRAPHICS_BIT</code> or <code>VK_QUEUE_COMPUTE_BIT</code>, the <code>bufferOffset</code> member of any element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-imageOffset-07738",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-07739",
          "text": "If the queue family used to create the <a href=\"#VkCommandPool\">VkCommandPool</a> which <code>commandBuffer</code> was allocated from does not support <code>VK_QUEUE_GRAPHICS_BIT</code>, for each element of <code>pRegions</code>, the <code>aspectMask</code> member of <code>imageSubresource</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> or <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-00171",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-00173",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-srcBuffer-00174",
          "text": "<code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_SRC_BIT</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-01997",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-srcBuffer-00176",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-00177",
          "text": "<code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-00180",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-01396",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-07931",
          "text": "If <a href=\"#VK_EXT_depth_range_unrestricted\">VK_EXT_depth_range_unrestricted</a> is not enabled, for each element of <code>pRegions</code> whose <code>imageSubresource</code> contains a depth aspect, the data in <code>srcBuffer</code> <strong class=\"purple\">must</strong> be in the range <span class=\"eq\">[0,1]</span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-07979",
          "text": "If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageExtent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-imageOffset-09104",
          "text": "For each element of <code>pRegions</code>, <code>imageOffset.z</code> and <span class=\"eq\">(<code>imageExtent.depth</code> +  <code>imageOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>imageSubresource</code> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-07980",
          "text": "If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-07274",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code> or <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code>, <code>imageOffset.x</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-imageOffset-10051",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code> or <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, and <code>imageOffset.x</code> does not equal the width of the subresource specified by <code>imageSubresource</code>, <code>imageOffset.x</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-07275",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code> or <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-imageOffset-10052",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code> or <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code>, and <code>imageOffset.y</code> does not equal the height of the subresource specified by <code>imageSubresource</code>, <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-07276",
          "text": "For each element of <code>pRegions</code>, <code>imageOffset.z</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-00207",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code>, the sum of <code>imageOffset.x</code> and <code>extent.width</code> does not equal the width of the subresource specified by <code>imageSubresource</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-imageOffset-10053",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, the difference of <code>imageOffset.x</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-imageOffset-10054",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code>, the difference of <code>imageOffset.x</code> and <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-imageOffset-10055",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code>, the sum of <code>imageOffset.x</code> and <code>extent.height</code> does not equal the width of the subresource specified by <code>imageSubresource</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-00208",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code>, and the sum of <code>imageOffset.y</code> and <code>extent.height</code> does not equal the height of the subresource specified by <code>imageSubresource</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-imageOffset-10056",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, the sum of <code>imageOffset.y</code> and <code>extent.width</code> does not equal the height of the subresource specified by <code>imageSubresource</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-imageOffset-10057",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code>, the difference of <code>imageOffset.y</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-imageOffset-10058",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code>, the difference of <code>imageOffset.y</code> and <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-00209",
          "text": "For each element of <code>pRegions</code>, if the sum of <code>imageOffset.z</code> and <code>extent.depth</code> does not equal the depth of the subresource specified by <code>srcSubresource</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-imageSubresource-09105",
          "text": "For each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-07981",
          "text": "If <code>dstImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a>, then for each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be a single valid <a href=\"#formats-planes-image-aspect\">multi-planar aspect mask</a> bit",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-07983",
          "text": "If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, for each element of <code>pRegions</code>, <code>imageSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-bufferRowLength-09106",
          "text": "For each element of <code>pRegions</code>, <code>bufferRowLength</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-bufferImageHeight-09107",
          "text": "For each element of <code>pRegions</code>, <code>bufferImageHeight</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-bufferRowLength-09108",
          "text": "For each element of <code>pRegions</code>, <code>bufferRowLength</code> divided by the <a href=\"#formats-compatibility-classes\">texel block extent width</a> and then multiplied by the texel block size of <code>dstImage</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\">2<sup>31</sup>-1</span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-07975",
          "text": "If <code>dstImage</code> does not have either a depth/stencil format or a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block size</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-07976",
          "text": "If <code>dstImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the element size of the compatible format for the format and the <code>aspectMask</code> of the <code>imageSubresource</code> as defined in <a href=\"#formats-compatible-planes\">Compatible Formats of Planes of Multi-Planar Formats</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-07978",
          "text": "If <code>dstImage</code> has a depth/stencil format, the <code>bufferOffset</code> member of any element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-srcBuffer-parameter",
          "text": "<code>srcBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-parameter",
          "text": "<code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-parameter",
          "text": "<code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-parameter",
          "text": "<code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href=\"#VkBufferImageCopy\">VkBufferImageCopy</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-regionCount-arraylength",
          "text": "<code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage-commonparent",
          "text": "Each of <code>commandBuffer</code>, <code>dstImage</code>, and <code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdCopyImageToBuffer": {
      "core": [
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-07966",
          "text": "If <code>srcImage</code> is non-sparse then the image or the specified <em>disjoint</em> plane <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-imageSubresource-07967",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-imageSubresource-07968",
          "text": "If <code>imageSubresource.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <span class=\"eq\"><code>imageSubresource.baseArrayLayer</code> +  <code>imageSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-07969",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-imageSubresource-07970",
          "text": "The image region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be contained within the specified <code>imageSubresource</code> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-imageSubresource-07971",
          "text": "For each element of <code>pRegions</code>, <code>imageOffset.x</code> and <span class=\"eq\">(<code>imageExtent.width</code> +  <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>imageSubresource</code> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-imageSubresource-07972",
          "text": "For each element of <code>pRegions</code>, <code>imageOffset.y</code> and <span class=\"eq\">(<code>imageExtent.height</code> +  <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>imageSubresource</code> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-07973",
          "text": "<code>srcImage</code> <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-01831",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-01832",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-01833",
          "text": "If <code>commandBuffer</code> is a protected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-07746",
          "text": "If the queue family used to create the <a href=\"#VkCommandPool\">VkCommandPool</a> which <code>commandBuffer</code> was allocated from does not support <code>VK_QUEUE_GRAPHICS_BIT</code> or <code>VK_QUEUE_COMPUTE_BIT</code>, the <code>bufferOffset</code> member of any element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-imageOffset-07747",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-00183",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-00184",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00186",
          "text": "<code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-01998",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-dstBuffer-00191",
          "text": "<code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-dstBuffer-00192",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-00189",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-01397",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-07979",
          "text": "If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageExtent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-imageOffset-09104",
          "text": "For each element of <code>pRegions</code>, <code>imageOffset.z</code> and <span class=\"eq\">(<code>imageExtent.depth</code> +  <code>imageOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>imageSubresource</code> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-07980",
          "text": "If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-07274",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code> or <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code>, <code>imageOffset.x</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-imageOffset-10051",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code> or <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, and <code>imageOffset.x</code> does not equal the width of the subresource specified by <code>imageSubresource</code>, <code>imageOffset.x</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-07275",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code> or <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-imageOffset-10052",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code> or <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code>, and <code>imageOffset.y</code> does not equal the height of the subresource specified by <code>imageSubresource</code>, <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-07276",
          "text": "For each element of <code>pRegions</code>, <code>imageOffset.z</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00207",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code>, the sum of <code>imageOffset.x</code> and <code>extent.width</code> does not equal the width of the subresource specified by <code>imageSubresource</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-imageOffset-10053",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, the difference of <code>imageOffset.x</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-imageOffset-10054",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code>, the difference of <code>imageOffset.x</code> and <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-imageOffset-10055",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code>, the sum of <code>imageOffset.x</code> and <code>extent.height</code> does not equal the width of the subresource specified by <code>imageSubresource</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00208",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code>, and the sum of <code>imageOffset.y</code> and <code>extent.height</code> does not equal the height of the subresource specified by <code>imageSubresource</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-imageOffset-10056",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, the sum of <code>imageOffset.y</code> and <code>extent.width</code> does not equal the height of the subresource specified by <code>imageSubresource</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-imageOffset-10057",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code>, the difference of <code>imageOffset.y</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-imageOffset-10058",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code>, the difference of <code>imageOffset.y</code> and <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00209",
          "text": "For each element of <code>pRegions</code>, if the sum of <code>imageOffset.z</code> and <code>extent.depth</code> does not equal the depth of the subresource specified by <code>srcSubresource</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-imageSubresource-09105",
          "text": "For each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-07981",
          "text": "If <code>srcImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a>, then for each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be a single valid <a href=\"#formats-planes-image-aspect\">multi-planar aspect mask</a> bit",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-07983",
          "text": "If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, for each element of <code>pRegions</code>, <code>imageSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-bufferRowLength-09106",
          "text": "For each element of <code>pRegions</code>, <code>bufferRowLength</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-bufferImageHeight-09107",
          "text": "For each element of <code>pRegions</code>, <code>bufferImageHeight</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-bufferRowLength-09108",
          "text": "For each element of <code>pRegions</code>, <code>bufferRowLength</code> divided by the <a href=\"#formats-compatibility-classes\">texel block extent width</a> and then multiplied by the texel block size of <code>srcImage</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\">2<sup>31</sup>-1</span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-07975",
          "text": "If <code>srcImage</code> does not have either a depth/stencil format or a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block size</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-07976",
          "text": "If <code>srcImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the element size of the compatible format for the format and the <code>aspectMask</code> of the <code>imageSubresource</code> as defined in <a href=\"#formats-compatible-planes\">Compatible Formats of Planes of Multi-Planar Formats</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-07978",
          "text": "If <code>srcImage</code> has a depth/stencil format, the <code>bufferOffset</code> member of any element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-parameter",
          "text": "<code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-parameter",
          "text": "<code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-dstBuffer-parameter",
          "text": "<code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-parameter",
          "text": "<code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href=\"#VkBufferImageCopy\">VkBufferImageCopy</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-regionCount-arraylength",
          "text": "<code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer-commonparent",
          "text": "Each of <code>commandBuffer</code>, <code>dstBuffer</code>, and <code>srcImage</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkBufferImageCopy": {
      "core": [
        {
          "vuid": "VUID-VkBufferImageCopy-bufferRowLength-09101",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferImageCopy-bufferImageHeight-09102",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferImageCopy-aspectMask-09103",
          "text": "The <code>aspectMask</code> member of <code>imageSubresource</code> <strong class=\"purple\">must</strong> only have a single bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferImageCopy-imageExtent-06659",
          "text": "<code>imageExtent.width</code> <strong class=\"purple\">must</strong> not be 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferImageCopy-imageExtent-06660",
          "text": "<code>imageExtent.height</code> <strong class=\"purple\">must</strong> not be 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferImageCopy-imageExtent-06661",
          "text": "<code>imageExtent.depth</code> <strong class=\"purple\">must</strong> not be 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferImageCopy-imageSubresource-parameter",
          "text": "<code>imageSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdCopyBufferToImage2": {
      "core": [
        {
          "vuid": "VUID-vkCmdCopyBufferToImage2-commandBuffer-01828",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>srcBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage2-commandBuffer-01829",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage2-commandBuffer-01830",
          "text": "If <code>commandBuffer</code> is a protected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage2-commandBuffer-07737",
          "text": "If the queue family used to create the <a href=\"#VkCommandPool\">VkCommandPool</a> which <code>commandBuffer</code> was allocated from does not support <code>VK_QUEUE_GRAPHICS_BIT</code> or <code>VK_QUEUE_COMPUTE_BIT</code>, the <code>bufferOffset</code> member of any element of <code>pCopyBufferToImageInfo-&gt;pRegions</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage2-imageOffset-07738",
          "text": "The <code>imageOffset</code> and <code>imageExtent</code> members of each element of <code>pCopyBufferToImageInfo-&gt;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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage2-commandBuffer-07739",
          "text": "If the queue family used to create the <a href=\"#VkCommandPool\">VkCommandPool</a> which <code>commandBuffer</code> was allocated from does not support <code>VK_QUEUE_GRAPHICS_BIT</code>, for each element of <code>pCopyBufferToImageInfo-&gt;pRegions</code>, the <code>aspectMask</code> member of <code>imageSubresource</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> or <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage2-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage2-pCopyBufferToImageInfo-parameter",
          "text": "<code>pCopyBufferToImageInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyBufferToImageInfo2\">VkCopyBufferToImageInfo2</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage2-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage2-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage2-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyBufferToImage2-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkCopyBufferToImageInfo2": {
      "core": [
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-pRegions-04565",
          "text": "The image region specified by each element of <code>pRegions</code> that does not contain <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a> in its <code>pNext</code> chain <strong class=\"purple\">must</strong> be contained within the specified <code>imageSubresource</code> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-pRegions-04554",
          "text": "If the image region specified by each element of <code>pRegions</code> contains <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a> in its <code>pNext</code> chain, the rotated destination region as described in <a href=\"#copies-buffers-images-rotation-addressing\">[copies-buffers-images-rotation-addressing]</a> <strong class=\"purple\">must</strong> be contained within <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-pRegions-04555",
          "text": "If any element of <code>pRegions</code> contains <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a> in its <code>pNext</code> chain, then <code>dstImage</code> <strong class=\"purple\">must</strong> have a 1x1x1 <a href=\"#formats-compatibility-classes\">texel block extent</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-pRegions-06203",
          "text": "If any element of <code>pRegions</code> contains <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a> in its <code>pNext</code> chain, then <code>dstImage</code> <strong class=\"purple\">must</strong> be of type <code>VK_IMAGE_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-pRegions-06204",
          "text": "If any element of <code>pRegions</code> contains <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a> in its <code>pNext</code> chain, then <code>dstImage</code> <strong class=\"purple\">must</strong> not have a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-pRegions-00171",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-pRegions-00173",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-srcBuffer-00174",
          "text": "<code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_SRC_BIT</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-dstImage-01997",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-srcBuffer-00176",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-dstImage-00177",
          "text": "<code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-dstImageLayout-00180",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-dstImageLayout-01396",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-pRegions-07931",
          "text": "If <a href=\"#VK_EXT_depth_range_unrestricted\">VK_EXT_depth_range_unrestricted</a> is not enabled, for each element of <code>pRegions</code> whose <code>imageSubresource</code> contains a depth aspect, the data in <code>srcBuffer</code> <strong class=\"purple\">must</strong> be in the range <span class=\"eq\">[0,1]</span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-dstImage-07966",
          "text": "If <code>dstImage</code> is non-sparse then the image or the specified <em>disjoint</em> plane <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-imageSubresource-07967",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-imageSubresource-07968",
          "text": "If <code>imageSubresource.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <span class=\"eq\"><code>imageSubresource.baseArrayLayer</code> +  <code>imageSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-dstImage-07969",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-dstImage-07973",
          "text": "<code>dstImage</code> <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-dstImage-07979",
          "text": "If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageExtent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-imageOffset-09104",
          "text": "For each element of <code>pRegions</code>, <code>imageOffset.z</code> and <span class=\"eq\">(<code>imageExtent.depth</code> +  <code>imageOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>imageSubresource</code> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-dstImage-07980",
          "text": "If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-dstImage-07274",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code> or <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code>, <code>imageOffset.x</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-imageOffset-10051",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code> or <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, and <code>imageOffset.x</code> does not equal the width of the subresource specified by <code>imageSubresource</code>, <code>imageOffset.x</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-dstImage-07275",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code> or <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-imageOffset-10052",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code> or <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code>, and <code>imageOffset.y</code> does not equal the height of the subresource specified by <code>imageSubresource</code>, <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-dstImage-07276",
          "text": "For each element of <code>pRegions</code>, <code>imageOffset.z</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-dstImage-00207",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code>, the sum of <code>imageOffset.x</code> and <code>extent.width</code> does not equal the width of the subresource specified by <code>imageSubresource</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-imageOffset-10053",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, the difference of <code>imageOffset.x</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-imageOffset-10054",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code>, the difference of <code>imageOffset.x</code> and <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-imageOffset-10055",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code>, the sum of <code>imageOffset.x</code> and <code>extent.height</code> does not equal the width of the subresource specified by <code>imageSubresource</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-dstImage-00208",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code>, and the sum of <code>imageOffset.y</code> and <code>extent.height</code> does not equal the height of the subresource specified by <code>imageSubresource</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-imageOffset-10056",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, the sum of <code>imageOffset.y</code> and <code>extent.width</code> does not equal the height of the subresource specified by <code>imageSubresource</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-imageOffset-10057",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code>, the difference of <code>imageOffset.y</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-imageOffset-10058",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code>, the difference of <code>imageOffset.y</code> and <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-dstImage-00209",
          "text": "For each element of <code>pRegions</code>, if the sum of <code>imageOffset.z</code> and <code>extent.depth</code> does not equal the depth of the subresource specified by <code>srcSubresource</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-imageSubresource-09105",
          "text": "For each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-dstImage-07981",
          "text": "If <code>dstImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a>, then for each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be a single valid <a href=\"#formats-planes-image-aspect\">multi-planar aspect mask</a> bit",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-dstImage-07983",
          "text": "If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, for each element of <code>pRegions</code>, <code>imageSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-bufferRowLength-09106",
          "text": "For each element of <code>pRegions</code>, <code>bufferRowLength</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-bufferImageHeight-09107",
          "text": "For each element of <code>pRegions</code>, <code>bufferImageHeight</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-bufferRowLength-09108",
          "text": "For each element of <code>pRegions</code>, <code>bufferRowLength</code> divided by the <a href=\"#formats-compatibility-classes\">texel block extent width</a> and then multiplied by the texel block size of <code>dstImage</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\">2<sup>31</sup>-1</span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-dstImage-07975",
          "text": "If <code>dstImage</code> does not have either a depth/stencil format or a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block size</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-dstImage-07976",
          "text": "If <code>dstImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the element size of the compatible format for the format and the <code>aspectMask</code> of the <code>imageSubresource</code> as defined in <a href=\"#formats-compatible-planes\">Compatible Formats of Planes of Multi-Planar Formats</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-dstImage-07978",
          "text": "If <code>dstImage</code> has a depth/stencil format, the <code>bufferOffset</code> member of any element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-pRegions-06223",
          "text": "For each element of <code>pRegions</code> not containing <code>VkCopyCommandTransformInfoQCOM</code> in its <code>pNext</code> chain, <code>imageOffset.x</code> and <span class=\"eq\">(<code>imageExtent.width</code> +  <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>imageSubresource</code> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-pRegions-06224",
          "text": "For each element of <code>pRegions</code> not containing <code>VkCopyCommandTransformInfoQCOM</code> in its <code>pNext</code> chain, <code>imageOffset.y</code> and <span class=\"eq\">(<code>imageExtent.height</code> +  <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>imageSubresource</code> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-srcBuffer-parameter",
          "text": "<code>srcBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-dstImage-parameter",
          "text": "<code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-dstImageLayout-parameter",
          "text": "<code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-pRegions-parameter",
          "text": "<code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href=\"#VkBufferImageCopy2\">VkBufferImageCopy2</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-regionCount-arraylength",
          "text": "<code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyBufferToImageInfo2-commonparent",
          "text": "Both of <code>dstImage</code>, and <code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdCopyImageToBuffer2": {
      "core": [
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer2-commandBuffer-01831",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer2-commandBuffer-01832",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer2-commandBuffer-01833",
          "text": "If <code>commandBuffer</code> is a protected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer2-commandBuffer-07746",
          "text": "If the queue family used to create the <a href=\"#VkCommandPool\">VkCommandPool</a> which <code>commandBuffer</code> was allocated from does not support <code>VK_QUEUE_GRAPHICS_BIT</code> or <code>VK_QUEUE_COMPUTE_BIT</code>, the <code>bufferOffset</code> member of any element of <code>pCopyImageToBufferInfo-&gt;pRegions</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer2-imageOffset-07747",
          "text": "The <code>imageOffset</code> and <code>imageExtent</code> members of each element of <code>pCopyImageToBufferInfo-&gt;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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer2-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer2-pCopyImageToBufferInfo-parameter",
          "text": "<code>pCopyImageToBufferInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyImageToBufferInfo2\">VkCopyImageToBufferInfo2</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer2-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer2-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer2-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyImageToBuffer2-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkCopyImageToBufferInfo2": {
      "core": [
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-pRegions-04566",
          "text": "The image region specified by each element of <code>pRegions</code> that does not contain <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a> in its <code>pNext</code> chain <strong class=\"purple\">must</strong> be contained within the specified <code>imageSubresource</code> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-pRegions-04557",
          "text": "If the image region specified by each element of <code>pRegions</code> contains <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a> in its <code>pNext</code> chain, the rotated source region as described in <a href=\"#copies-buffers-images-rotation-addressing\">[copies-buffers-images-rotation-addressing]</a> <strong class=\"purple\">must</strong> be contained within <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-pRegions-04558",
          "text": "If any element of <code>pRegions</code> contains <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a> in its <code>pNext</code> chain, then <code>srcImage</code> <strong class=\"purple\">must</strong> have a 1x1x1 <a href=\"#formats-compatibility-classes\">texel block extent</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-pRegions-06205",
          "text": "If any element of <code>pRegions</code> contains <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a> in its <code>pNext</code> chain, then <code>srcImage</code> <strong class=\"purple\">must</strong> be of type <code>VK_IMAGE_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-pRegions-06206",
          "text": "If any element of <code>pRegions</code> contains <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a> in its <code>pNext</code> chain, then <code>srcImage</code> <strong class=\"purple\">must</strong> not have a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-pRegions-00183",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-pRegions-00184",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-00186",
          "text": "<code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-01998",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-dstBuffer-00191",
          "text": "<code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-dstBuffer-00192",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-srcImageLayout-00189",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-srcImageLayout-01397",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-07966",
          "text": "If <code>srcImage</code> is non-sparse then the image or the specified <em>disjoint</em> plane <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-imageSubresource-07967",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-imageSubresource-07968",
          "text": "If <code>imageSubresource.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <span class=\"eq\"><code>imageSubresource.baseArrayLayer</code> +  <code>imageSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-07969",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-07973",
          "text": "<code>srcImage</code> <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-07979",
          "text": "If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageExtent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-imageOffset-09104",
          "text": "For each element of <code>pRegions</code>, <code>imageOffset.z</code> and <span class=\"eq\">(<code>imageExtent.depth</code> +  <code>imageOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>imageSubresource</code> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-07980",
          "text": "If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-07274",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code> or <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code>, <code>imageOffset.x</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-imageOffset-10051",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code> or <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, and <code>imageOffset.x</code> does not equal the width of the subresource specified by <code>imageSubresource</code>, <code>imageOffset.x</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-07275",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code> or <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-imageOffset-10052",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code> or <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code>, and <code>imageOffset.y</code> does not equal the height of the subresource specified by <code>imageSubresource</code>, <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-07276",
          "text": "For each element of <code>pRegions</code>, <code>imageOffset.z</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-00207",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code>, the sum of <code>imageOffset.x</code> and <code>extent.width</code> does not equal the width of the subresource specified by <code>imageSubresource</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-imageOffset-10053",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, the difference of <code>imageOffset.x</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-imageOffset-10054",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code>, the difference of <code>imageOffset.x</code> and <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-imageOffset-10055",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code>, the sum of <code>imageOffset.x</code> and <code>extent.height</code> does not equal the width of the subresource specified by <code>imageSubresource</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-00208",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code>, and the sum of <code>imageOffset.y</code> and <code>extent.height</code> does not equal the height of the subresource specified by <code>imageSubresource</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-imageOffset-10056",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, the sum of <code>imageOffset.y</code> and <code>extent.width</code> does not equal the height of the subresource specified by <code>imageSubresource</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-imageOffset-10057",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code>, the difference of <code>imageOffset.y</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-imageOffset-10058",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code>, the difference of <code>imageOffset.y</code> and <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-00209",
          "text": "For each element of <code>pRegions</code>, if the sum of <code>imageOffset.z</code> and <code>extent.depth</code> does not equal the depth of the subresource specified by <code>srcSubresource</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-imageSubresource-09105",
          "text": "For each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-07981",
          "text": "If <code>srcImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a>, then for each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be a single valid <a href=\"#formats-planes-image-aspect\">multi-planar aspect mask</a> bit",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-07983",
          "text": "If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, for each element of <code>pRegions</code>, <code>imageSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-bufferRowLength-09106",
          "text": "For each element of <code>pRegions</code>, <code>bufferRowLength</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-bufferImageHeight-09107",
          "text": "For each element of <code>pRegions</code>, <code>bufferImageHeight</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-bufferRowLength-09108",
          "text": "For each element of <code>pRegions</code>, <code>bufferRowLength</code> divided by the <a href=\"#formats-compatibility-classes\">texel block extent width</a> and then multiplied by the texel block size of <code>srcImage</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\">2<sup>31</sup>-1</span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-07975",
          "text": "If <code>srcImage</code> does not have either a depth/stencil format or a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block size</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-07976",
          "text": "If <code>srcImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the element size of the compatible format for the format and the <code>aspectMask</code> of the <code>imageSubresource</code> as defined in <a href=\"#formats-compatible-planes\">Compatible Formats of Planes of Multi-Planar Formats</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-07978",
          "text": "If <code>srcImage</code> has a depth/stencil format, the <code>bufferOffset</code> member of any element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-imageOffset-00197",
          "text": "For each element of <code>pRegions</code> not containing <code>VkCopyCommandTransformInfoQCOM</code> in its <code>pNext</code> chain, <code>imageOffset.x</code> and <span class=\"eq\">(<code>imageExtent.width</code> +  <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>imageSubresource</code> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-imageOffset-00198",
          "text": "For each element of <code>pRegions</code> not containing <code>VkCopyCommandTransformInfoQCOM</code> in its <code>pNext</code> chain, <code>imageOffset.y</code> and <span class=\"eq\">(<code>imageExtent.height</code> +  <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>imageSubresource</code> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-parameter",
          "text": "<code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-srcImageLayout-parameter",
          "text": "<code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-dstBuffer-parameter",
          "text": "<code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-pRegions-parameter",
          "text": "<code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href=\"#VkBufferImageCopy2\">VkBufferImageCopy2</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-regionCount-arraylength",
          "text": "<code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToBufferInfo2-commonparent",
          "text": "Both of <code>dstBuffer</code>, and <code>srcImage</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkBufferImageCopy2": {
      "core": [
        {
          "vuid": "VUID-VkBufferImageCopy2-bufferRowLength-09101",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferImageCopy2-bufferImageHeight-09102",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferImageCopy2-aspectMask-09103",
          "text": "The <code>aspectMask</code> member of <code>imageSubresource</code> <strong class=\"purple\">must</strong> only have a single bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferImageCopy2-imageExtent-06659",
          "text": "<code>imageExtent.width</code> <strong class=\"purple\">must</strong> not be 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferImageCopy2-imageExtent-06660",
          "text": "<code>imageExtent.height</code> <strong class=\"purple\">must</strong> not be 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferImageCopy2-imageExtent-06661",
          "text": "<code>imageExtent.depth</code> <strong class=\"purple\">must</strong> not be 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferImageCopy2-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferImageCopy2-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferImageCopy2-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBufferImageCopy2-imageSubresource-parameter",
          "text": "<code>imageSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkCopyCommandTransformInfoQCOM": {
      "core": [
        {
          "vuid": "VUID-VkCopyCommandTransformInfoQCOM-transform-04560",
          "text": "<code>transform</code> <strong class=\"purple\">must</strong> be <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code>, <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code>, or <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyCommandTransformInfoQCOM-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCopyMemoryToImageEXT": {
      "core": [
        {
          "vuid": "VUID-vkCopyMemoryToImageEXT-hostImageCopy-09058",
          "text": "The <a href=\"#features-hostImageCopy\"><code>hostImageCopy</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyMemoryToImageEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyMemoryToImageEXT-pCopyMemoryToImageInfo-parameter",
          "text": "<code>pCopyMemoryToImageInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyMemoryToImageInfoEXT\">VkCopyMemoryToImageInfoEXT</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkCopyMemoryToImageInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-dstImage-09109",
          "text": "If <code>dstImage</code> is sparse then all memory ranges accessed by the copy command <strong class=\"purple\">must</strong> be bound as described in <a href=\"#sparsememory-resource-binding\">Binding Resource Memory</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-dstImage-09111",
          "text": "If the stencil aspect of <code>dstImage</code> is accessed, and <code>dstImage</code> was not created with <a href=\"#VkImageStencilUsageCreateInfo\">separate stencil usage</a>, <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT</code> set in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>usage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-dstImage-09112",
          "text": "If the stencil aspect of <code>dstImage</code> is accessed, and <code>dstImage</code> was created with <a href=\"#VkImageStencilUsageCreateInfo\">separate stencil usage</a>, <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT</code> set in <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a>::<code>stencilUsage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-dstImage-09113",
          "text": "If non-stencil aspects of <code>dstImage</code> are accessed, <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT</code> set in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>usage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-imageOffset-09114",
          "text": "If <code>flags</code> contains <code>VK_HOST_IMAGE_COPY_MEMCPY_EXT</code>, the <code>x</code>, <code>y</code>, and <code>z</code> members of the <code>imageOffset</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-dstImage-09115",
          "text": "If <code>flags</code> contains <code>VK_HOST_IMAGE_COPY_MEMCPY_EXT</code>, the <code>imageExtent</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> equal the extents of <code>dstImage</code> identified by <code>imageSubresource</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-dstImage-07966",
          "text": "If <code>dstImage</code> is non-sparse then the image or the specified <em>disjoint</em> plane <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-imageSubresource-07967",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-imageSubresource-07968",
          "text": "If <code>imageSubresource.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <span class=\"eq\"><code>imageSubresource.baseArrayLayer</code> +  <code>imageSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-dstImage-07969",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-imageSubresource-07970",
          "text": "The image region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be contained within the specified <code>imageSubresource</code> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-imageSubresource-07971",
          "text": "For each element of <code>pRegions</code>, <code>imageOffset.x</code> and <span class=\"eq\">(<code>imageExtent.width</code> +  <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>imageSubresource</code> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-imageSubresource-07972",
          "text": "For each element of <code>pRegions</code>, <code>imageOffset.y</code> and <span class=\"eq\">(<code>imageExtent.height</code> +  <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>imageSubresource</code> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-dstImage-07973",
          "text": "<code>dstImage</code> <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-dstImage-07979",
          "text": "If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageExtent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-imageOffset-09104",
          "text": "For each element of <code>pRegions</code>, <code>imageOffset.z</code> and <span class=\"eq\">(<code>imageExtent.depth</code> +  <code>imageOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>imageSubresource</code> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-dstImage-07980",
          "text": "If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-dstImage-07274",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code> or <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code>, <code>imageOffset.x</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-imageOffset-10051",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code> or <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, and <code>imageOffset.x</code> does not equal the width of the subresource specified by <code>imageSubresource</code>, <code>imageOffset.x</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-dstImage-07275",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code> or <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-imageOffset-10052",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code> or <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code>, and <code>imageOffset.y</code> does not equal the height of the subresource specified by <code>imageSubresource</code>, <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-dstImage-07276",
          "text": "For each element of <code>pRegions</code>, <code>imageOffset.z</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-dstImage-00207",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code>, the sum of <code>imageOffset.x</code> and <code>extent.width</code> does not equal the width of the subresource specified by <code>imageSubresource</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-imageOffset-10053",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, the difference of <code>imageOffset.x</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-imageOffset-10054",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code>, the difference of <code>imageOffset.x</code> and <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-imageOffset-10055",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code>, the sum of <code>imageOffset.x</code> and <code>extent.height</code> does not equal the width of the subresource specified by <code>imageSubresource</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-dstImage-00208",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code>, and the sum of <code>imageOffset.y</code> and <code>extent.height</code> does not equal the height of the subresource specified by <code>imageSubresource</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-imageOffset-10056",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, the sum of <code>imageOffset.y</code> and <code>extent.width</code> does not equal the height of the subresource specified by <code>imageSubresource</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-imageOffset-10057",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code>, the difference of <code>imageOffset.y</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-imageOffset-10058",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code>, the difference of <code>imageOffset.y</code> and <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-dstImage-00209",
          "text": "For each element of <code>pRegions</code>, if the sum of <code>imageOffset.z</code> and <code>extent.depth</code> does not equal the depth of the subresource specified by <code>srcSubresource</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-imageSubresource-09105",
          "text": "For each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-dstImage-07981",
          "text": "If <code>dstImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a>, then for each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be a single valid <a href=\"#formats-planes-image-aspect\">multi-planar aspect mask</a> bit",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-dstImage-07983",
          "text": "If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, for each element of <code>pRegions</code>, <code>imageSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-memoryRowLength-09106",
          "text": "For each element of <code>pRegions</code>, <code>memoryRowLength</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-memoryImageHeight-09107",
          "text": "For each element of <code>pRegions</code>, <code>memoryImageHeight</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-memoryRowLength-09108",
          "text": "For each element of <code>pRegions</code>, <code>memoryRowLength</code> divided by the <a href=\"#formats-compatibility-classes\">texel block extent width</a> and then multiplied by the texel block size of <code>dstImage</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\">2<sup>31</sup>-1</span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-dstImageLayout-09059",
          "text": "<code>dstImageLayout</code> <strong class=\"purple\">must</strong> specify the current layout of the image subresources of <code>dstImage</code> specified in <code>pRegions</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-dstImageLayout-09060",
          "text": "<code>dstImageLayout</code> <strong class=\"purple\">must</strong> be one of the image layouts returned in <a href=\"#VkPhysicalDeviceHostImageCopyPropertiesEXT\">VkPhysicalDeviceHostImageCopyPropertiesEXT</a>::<code>pCopyDstLayouts</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-flags-09393",
          "text": "If <code>flags</code> includes <code>VK_HOST_IMAGE_COPY_MEMCPY_EXT</code>, for each region in <code>pRegions</code>, <code>memoryRowLength</code> and <code>memoryImageHeight</code> <strong class=\"purple\">must</strong> both be 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkHostImageCopyFlagBitsEXT\">VkHostImageCopyFlagBitsEXT</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-dstImage-parameter",
          "text": "<code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-dstImageLayout-parameter",
          "text": "<code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-pRegions-parameter",
          "text": "<code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href=\"#VkMemoryToImageCopyEXT\">VkMemoryToImageCopyEXT</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageInfoEXT-regionCount-arraylength",
          "text": "<code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkMemoryToImageCopyEXT": {
      "core": [
        {
          "vuid": "VUID-VkMemoryToImageCopyEXT-pHostPointer-09061",
          "text": "<code>pHostPointer</code> <strong class=\"purple\">must</strong> point to memory that is large enough to contain all memory locations that are accessed according to <a href=\"#copies-buffers-images-addressing\">Buffer and Image Addressing</a>, for each element of <code>pRegions</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryToImageCopyEXT-pRegions-09062",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryToImageCopyEXT-memoryRowLength-09101",
          "text": "<code>memoryRowLength</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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryToImageCopyEXT-memoryImageHeight-09102",
          "text": "<code>memoryImageHeight</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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryToImageCopyEXT-aspectMask-09103",
          "text": "The <code>aspectMask</code> member of <code>imageSubresource</code> <strong class=\"purple\">must</strong> only have a single bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryToImageCopyEXT-imageExtent-06659",
          "text": "<code>imageExtent.width</code> <strong class=\"purple\">must</strong> not be 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryToImageCopyEXT-imageExtent-06660",
          "text": "<code>imageExtent.height</code> <strong class=\"purple\">must</strong> not be 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryToImageCopyEXT-imageExtent-06661",
          "text": "<code>imageExtent.depth</code> <strong class=\"purple\">must</strong> not be 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryToImageCopyEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryToImageCopyEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryToImageCopyEXT-pHostPointer-parameter",
          "text": "<code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMemoryToImageCopyEXT-imageSubresource-parameter",
          "text": "<code>imageSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "vkCopyImageToMemoryEXT": {
      "core": [
        {
          "vuid": "VUID-vkCopyImageToMemoryEXT-hostImageCopy-09063",
          "text": "The <a href=\"#features-hostImageCopy\"><code>hostImageCopy</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyImageToMemoryEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyImageToMemoryEXT-pCopyImageToMemoryInfo-parameter",
          "text": "<code>pCopyImageToMemoryInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyImageToMemoryInfoEXT\">VkCopyImageToMemoryInfoEXT</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkCopyImageToMemoryInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-srcImage-09109",
          "text": "If <code>srcImage</code> is sparse then all memory ranges accessed by the copy command <strong class=\"purple\">must</strong> be bound as described in <a href=\"#sparsememory-resource-binding\">Binding Resource Memory</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-srcImage-09111",
          "text": "If the stencil aspect of <code>srcImage</code> is accessed, and <code>srcImage</code> was not created with <a href=\"#VkImageStencilUsageCreateInfo\">separate stencil usage</a>, <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT</code> set in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>usage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-srcImage-09112",
          "text": "If the stencil aspect of <code>srcImage</code> is accessed, and <code>srcImage</code> was created with <a href=\"#VkImageStencilUsageCreateInfo\">separate stencil usage</a>, <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT</code> set in <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a>::<code>stencilUsage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-srcImage-09113",
          "text": "If non-stencil aspects of <code>srcImage</code> are accessed, <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT</code> set in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>usage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-imageOffset-09114",
          "text": "If <code>flags</code> contains <code>VK_HOST_IMAGE_COPY_MEMCPY_EXT</code>, the <code>x</code>, <code>y</code>, and <code>z</code> members of the <code>imageOffset</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-srcImage-09115",
          "text": "If <code>flags</code> contains <code>VK_HOST_IMAGE_COPY_MEMCPY_EXT</code>, the <code>imageExtent</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> equal the extents of <code>srcImage</code> identified by <code>imageSubresource</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-srcImage-07966",
          "text": "If <code>srcImage</code> is non-sparse then the image or the specified <em>disjoint</em> plane <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-imageSubresource-07967",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-imageSubresource-07968",
          "text": "If <code>imageSubresource.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <span class=\"eq\"><code>imageSubresource.baseArrayLayer</code> +  <code>imageSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-srcImage-07969",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-imageSubresource-07970",
          "text": "The image region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be contained within the specified <code>imageSubresource</code> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-imageSubresource-07971",
          "text": "For each element of <code>pRegions</code>, <code>imageOffset.x</code> and <span class=\"eq\">(<code>imageExtent.width</code> +  <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>imageSubresource</code> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-imageSubresource-07972",
          "text": "For each element of <code>pRegions</code>, <code>imageOffset.y</code> and <span class=\"eq\">(<code>imageExtent.height</code> +  <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>imageSubresource</code> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-srcImage-07973",
          "text": "<code>srcImage</code> <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-srcImage-07979",
          "text": "If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageExtent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-imageOffset-09104",
          "text": "For each element of <code>pRegions</code>, <code>imageOffset.z</code> and <span class=\"eq\">(<code>imageExtent.depth</code> +  <code>imageOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>imageSubresource</code> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-srcImage-07980",
          "text": "If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-srcImage-07274",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code> or <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code>, <code>imageOffset.x</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-imageOffset-10051",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code> or <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, and <code>imageOffset.x</code> does not equal the width of the subresource specified by <code>imageSubresource</code>, <code>imageOffset.x</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-srcImage-07275",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code> or <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-imageOffset-10052",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code> or <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code>, and <code>imageOffset.y</code> does not equal the height of the subresource specified by <code>imageSubresource</code>, <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-srcImage-07276",
          "text": "For each element of <code>pRegions</code>, <code>imageOffset.z</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-srcImage-00207",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code>, the sum of <code>imageOffset.x</code> and <code>extent.width</code> does not equal the width of the subresource specified by <code>imageSubresource</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-imageOffset-10053",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, the difference of <code>imageOffset.x</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-imageOffset-10054",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code>, the difference of <code>imageOffset.x</code> and <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-imageOffset-10055",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code>, the sum of <code>imageOffset.x</code> and <code>extent.height</code> does not equal the width of the subresource specified by <code>imageSubresource</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-srcImage-00208",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code>, and the sum of <code>imageOffset.y</code> and <code>extent.height</code> does not equal the height of the subresource specified by <code>imageSubresource</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-imageOffset-10056",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, the sum of <code>imageOffset.y</code> and <code>extent.width</code> does not equal the height of the subresource specified by <code>imageSubresource</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-imageOffset-10057",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code>, the difference of <code>imageOffset.y</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-imageOffset-10058",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code>, the difference of <code>imageOffset.y</code> and <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-srcImage-00209",
          "text": "For each element of <code>pRegions</code>, if the sum of <code>imageOffset.z</code> and <code>extent.depth</code> does not equal the depth of the subresource specified by <code>srcSubresource</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-imageSubresource-09105",
          "text": "For each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-srcImage-07981",
          "text": "If <code>srcImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a>, then for each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be a single valid <a href=\"#formats-planes-image-aspect\">multi-planar aspect mask</a> bit",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-srcImage-07983",
          "text": "If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, for each element of <code>pRegions</code>, <code>imageSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-memoryRowLength-09106",
          "text": "For each element of <code>pRegions</code>, <code>memoryRowLength</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-memoryImageHeight-09107",
          "text": "For each element of <code>pRegions</code>, <code>memoryImageHeight</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-memoryRowLength-09108",
          "text": "For each element of <code>pRegions</code>, <code>memoryRowLength</code> divided by the <a href=\"#formats-compatibility-classes\">texel block extent width</a> and then multiplied by the texel block size of <code>srcImage</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\">2<sup>31</sup>-1</span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-srcImageLayout-09064",
          "text": "<code>srcImageLayout</code> <strong class=\"purple\">must</strong> specify the current layout of the image subresources of <code>srcImage</code> specified in <code>pRegions</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-srcImageLayout-09065",
          "text": "<code>srcImageLayout</code> <strong class=\"purple\">must</strong> be one of the image layouts returned in <a href=\"#VkPhysicalDeviceHostImageCopyPropertiesEXT\">VkPhysicalDeviceHostImageCopyPropertiesEXT</a>::<code>pCopySrcLayouts</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-flags-09394",
          "text": "If <code>flags</code> includes <code>VK_HOST_IMAGE_COPY_MEMCPY_EXT</code>, for each region in <code>pRegions</code>, <code>memoryRowLength</code> and <code>memoryImageHeight</code> <strong class=\"purple\">must</strong> both be 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkHostImageCopyFlagBitsEXT\">VkHostImageCopyFlagBitsEXT</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-srcImage-parameter",
          "text": "<code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-srcImageLayout-parameter",
          "text": "<code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-pRegions-parameter",
          "text": "<code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href=\"#VkImageToMemoryCopyEXT\">VkImageToMemoryCopyEXT</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToMemoryInfoEXT-regionCount-arraylength",
          "text": "<code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkImageToMemoryCopyEXT": {
      "core": [
        {
          "vuid": "VUID-VkImageToMemoryCopyEXT-pHostPointer-09066",
          "text": "<code>pHostPointer</code> <strong class=\"purple\">must</strong> point to memory that is large enough to contain all memory locations that are accessed according to <a href=\"#copies-buffers-images-addressing\">Buffer and Image Addressing</a>, for each element of <code>pRegions</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageToMemoryCopyEXT-pRegions-09067",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageToMemoryCopyEXT-memoryRowLength-09101",
          "text": "<code>memoryRowLength</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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageToMemoryCopyEXT-memoryImageHeight-09102",
          "text": "<code>memoryImageHeight</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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageToMemoryCopyEXT-aspectMask-09103",
          "text": "The <code>aspectMask</code> member of <code>imageSubresource</code> <strong class=\"purple\">must</strong> only have a single bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageToMemoryCopyEXT-imageExtent-06659",
          "text": "<code>imageExtent.width</code> <strong class=\"purple\">must</strong> not be 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageToMemoryCopyEXT-imageExtent-06660",
          "text": "<code>imageExtent.height</code> <strong class=\"purple\">must</strong> not be 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageToMemoryCopyEXT-imageExtent-06661",
          "text": "<code>imageExtent.depth</code> <strong class=\"purple\">must</strong> not be 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageToMemoryCopyEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageToMemoryCopyEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageToMemoryCopyEXT-pHostPointer-parameter",
          "text": "<code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageToMemoryCopyEXT-imageSubresource-parameter",
          "text": "<code>imageSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "vkCopyImageToImageEXT": {
      "core": [
        {
          "vuid": "VUID-vkCopyImageToImageEXT-hostImageCopy-09068",
          "text": "The <a href=\"#features-hostImageCopy\"><code>hostImageCopy</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyImageToImageEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyImageToImageEXT-pCopyImageToImageInfo-parameter",
          "text": "<code>pCopyImageToImageInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyImageToImageInfoEXT\">VkCopyImageToImageInfoEXT</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkCopyImageToImageInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-srcImage-09069",
          "text": "<code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with identical image creation parameters",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-srcImage-09109",
          "text": "If <code>srcImage</code> is sparse then all memory ranges accessed by the copy command <strong class=\"purple\">must</strong> be bound as described in <a href=\"#sparsememory-resource-binding\">Binding Resource Memory</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-srcImage-09111",
          "text": "If the stencil aspect of <code>srcImage</code> is accessed, and <code>srcImage</code> was not created with <a href=\"#VkImageStencilUsageCreateInfo\">separate stencil usage</a>, <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT</code> set in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>usage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-srcImage-09112",
          "text": "If the stencil aspect of <code>srcImage</code> is accessed, and <code>srcImage</code> was created with <a href=\"#VkImageStencilUsageCreateInfo\">separate stencil usage</a>, <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT</code> set in <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a>::<code>stencilUsage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-srcImage-09113",
          "text": "If non-stencil aspects of <code>srcImage</code> are accessed, <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT</code> set in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>usage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-srcOffset-09114",
          "text": "If <code>flags</code> contains <code>VK_HOST_IMAGE_COPY_MEMCPY_EXT</code>, the <code>x</code>, <code>y</code>, and <code>z</code> members of the <code>srcOffset</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-srcImage-09115",
          "text": "If <code>flags</code> contains <code>VK_HOST_IMAGE_COPY_MEMCPY_EXT</code>, the <code>extent</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> equal the extents of <code>srcImage</code> identified by <code>srcSubresource</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-srcImage-07966",
          "text": "If <code>srcImage</code> is non-sparse then the image or the specified <em>disjoint</em> plane <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-srcSubresource-07967",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-srcSubresource-07968",
          "text": "If <code>srcSubresource.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <span class=\"eq\"><code>srcSubresource.baseArrayLayer</code> +  <code>srcSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-srcImage-07969",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-srcSubresource-07970",
          "text": "The image region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be contained within the specified <code>srcSubresource</code> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-srcSubresource-07971",
          "text": "For each element of <code>pRegions</code>, <code>srcOffset.x</code> and <span class=\"eq\">(<code>extent.width</code> +  <code>srcOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>srcSubresource</code> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-srcSubresource-07972",
          "text": "For each element of <code>pRegions</code>, <code>srcOffset.y</code> and <span class=\"eq\">(<code>extent.height</code> +  <code>srcOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>srcSubresource</code> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-srcImage-07979",
          "text": "If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>srcOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-srcOffset-09104",
          "text": "For each element of <code>pRegions</code>, <code>srcOffset.z</code> and <span class=\"eq\">(<code>extent.depth</code> +  <code>srcOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>srcSubresource</code> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-srcImage-07980",
          "text": "If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>srcOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-srcImage-07274",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code> or <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code>, <code>srcOffset.x</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-srcOffset-10051",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code> or <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, and <code>srcOffset.x</code> does not equal the width of the subresource specified by <code>srcSubresource</code>, <code>srcOffset.x</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-srcImage-07275",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code> or <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, <code>srcOffset.y</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-srcOffset-10052",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code> or <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code>, and <code>srcOffset.y</code> does not equal the height of the subresource specified by <code>srcSubresource</code>, <code>srcOffset.y</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-srcImage-07276",
          "text": "For each element of <code>pRegions</code>, <code>srcOffset.z</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-srcImage-00207",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code>, the sum of <code>srcOffset.x</code> and <code>extent.width</code> does not equal the width of the subresource specified by <code>srcSubresource</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-srcOffset-10053",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, the difference of <code>srcOffset.x</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-srcOffset-10054",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code>, the difference of <code>srcOffset.x</code> and <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-srcOffset-10055",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code>, the sum of <code>srcOffset.x</code> and <code>extent.height</code> does not equal the width of the subresource specified by <code>srcSubresource</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-srcImage-00208",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code>, and the sum of <code>srcOffset.y</code> and <code>extent.height</code> does not equal the height of the subresource specified by <code>srcSubresource</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-srcOffset-10056",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, the sum of <code>srcOffset.y</code> and <code>extent.width</code> does not equal the height of the subresource specified by <code>srcSubresource</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-srcOffset-10057",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code>, the difference of <code>srcOffset.y</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-srcOffset-10058",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code>, the difference of <code>srcOffset.y</code> and <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-srcImage-00209",
          "text": "For each element of <code>pRegions</code>, if the sum of <code>srcOffset.z</code> and <code>extent.depth</code> does not equal the depth of the subresource specified by <code>srcSubresource</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-srcSubresource-09105",
          "text": "For each element of <code>pRegions</code>, <code>srcSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-srcImage-07981",
          "text": "If <code>srcImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a>, then for each element of <code>pRegions</code>, <code>srcSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be a single valid <a href=\"#formats-planes-image-aspect\">multi-planar aspect mask</a> bit",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-srcImage-07983",
          "text": "If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, for each element of <code>pRegions</code>, <code>srcSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>srcSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-dstImage-09109",
          "text": "If <code>dstImage</code> is sparse then all memory ranges accessed by the copy command <strong class=\"purple\">must</strong> be bound as described in <a href=\"#sparsememory-resource-binding\">Binding Resource Memory</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-dstImage-09111",
          "text": "If the stencil aspect of <code>dstImage</code> is accessed, and <code>dstImage</code> was not created with <a href=\"#VkImageStencilUsageCreateInfo\">separate stencil usage</a>, <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT</code> set in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>usage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-dstImage-09112",
          "text": "If the stencil aspect of <code>dstImage</code> is accessed, and <code>dstImage</code> was created with <a href=\"#VkImageStencilUsageCreateInfo\">separate stencil usage</a>, <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT</code> set in <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a>::<code>stencilUsage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-dstImage-09113",
          "text": "If non-stencil aspects of <code>dstImage</code> are accessed, <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT</code> set in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>usage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-dstOffset-09114",
          "text": "If <code>flags</code> contains <code>VK_HOST_IMAGE_COPY_MEMCPY_EXT</code>, the <code>x</code>, <code>y</code>, and <code>z</code> members of the <code>dstOffset</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-dstImage-09115",
          "text": "If <code>flags</code> contains <code>VK_HOST_IMAGE_COPY_MEMCPY_EXT</code>, the <code>extent</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> equal the extents of <code>dstImage</code> identified by <code>dstSubresource</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-dstImage-07966",
          "text": "If <code>dstImage</code> is non-sparse then the image or the specified <em>disjoint</em> plane <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-dstSubresource-07967",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-dstSubresource-07968",
          "text": "If <code>dstSubresource.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <span class=\"eq\"><code>dstSubresource.baseArrayLayer</code> +  <code>dstSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-dstImage-07969",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-dstSubresource-07970",
          "text": "The image region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be contained within the specified <code>dstSubresource</code> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-dstSubresource-07971",
          "text": "For each element of <code>pRegions</code>, <code>dstOffset.x</code> and <span class=\"eq\">(<code>extent.width</code> +  <code>dstOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>dstSubresource</code> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-dstSubresource-07972",
          "text": "For each element of <code>pRegions</code>, <code>dstOffset.y</code> and <span class=\"eq\">(<code>extent.height</code> +  <code>dstOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>dstSubresource</code> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-dstImage-07979",
          "text": "If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>dstOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-dstOffset-09104",
          "text": "For each element of <code>pRegions</code>, <code>dstOffset.z</code> and <span class=\"eq\">(<code>extent.depth</code> +  <code>dstOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>dstSubresource</code> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-dstImage-07980",
          "text": "If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>dstOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-dstImage-07274",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code> or <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code>, <code>dstOffset.x</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-dstOffset-10051",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code> or <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, and <code>dstOffset.x</code> does not equal the width of the subresource specified by <code>dstSubresource</code>, <code>dstOffset.x</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-dstImage-07275",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code> or <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, <code>dstOffset.y</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-dstOffset-10052",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code> or <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code>, and <code>dstOffset.y</code> does not equal the height of the subresource specified by <code>dstSubresource</code>, <code>dstOffset.y</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-dstImage-07276",
          "text": "For each element of <code>pRegions</code>, <code>dstOffset.z</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-dstImage-00207",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code>, the sum of <code>dstOffset.x</code> and <code>extent.width</code> does not equal the width of the subresource specified by <code>dstSubresource</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-dstOffset-10053",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, the difference of <code>dstOffset.x</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-dstOffset-10054",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code>, the difference of <code>dstOffset.x</code> and <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-dstOffset-10055",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code>, the sum of <code>dstOffset.x</code> and <code>extent.height</code> does not equal the width of the subresource specified by <code>dstSubresource</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-dstImage-00208",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code>, and the sum of <code>dstOffset.y</code> and <code>extent.height</code> does not equal the height of the subresource specified by <code>dstSubresource</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-dstOffset-10056",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, the sum of <code>dstOffset.y</code> and <code>extent.width</code> does not equal the height of the subresource specified by <code>dstSubresource</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-dstOffset-10057",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code>, the difference of <code>dstOffset.y</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-dstOffset-10058",
          "text": "For each element of <code>pRegions</code>, if <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>::<code>transform</code> is equal to <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code>, the difference of <code>dstOffset.y</code> and <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-dstImage-00209",
          "text": "For each element of <code>pRegions</code>, if the sum of <code>dstOffset.z</code> and <code>extent.depth</code> does not equal the depth of the subresource specified by <code>srcSubresource</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-dstSubresource-09105",
          "text": "For each element of <code>pRegions</code>, <code>dstSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-dstImage-07981",
          "text": "If <code>dstImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a>, then for each element of <code>pRegions</code>, <code>dstSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be a single valid <a href=\"#formats-planes-image-aspect\">multi-planar aspect mask</a> bit",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-dstImage-07983",
          "text": "If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, for each element of <code>pRegions</code>, <code>dstSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>dstSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-srcImageLayout-09070",
          "text": "<code>srcImageLayout</code> <strong class=\"purple\">must</strong> specify the current layout of the image subresources of <code>srcImage</code> specified in <code>pRegions</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-dstImageLayout-09071",
          "text": "<code>dstImageLayout</code> <strong class=\"purple\">must</strong> specify the current layout of the image subresources of <code>dstImage</code> specified in <code>pRegions</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-srcImageLayout-09072",
          "text": "<code>srcImageLayout</code> <strong class=\"purple\">must</strong> be one of the image layouts returned in <a href=\"#VkPhysicalDeviceHostImageCopyPropertiesEXT\">VkPhysicalDeviceHostImageCopyPropertiesEXT</a>::<code>pCopySrcLayouts</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-dstImageLayout-09073",
          "text": "<code>dstImageLayout</code> <strong class=\"purple\">must</strong> be one of the image layouts returned in <a href=\"#VkPhysicalDeviceHostImageCopyPropertiesEXT\">VkPhysicalDeviceHostImageCopyPropertiesEXT</a>::<code>pCopyDstLayouts</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkHostImageCopyFlagBitsEXT\">VkHostImageCopyFlagBitsEXT</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-srcImage-parameter",
          "text": "<code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-srcImageLayout-parameter",
          "text": "<code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-dstImage-parameter",
          "text": "<code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-dstImageLayout-parameter",
          "text": "<code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-pRegions-parameter",
          "text": "<code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href=\"#VkImageCopy2\">VkImageCopy2</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-regionCount-arraylength",
          "text": "<code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyImageToImageInfoEXT-commonparent",
          "text": "Both of <code>dstImage</code>, and <code>srcImage</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdCopyMemoryIndirectNV": {
      "core": [
        {
          "vuid": "VUID-vkCmdCopyMemoryIndirectNV-None-07653",
          "text": "The <a href=\"#features-indirectCopy\"><code>indirectCopy</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryIndirectNV-copyBufferAddress-07654",
          "text": "<code>copyBufferAddress</code> <strong class=\"purple\">must</strong> be 4 byte aligned",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryIndirectNV-stride-07655",
          "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>VkCopyMemoryIndirectCommandNV</code>)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryIndirectNV-commandBuffer-07656",
          "text": "The <a href=\"#VkCommandPool\">VkCommandPool</a> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support at least one of the <a href=\"#VkPhysicalDeviceCopyMemoryIndirectPropertiesNV\">VkPhysicalDeviceCopyMemoryIndirectPropertiesNV</a>::<code>supportedQueues</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryIndirectNV-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryIndirectNV-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryIndirectNV-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryIndirectNV-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryIndirectNV-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkCopyMemoryIndirectCommandNV": {
      "core": [
        {
          "vuid": "VUID-VkCopyMemoryIndirectCommandNV-srcAddress-07657",
          "text": "The <code>srcAddress</code> <strong class=\"purple\">must</strong> be 4 byte aligned",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryIndirectCommandNV-dstAddress-07658",
          "text": "The <code>dstAddress</code> <strong class=\"purple\">must</strong> be 4 byte aligned",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryIndirectCommandNV-size-07659",
          "text": "The <code>size</code> <strong class=\"purple\">must</strong> be 4 byte aligned",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdCopyMemoryToImageIndirectNV": {
      "core": [
        {
          "vuid": "VUID-vkCmdCopyMemoryToImageIndirectNV-None-07660",
          "text": "The <a href=\"#features-indirectCopy\"><code>indirectCopy</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToImageIndirectNV-dstImage-07661",
          "text": "<code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToImageIndirectNV-aspectMask-07662",
          "text": "The <code>aspectMask</code> member for every subresource in <code>pImageSubresources</code> <strong class=\"purple\">must</strong> only have a single bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToImageIndirectNV-dstImage-07663",
          "text": "The image region specified by each element in <code>copyBufferAddress</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToImageIndirectNV-dstImage-07664",
          "text": "<code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToImageIndirectNV-dstImage-07665",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToImageIndirectNV-dstImage-07973",
          "text": "<code>dstImage</code> <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToImageIndirectNV-dstImageLayout-07667",
          "text": "<code>dstImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>dstImage</code> at the time this command is executed on a <code>VkDevice</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToImageIndirectNV-dstImageLayout-07669",
          "text": "<code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>, or <code>VK_IMAGE_LAYOUT_GENERAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToImageIndirectNV-mipLevel-07670",
          "text": "The specified <code>mipLevel</code> of each region <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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToImageIndirectNV-layerCount-08764",
          "text": "If <code>layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, the specified <code>baseArrayLayer</code> +  <code>layerCount</code> of each region <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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToImageIndirectNV-imageOffset-07672",
          "text": "The <code>imageOffset</code> and <code>imageExtent</code> members of each region <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToImageIndirectNV-dstImage-07673",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToImageIndirectNV-commandBuffer-07674",
          "text": "If the queue family used to create the <a href=\"#VkCommandPool\">VkCommandPool</a> which <code>commandBuffer</code> was allocated from does not support <code>VK_QUEUE_GRAPHICS_BIT</code>, for each region, the <code>aspectMask</code> member of <code>pImageSubresources</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> or <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToImageIndirectNV-imageOffset-07675",
          "text": "For each region in <code>copyBufferAddress</code>, <code>imageOffset.y</code> and <span class=\"eq\">(<code>imageExtent.height</code> +  <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified subresource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToImageIndirectNV-offset-07676",
          "text": "<code>offset</code> <strong class=\"purple\">must</strong> be 4 byte aligned",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToImageIndirectNV-stride-07677",
          "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>VkCopyMemoryToImageIndirectCommandNV</code>)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToImageIndirectNV-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToImageIndirectNV-dstImage-parameter",
          "text": "<code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToImageIndirectNV-dstImageLayout-parameter",
          "text": "<code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToImageIndirectNV-pImageSubresources-parameter",
          "text": "<code>pImageSubresources</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>copyCount</code> valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToImageIndirectNV-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToImageIndirectNV-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToImageIndirectNV-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToImageIndirectNV-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToImageIndirectNV-copyCount-arraylength",
          "text": "<code>copyCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToImageIndirectNV-commonparent",
          "text": "Both of <code>commandBuffer</code>, and <code>dstImage</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkCopyMemoryToImageIndirectCommandNV": {
      "core": [
        {
          "vuid": "VUID-VkCopyMemoryToImageIndirectCommandNV-srcAddress-07678",
          "text": "The <code>srcAddress</code> <strong class=\"purple\">must</strong> be 4 byte aligned",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageIndirectCommandNV-bufferRowLength-07679",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageIndirectCommandNV-bufferImageHeight-07680",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageIndirectCommandNV-imageOffset-07681",
          "text": "<code>imageOffset</code> <strong class=\"purple\">must</strong> specify a valid offset in the destination image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageIndirectCommandNV-imageExtent-07682",
          "text": "<code>imageExtent</code> <strong class=\"purple\">must</strong> specify a valid region in the destination image and can be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToImageIndirectCommandNV-imageSubresource-parameter",
          "text": "<code>imageSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdBlitImage": {
      "core": [
        {
          "vuid": "VUID-vkCmdBlitImage-commandBuffer-01834",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-commandBuffer-01835",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-commandBuffer-01836",
          "text": "If <code>commandBuffer</code> is a protected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-pRegions-00215",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-pRegions-00216",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-pRegions-00217",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-srcImage-01999",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-srcImage-06421",
          "text": "<code>srcImage</code> <strong class=\"purple\">must</strong> not use a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">format that requires a sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-srcImage-00219",
          "text": "<code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-srcImage-00220",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-srcImageLayout-00221",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-srcImageLayout-01398",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-srcImage-09459",
          "text": "If <code>srcImage</code> and <code>dstImage</code> are the same, and an elements of <code>pRegions</code> contains the <code>srcSubresource</code> and <code>dstSubresource</code> with matching <code>mipLevel</code> and overlapping array layers, then the <code>srcImageLayout</code> and <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_GENERAL</code> or <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-dstImage-02000",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-dstImage-06422",
          "text": "<code>dstImage</code> <strong class=\"purple\">must</strong> not use a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">format that requires a sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-dstImage-00224",
          "text": "<code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-dstImage-00225",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-dstImageLayout-00226",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-dstImageLayout-01399",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-srcImage-00229",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-srcImage-00230",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-srcImage-00231",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-srcImage-00232",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-srcImage-00233",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-dstImage-00234",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-filter-02001",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-filter-02002",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-filter-00237",
          "text": "If <code>filter</code> is <code>VK_FILTER_CUBIC_EXT</code>, <code>srcImage</code> <strong class=\"purple\">must</strong> be of type <code>VK_IMAGE_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-srcSubresource-01705",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-dstSubresource-01706",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-srcSubresource-01707",
          "text": "If <code>srcSubresource.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <span class=\"eq\"><code>srcSubresource.baseArrayLayer</code> +  <code>srcSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-dstSubresource-01708",
          "text": "If <code>srcSubresource.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <span class=\"eq\"><code>dstSubresource.baseArrayLayer</code> +  <code>dstSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-dstImage-02545",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-srcImage-00240",
          "text": "If either <code>srcImage</code> or <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>srcSubresource.baseArrayLayer</code> and <code>dstSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> each be <code>0</code>, and <code>srcSubresource.layerCount</code> and <code>dstSubresource.layerCount</code> <strong class=\"purple\">must</strong> each be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-aspectMask-00241",
          "text": "For each element of <code>pRegions</code>, <code>srcSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-aspectMask-00242",
          "text": "For each element of <code>pRegions</code>, <code>dstSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-srcOffset-00243",
          "text": "For each element of <code>pRegions</code>, <code>srcOffsets</code>[0].x and <code>srcOffsets</code>[1].x <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>srcSubresource</code> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-srcOffset-00244",
          "text": "For each element of <code>pRegions</code>, <code>srcOffsets</code>[0].y and <code>srcOffsets</code>[1].y <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>srcSubresource</code> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-srcImage-00245",
          "text": "If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>srcOffsets</code>[0].y <strong class=\"purple\">must</strong> be <code>0</code> and <code>srcOffsets</code>[1].y <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-srcOffset-00246",
          "text": "For each element of <code>pRegions</code>, <code>srcOffsets</code>[0].z and <code>srcOffsets</code>[1].z <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>srcSubresource</code> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-srcImage-00247",
          "text": "If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>srcOffsets</code>[0].z <strong class=\"purple\">must</strong> be <code>0</code> and <code>srcOffsets</code>[1].z <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-dstOffset-00248",
          "text": "For each element of <code>pRegions</code>, <code>dstOffsets</code>[0].x and <code>dstOffsets</code>[1].x <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>dstSubresource</code> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-dstOffset-00249",
          "text": "For each element of <code>pRegions</code>, <code>dstOffsets</code>[0].y and <code>dstOffsets</code>[1].y <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>dstSubresource</code> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-dstImage-00250",
          "text": "If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>dstOffsets</code>[0].y <strong class=\"purple\">must</strong> be <code>0</code> and <code>dstOffsets</code>[1].y <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-dstOffset-00251",
          "text": "For each element of <code>pRegions</code>, <code>dstOffsets</code>[0].z and <code>dstOffsets</code>[1].z <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>dstSubresource</code> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-dstImage-00252",
          "text": "If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>dstOffsets</code>[0].z <strong class=\"purple\">must</strong> be <code>0</code> and <code>dstOffsets</code>[1].z <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-srcImage-parameter",
          "text": "<code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-srcImageLayout-parameter",
          "text": "<code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-dstImage-parameter",
          "text": "<code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-dstImageLayout-parameter",
          "text": "<code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-pRegions-parameter",
          "text": "<code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href=\"#VkImageBlit\">VkImageBlit</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-filter-parameter",
          "text": "<code>filter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFilter\">VkFilter</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-regionCount-arraylength",
          "text": "<code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage-commonparent",
          "text": "Each of <code>commandBuffer</code>, <code>dstImage</code>, and <code>srcImage</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkImageBlit": {
      "core": [
        {
          "vuid": "VUID-VkImageBlit-aspectMask-00238",
          "text": "The <code>aspectMask</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageBlit-layerCount-08800",
          "text": "If neither of the <code>layerCount</code> members of <code>srcSubresource</code> or <code>dstSubresource</code> are <code>VK_REMAINING_ARRAY_LAYERS</code>, the <code>layerCount</code> members of <code>srcSubresource</code> or <code>dstSubresource</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageBlit-layerCount-08801",
          "text": "If one of the <code>layerCount</code> members of <code>srcSubresource</code> or <code>dstSubresource</code> is <code>VK_REMAINING_ARRAY_LAYERS</code>, the other member <strong class=\"purple\">must</strong> be either <code>VK_REMAINING_ARRAY_LAYERS</code> or equal to the <code>arrayLayers</code> member of the <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> used to create the image minus <code>baseArrayLayer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageBlit-srcSubresource-parameter",
          "text": "<code>srcSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageBlit-dstSubresource-parameter",
          "text": "<code>dstSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdBlitImage2": {
      "core": [
        {
          "vuid": "VUID-vkCmdBlitImage2-commandBuffer-01834",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage2-commandBuffer-01835",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage2-commandBuffer-01836",
          "text": "If <code>commandBuffer</code> is a protected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage2-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage2-pBlitImageInfo-parameter",
          "text": "<code>pBlitImageInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkBlitImageInfo2\">VkBlitImageInfo2</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage2-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage2-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage2-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBlitImage2-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkBlitImageInfo2": {
      "core": [
        {
          "vuid": "VUID-VkBlitImageInfo2-pRegions-00215",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-pRegions-00216",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-pRegions-00217",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-srcImage-01999",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-srcImage-06421",
          "text": "<code>srcImage</code> <strong class=\"purple\">must</strong> not use a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">format that requires a sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-srcImage-00219",
          "text": "<code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-srcImage-00220",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-srcImageLayout-00221",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-srcImageLayout-01398",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-srcImage-09459",
          "text": "If <code>srcImage</code> and <code>dstImage</code> are the same, and an elements of <code>pRegions</code> contains the <code>srcSubresource</code> and <code>dstSubresource</code> with matching <code>mipLevel</code> and overlapping array layers, then the <code>srcImageLayout</code> and <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_GENERAL</code> or <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-dstImage-02000",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-dstImage-06422",
          "text": "<code>dstImage</code> <strong class=\"purple\">must</strong> not use a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">format that requires a sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-dstImage-00224",
          "text": "<code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-dstImage-00225",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-dstImageLayout-00226",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-dstImageLayout-01399",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-srcImage-00229",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-srcImage-00230",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-srcImage-00231",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-srcImage-00232",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-srcImage-00233",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-dstImage-00234",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-filter-02001",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-filter-02002",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-filter-00237",
          "text": "If <code>filter</code> is <code>VK_FILTER_CUBIC_EXT</code>, <code>srcImage</code> <strong class=\"purple\">must</strong> be of type <code>VK_IMAGE_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-srcSubresource-01705",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-dstSubresource-01706",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-srcSubresource-01707",
          "text": "If <code>srcSubresource.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <span class=\"eq\"><code>srcSubresource.baseArrayLayer</code> +  <code>srcSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-dstSubresource-01708",
          "text": "If <code>srcSubresource.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <span class=\"eq\"><code>dstSubresource.baseArrayLayer</code> +  <code>dstSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-dstImage-02545",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-srcImage-00240",
          "text": "If either <code>srcImage</code> or <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>srcSubresource.baseArrayLayer</code> and <code>dstSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> each be <code>0</code>, and <code>srcSubresource.layerCount</code> and <code>dstSubresource.layerCount</code> <strong class=\"purple\">must</strong> each be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-aspectMask-00241",
          "text": "For each element of <code>pRegions</code>, <code>srcSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-aspectMask-00242",
          "text": "For each element of <code>pRegions</code>, <code>dstSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-srcOffset-00243",
          "text": "For each element of <code>pRegions</code>, <code>srcOffsets</code>[0].x and <code>srcOffsets</code>[1].x <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>srcSubresource</code> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-srcOffset-00244",
          "text": "For each element of <code>pRegions</code>, <code>srcOffsets</code>[0].y and <code>srcOffsets</code>[1].y <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>srcSubresource</code> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-srcImage-00245",
          "text": "If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>srcOffsets</code>[0].y <strong class=\"purple\">must</strong> be <code>0</code> and <code>srcOffsets</code>[1].y <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-srcOffset-00246",
          "text": "For each element of <code>pRegions</code>, <code>srcOffsets</code>[0].z and <code>srcOffsets</code>[1].z <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>srcSubresource</code> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-srcImage-00247",
          "text": "If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>srcOffsets</code>[0].z <strong class=\"purple\">must</strong> be <code>0</code> and <code>srcOffsets</code>[1].z <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-dstOffset-00248",
          "text": "For each element of <code>pRegions</code>, <code>dstOffsets</code>[0].x and <code>dstOffsets</code>[1].x <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>dstSubresource</code> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-dstOffset-00249",
          "text": "For each element of <code>pRegions</code>, <code>dstOffsets</code>[0].y and <code>dstOffsets</code>[1].y <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>dstSubresource</code> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-dstImage-00250",
          "text": "If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>dstOffsets</code>[0].y <strong class=\"purple\">must</strong> be <code>0</code> and <code>dstOffsets</code>[1].y <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-dstOffset-00251",
          "text": "For each element of <code>pRegions</code>, <code>dstOffsets</code>[0].z and <code>dstOffsets</code>[1].z <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>dstSubresource</code> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-dstImage-00252",
          "text": "If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>dstOffsets</code>[0].z <strong class=\"purple\">must</strong> be <code>0</code> and <code>dstOffsets</code>[1].z <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-pRegions-04561",
          "text": "If any element of <code>pRegions</code> contains <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a> in its <code>pNext</code> chain, then <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> not be block-compressed images",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2KHR-pRegions-06207",
          "text": "If any element of <code>pRegions</code> contains <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a> in its <code>pNext</code> chain, then <code>srcImage</code> <strong class=\"purple\">must</strong> be of type <code>VK_IMAGE_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2KHR-pRegions-06208",
          "text": "If any element of <code>pRegions</code> contains <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a> in its <code>pNext</code> chain, then <code>srcImage</code> <strong class=\"purple\">must</strong> not have a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-filter-09204",
          "text": "If <code>filter</code> is <code>VK_FILTER_CUBIC_EXT</code> and if the <a href=\"#features-filter-cubic-weight-selection\">selectableCubicWeights</a> feature is not enabled then the cubic weights <strong class=\"purple\">must</strong> be <code>VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkBlitImageCubicWeightsInfoQCOM\">VkBlitImageCubicWeightsInfoQCOM</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-srcImage-parameter",
          "text": "<code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-srcImageLayout-parameter",
          "text": "<code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-dstImage-parameter",
          "text": "<code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-dstImageLayout-parameter",
          "text": "<code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-pRegions-parameter",
          "text": "<code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href=\"#VkImageBlit2\">VkImageBlit2</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-filter-parameter",
          "text": "<code>filter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFilter\">VkFilter</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-regionCount-arraylength",
          "text": "<code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageInfo2-commonparent",
          "text": "Both of <code>dstImage</code>, and <code>srcImage</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkBlitImageCubicWeightsInfoQCOM": {
      "core": [
        {
          "vuid": "VUID-VkBlitImageCubicWeightsInfoQCOM-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBlitImageCubicWeightsInfoQCOM-cubicWeights-parameter",
          "text": "<code>cubicWeights</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCubicFilterWeightsQCOM\">VkCubicFilterWeightsQCOM</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkImageBlit2": {
      "core": [
        {
          "vuid": "VUID-VkImageBlit2-aspectMask-00238",
          "text": "The <code>aspectMask</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageBlit2-layerCount-08800",
          "text": "If neither of the <code>layerCount</code> members of <code>srcSubresource</code> or <code>dstSubresource</code> are <code>VK_REMAINING_ARRAY_LAYERS</code>, the <code>layerCount</code> members of <code>srcSubresource</code> or <code>dstSubresource</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageBlit2-layerCount-08801",
          "text": "If one of the <code>layerCount</code> members of <code>srcSubresource</code> or <code>dstSubresource</code> is <code>VK_REMAINING_ARRAY_LAYERS</code>, the other member <strong class=\"purple\">must</strong> be either <code>VK_REMAINING_ARRAY_LAYERS</code> or equal to the <code>arrayLayers</code> member of the <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> used to create the image minus <code>baseArrayLayer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageBlit2-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_BLIT_2</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageBlit2-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkCopyCommandTransformInfoQCOM\">VkCopyCommandTransformInfoQCOM</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageBlit2-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageBlit2-srcSubresource-parameter",
          "text": "<code>srcSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageBlit2-dstSubresource-parameter",
          "text": "<code>dstSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdResolveImage": {
      "core": [
        {
          "vuid": "VUID-vkCmdResolveImage-commandBuffer-01837",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-commandBuffer-01838",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-commandBuffer-01839",
          "text": "If <code>commandBuffer</code> is a protected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-pRegions-00255",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-srcImage-00256",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-srcImage-00257",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-dstImage-00258",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-dstImage-00259",
          "text": "<code>dstImage</code> <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-srcImageLayout-00260",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-srcImageLayout-01400",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-dstImageLayout-00262",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-dstImageLayout-01401",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-dstImage-02003",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-linearColorAttachment-06519",
          "text": "If the <a href=\"#features-linearColorAttachment\"><code>linearColorAttachment</code></a> feature is enabled and the image is created with <code>VK_IMAGE_TILING_LINEAR</code>, the <a href=\"#resources-image-format-features\">format features</a> of <code>dstImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-srcImage-01386",
          "text": "<code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with the same image format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-srcSubresource-01709",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-dstSubresource-01710",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-srcSubresource-01711",
          "text": "If <code>srcSubresource.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <span class=\"eq\"><code>srcSubresource.baseArrayLayer</code> +  <code>srcSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-dstSubresource-01712",
          "text": "If <code>dstSubresource.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <span class=\"eq\"><code>dstSubresource.baseArrayLayer</code> +  <code>dstSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-dstImage-02546",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-srcImage-04446",
          "text": "If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>srcSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-srcImage-04447",
          "text": "If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>dstSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>dstSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-srcOffset-00269",
          "text": "For each element of <code>pRegions</code>, <code>srcOffset.x</code> and <span class=\"eq\">(<code>extent.width</code> +  <code>srcOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>srcSubresource</code> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-srcOffset-00270",
          "text": "For each element of <code>pRegions</code>, <code>srcOffset.y</code> and <span class=\"eq\">(<code>extent.height</code> +  <code>srcOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>srcSubresource</code> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-srcImage-00271",
          "text": "If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>srcOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-srcOffset-00272",
          "text": "For each element of <code>pRegions</code>, <code>srcOffset.z</code> and <span class=\"eq\">(<code>extent.depth</code> +  <code>srcOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>srcSubresource</code> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-srcImage-00273",
          "text": "If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>srcOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-dstOffset-00274",
          "text": "For each element of <code>pRegions</code>, <code>dstOffset.x</code> and <span class=\"eq\">(<code>extent.width</code> +  <code>dstOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>dstSubresource</code> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-dstOffset-00275",
          "text": "For each element of <code>pRegions</code>, <code>dstOffset.y</code> and <span class=\"eq\">(<code>extent.height</code> +  <code>dstOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>dstSubresource</code> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-dstImage-00276",
          "text": "If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>dstOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-dstOffset-00277",
          "text": "For each element of <code>pRegions</code>, <code>dstOffset.z</code> and <span class=\"eq\">(<code>extent.depth</code> +  <code>dstOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>dstSubresource</code> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-dstImage-00278",
          "text": "If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>dstOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-srcImage-06762",
          "text": "<code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-srcImage-06763",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-dstImage-06764",
          "text": "<code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-dstImage-06765",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-srcImage-parameter",
          "text": "<code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-srcImageLayout-parameter",
          "text": "<code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-dstImage-parameter",
          "text": "<code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-dstImageLayout-parameter",
          "text": "<code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-pRegions-parameter",
          "text": "<code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href=\"#VkImageResolve\">VkImageResolve</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-regionCount-arraylength",
          "text": "<code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage-commonparent",
          "text": "Each of <code>commandBuffer</code>, <code>dstImage</code>, and <code>srcImage</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkImageResolve": {
      "core": [
        {
          "vuid": "VUID-VkImageResolve-aspectMask-00266",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageResolve-layerCount-08803",
          "text": "If neither of the <code>layerCount</code> members of <code>srcSubresource</code> or <code>dstSubresource</code> are <code>VK_REMAINING_ARRAY_LAYERS</code>, the <code>layerCount</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageResolve-layerCount-08804",
          "text": "If one of the <code>layerCount</code> members of <code>srcSubresource</code> or <code>dstSubresource</code> is <code>VK_REMAINING_ARRAY_LAYERS</code>, the other member <strong class=\"purple\">must</strong> be either <code>VK_REMAINING_ARRAY_LAYERS</code> or equal to the <code>arrayLayers</code> member of the <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> used to create the image minus <code>baseArrayLayer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageResolve-srcSubresource-parameter",
          "text": "<code>srcSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageResolve-dstSubresource-parameter",
          "text": "<code>dstSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdResolveImage2": {
      "core": [
        {
          "vuid": "VUID-vkCmdResolveImage2-commandBuffer-01837",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage2-commandBuffer-01838",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage2-commandBuffer-01839",
          "text": "If <code>commandBuffer</code> is a protected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage2-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage2-pResolveImageInfo-parameter",
          "text": "<code>pResolveImageInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkResolveImageInfo2\">VkResolveImageInfo2</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage2-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage2-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage2-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdResolveImage2-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkResolveImageInfo2": {
      "core": [
        {
          "vuid": "VUID-VkResolveImageInfo2-pRegions-00255",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-srcImage-00256",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-srcImage-00257",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-dstImage-00258",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-dstImage-00259",
          "text": "<code>dstImage</code> <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-srcImageLayout-00260",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-srcImageLayout-01400",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-dstImageLayout-00262",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-dstImageLayout-01401",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-dstImage-02003",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-linearColorAttachment-06519",
          "text": "If the <a href=\"#features-linearColorAttachment\"><code>linearColorAttachment</code></a> feature is enabled and the image is created with <code>VK_IMAGE_TILING_LINEAR</code>, the <a href=\"#resources-image-format-features\">format features</a> of <code>dstImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-srcImage-01386",
          "text": "<code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with the same image format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-srcSubresource-01709",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-dstSubresource-01710",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-srcSubresource-01711",
          "text": "If <code>srcSubresource.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <span class=\"eq\"><code>srcSubresource.baseArrayLayer</code> +  <code>srcSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-dstSubresource-01712",
          "text": "If <code>dstSubresource.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <span class=\"eq\"><code>dstSubresource.baseArrayLayer</code> +  <code>dstSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-dstImage-02546",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-srcImage-04446",
          "text": "If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>srcSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-srcImage-04447",
          "text": "If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>dstSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>dstSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-srcOffset-00269",
          "text": "For each element of <code>pRegions</code>, <code>srcOffset.x</code> and <span class=\"eq\">(<code>extent.width</code> +  <code>srcOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>srcSubresource</code> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-srcOffset-00270",
          "text": "For each element of <code>pRegions</code>, <code>srcOffset.y</code> and <span class=\"eq\">(<code>extent.height</code> +  <code>srcOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>srcSubresource</code> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-srcImage-00271",
          "text": "If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>srcOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-srcOffset-00272",
          "text": "For each element of <code>pRegions</code>, <code>srcOffset.z</code> and <span class=\"eq\">(<code>extent.depth</code> +  <code>srcOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>srcSubresource</code> of <code>srcImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-srcImage-00273",
          "text": "If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>srcOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-dstOffset-00274",
          "text": "For each element of <code>pRegions</code>, <code>dstOffset.x</code> and <span class=\"eq\">(<code>extent.width</code> +  <code>dstOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>dstSubresource</code> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-dstOffset-00275",
          "text": "For each element of <code>pRegions</code>, <code>dstOffset.y</code> and <span class=\"eq\">(<code>extent.height</code> +  <code>dstOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>dstSubresource</code> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-dstImage-00276",
          "text": "If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>dstOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-dstOffset-00277",
          "text": "For each element of <code>pRegions</code>, <code>dstOffset.z</code> and <span class=\"eq\">(<code>extent.depth</code> +  <code>dstOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>dstSubresource</code> of <code>dstImage</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-dstImage-00278",
          "text": "If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>dstOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-srcImage-06762",
          "text": "<code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-srcImage-06763",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-dstImage-06764",
          "text": "<code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-dstImage-06765",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-srcImage-parameter",
          "text": "<code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-srcImageLayout-parameter",
          "text": "<code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-dstImage-parameter",
          "text": "<code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-dstImageLayout-parameter",
          "text": "<code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-pRegions-parameter",
          "text": "<code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href=\"#VkImageResolve2\">VkImageResolve2</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-regionCount-arraylength",
          "text": "<code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkResolveImageInfo2-commonparent",
          "text": "Both of <code>dstImage</code>, and <code>srcImage</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkImageResolve2": {
      "core": [
        {
          "vuid": "VUID-VkImageResolve2-aspectMask-00266",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageResolve2-layerCount-08803",
          "text": "If neither of the <code>layerCount</code> members of <code>srcSubresource</code> or <code>dstSubresource</code> are <code>VK_REMAINING_ARRAY_LAYERS</code>, the <code>layerCount</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageResolve2-layerCount-08804",
          "text": "If one of the <code>layerCount</code> members of <code>srcSubresource</code> or <code>dstSubresource</code> is <code>VK_REMAINING_ARRAY_LAYERS</code>, the other member <strong class=\"purple\">must</strong> be either <code>VK_REMAINING_ARRAY_LAYERS</code> or equal to the <code>arrayLayers</code> member of the <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> used to create the image minus <code>baseArrayLayer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageResolve2-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageResolve2-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageResolve2-srcSubresource-parameter",
          "text": "<code>srcSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageResolve2-dstSubresource-parameter",
          "text": "<code>dstSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdWriteBufferMarker2AMD": {
      "core": [
        {
          "vuid": "VUID-vkCmdWriteBufferMarker2AMD-stage-03929",
          "text": "If the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarker2AMD-stage-03930",
          "text": "If the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarker2AMD-stage-03931",
          "text": "If the <a href=\"#features-conditionalRendering\"><code>conditionalRendering</code></a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarker2AMD-stage-03932",
          "text": "If the <a href=\"#features-fragmentDensityMap\"><code>fragmentDensityMap</code></a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarker2AMD-stage-03933",
          "text": "If the <a href=\"#features-transformFeedback\"><code>transformFeedback</code></a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarker2AMD-stage-03934",
          "text": "If the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarker2AMD-stage-03935",
          "text": "If the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarker2AMD-stage-07316",
          "text": "If neither the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> or <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> are enabled, <code>stage</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarker2AMD-stage-04957",
          "text": "If the <a href=\"#features-subpassShading\"><code>subpassShading</code></a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarker2AMD-stage-04995",
          "text": "If the <a href=\"#features-invocationMask\"><code>invocationMask</code></a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarker2AMD-stage-07946",
          "text": "If neither the <a href=\"#VK_NV_ray_tracing\">VK_NV_ray_tracing</a> extension or <a href=\"#features-rayTracingPipeline\"><code>rayTracingPipeline</code> feature</a> are enabled, <code>stage</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarker2AMD-synchronization2-03893",
          "text": "The <a href=\"#features-synchronization2\"><code>synchronization2</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarker2AMD-stage-03894",
          "text": "<code>stage</code> <strong class=\"purple\">must</strong> include only a single pipeline stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarker2AMD-stage-03895",
          "text": "<code>stage</code> <strong class=\"purple\">must</strong> include only stages that are valid for the queue family that was used to create the command pool that <code>commandBuffer</code> was allocated from",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarker2AMD-dstOffset-03896",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarker2AMD-dstBuffer-03897",
          "text": "<code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarker2AMD-dstBuffer-03898",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarker2AMD-dstOffset-03899",
          "text": "<code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarker2AMD-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarker2AMD-stage-parameter",
          "text": "<code>stage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits2\">VkPipelineStageFlagBits2</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarker2AMD-dstBuffer-parameter",
          "text": "<code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarker2AMD-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarker2AMD-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarker2AMD-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarker2AMD-commonparent",
          "text": "Both of <code>commandBuffer</code>, and <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdWriteBufferMarkerAMD": {
      "core": [
        {
          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04074",
          "text": "<code>pipelineStage</code> <strong class=\"purple\">must</strong> be a <a href=\"#synchronization-pipeline-stages-supported\">valid stage</a> for the queue family that was used to create the command pool that <code>commandBuffer</code> was allocated from",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04075",
          "text": "If the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04076",
          "text": "If the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04077",
          "text": "If the <a href=\"#features-conditionalRendering\"><code>conditionalRendering</code></a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04078",
          "text": "If the <a href=\"#features-fragmentDensityMap\"><code>fragmentDensityMap</code></a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04079",
          "text": "If the <a href=\"#features-transformFeedback\"><code>transformFeedback</code></a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04080",
          "text": "If the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-07077",
          "text": "If the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-shadingRateImage-07314",
          "text": "If neither the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> or <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> are enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-synchronization2-06489",
          "text": "If the <a href=\"#features-synchronization2\"><code>synchronization2</code></a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_NONE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-rayTracingPipeline-07943",
          "text": "If neither the <a href=\"#VK_NV_ray_tracing\">VK_NV_ray_tracing</a> extension or <a href=\"#features-rayTracingPipeline\"><code>rayTracingPipeline</code> feature</a> are enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstOffset-01798",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-01799",
          "text": "<code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-01800",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstOffset-01801",
          "text": "<code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-parameter",
          "text": "If <code>pipelineStage</code> is not <code>0</code>, <code>pipelineStage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-parameter",
          "text": "<code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-commonparent",
          "text": "Both of <code>commandBuffer</code>, and <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineInputAssemblyStateCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-06252",
          "text": "If the <a href=\"#features-primitiveTopologyListRestart\"><code>primitiveTopologyListRestart</code></a> feature is not enabled, and <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>, or <code>VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY</code>, <code>primitiveRestartEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-06253",
          "text": "If the <a href=\"#features-primitiveTopologyPatchListRestart\"><code>primitiveTopologyPatchListRestart</code></a> feature is not enabled, and <code>topology</code> is <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, <code>primitiveRestartEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00429",
          "text": "If the <a href=\"#features-geometryShader\"><code>geometryShader</code></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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00430",
          "text": "If the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is not enabled, <code>topology</code> <strong class=\"purple\">must</strong> not be <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-triangleFans-04452",
          "text": "If the <code><a href=\"#VK_KHR_portability_subset\">VK_KHR_portability_subset</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>triangleFans</code> is <code>VK_FALSE</code>, <code>topology</code> <strong class=\"purple\">must</strong> not be <code>VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-parameter",
          "text": "<code>topology</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPrimitiveTopology\">VkPrimitiveTopology</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetPrimitiveRestartEnable": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetPrimitiveRestartEnable-None-08970",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <a href=\"#features-extendedDynamicState2\"><code>extendedDynamicState2</code></a>\nfeature is enabled</p>\n</li>\n<li>\n<p>the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n<li>\n<p>the value of <a href=\"#VkApplicationInfo\">VkApplicationInfo</a>::<code>apiVersion</code> used to create\nthe <a href=\"#VkInstance\">VkInstance</a> parent of <code>commandBuffer</code> is greater than or\nequal to Version 1.3</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetPrimitiveRestartEnable-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetPrimitiveRestartEnable-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetPrimitiveRestartEnable-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetPrimitiveRestartEnable-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetPrimitiveTopology": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetPrimitiveTopology-None-08971",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <a href=\"#features-extendedDynamicState\"><code>extendedDynamicState</code></a>\nfeature is enabled</p>\n</li>\n<li>\n<p>the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n<li>\n<p>the value of <a href=\"#VkApplicationInfo\">VkApplicationInfo</a>::<code>apiVersion</code> used to create\nthe <a href=\"#VkInstance\">VkInstance</a> parent of <code>commandBuffer</code> is greater than or\nequal to Version 1.3</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetPrimitiveTopology-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetPrimitiveTopology-primitiveTopology-parameter",
          "text": "<code>primitiveTopology</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPrimitiveTopology\">VkPrimitiveTopology</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetPrimitiveTopology-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetPrimitiveTopology-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetPrimitiveTopology-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdBindIndexBuffer": {
      "core": [
        {
          "vuid": "VUID-vkCmdBindIndexBuffer-offset-08782",
          "text": "<code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindIndexBuffer-offset-08783",
          "text": "The sum of <code>offset</code> and the base 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 size of the type indicated by <code>indexType</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindIndexBuffer-buffer-08784",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDEX_BUFFER_BIT</code> flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindIndexBuffer-buffer-08785",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindIndexBuffer-indexType-08786",
          "text": "<code>indexType</code> <strong class=\"purple\">must</strong> not be <code>VK_INDEX_TYPE_NONE_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindIndexBuffer-indexType-08787",
          "text": "If <code>indexType</code> is <code>VK_INDEX_TYPE_UINT8_KHR</code>, the <a href=\"#features-indexTypeUint8\"><code>indexTypeUint8</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindIndexBuffer-None-09493",
          "text": "If <a href=\"#features-maintenance6\"><code>maintenance6</code></a> is not enabled, <code>buffer</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindIndexBuffer-buffer-09494",
          "text": "If <code>buffer</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, offset <strong class=\"purple\">must</strong> be zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindIndexBuffer-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindIndexBuffer-buffer-parameter",
          "text": "If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindIndexBuffer-indexType-parameter",
          "text": "<code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindIndexBuffer-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindIndexBuffer-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindIndexBuffer-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindIndexBuffer-commonparent",
          "text": "Both of <code>buffer</code>, and <code>commandBuffer</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdBindIndexBuffer2KHR": {
      "core": [
        {
          "vuid": "VUID-vkCmdBindIndexBuffer2KHR-offset-08782",
          "text": "<code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindIndexBuffer2KHR-offset-08783",
          "text": "The sum of <code>offset</code> and the base 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 size of the type indicated by <code>indexType</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindIndexBuffer2KHR-buffer-08784",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDEX_BUFFER_BIT</code> flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindIndexBuffer2KHR-buffer-08785",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindIndexBuffer2KHR-indexType-08786",
          "text": "<code>indexType</code> <strong class=\"purple\">must</strong> not be <code>VK_INDEX_TYPE_NONE_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindIndexBuffer2KHR-indexType-08787",
          "text": "If <code>indexType</code> is <code>VK_INDEX_TYPE_UINT8_KHR</code>, the <a href=\"#features-indexTypeUint8\"><code>indexTypeUint8</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindIndexBuffer2KHR-None-09493",
          "text": "If <a href=\"#features-maintenance6\"><code>maintenance6</code></a> is not enabled, <code>buffer</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindIndexBuffer2KHR-buffer-09494",
          "text": "If <code>buffer</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, offset <strong class=\"purple\">must</strong> be zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindIndexBuffer2KHR-size-08767",
          "text": "If <code>size</code> is not <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be a multiple of the size of the type indicated by <code>indexType</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindIndexBuffer2KHR-size-08768",
          "text": "If <code>size</code> is not <code>VK_WHOLE_SIZE</code>, the sum of <code>offset</code> and <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindIndexBuffer2KHR-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindIndexBuffer2KHR-buffer-parameter",
          "text": "If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindIndexBuffer2KHR-indexType-parameter",
          "text": "<code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindIndexBuffer2KHR-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindIndexBuffer2KHR-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindIndexBuffer2KHR-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindIndexBuffer2KHR-commonparent",
          "text": "Both of <code>buffer</code>, and <code>commandBuffer</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdDraw": {
      "core": [
        {
          "vuid": "VUID-vkCmdDraw-magFilter-04553",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-magFilter-09598",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-mipmapMode-04770",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-mipmapMode-09599",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-unnormalizedCoordinates-09635",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>levelCount</code> and <code>layerCount</code> <strong class=\"purple\">must</strong> be 1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-unnormalizedCoordinates-09636",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_VIEW_TYPE_1D</code> or <code>VK_IMAGE_VIEW_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-06479",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is sampled with <a href=\"#textures-depth-compare-operation\">depth comparison</a>, 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_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-02691",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed using atomic operations as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07888",
          "text": "If a <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> descriptor is accessed using atomic operations as a result of this command, then the storage texel buffer&#8217;s <a href=\"#resources-buffer-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-02692",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-02693",
          "text": "If the <a href=\"#VK_EXT_filter_cubic\">VK_EXT_filter_cubic</a> extension is not enabled and any <a href=\"#VkImageView\">VkImageView</a> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, it <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-filterCubic-02694",
          "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 <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubic</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-filterCubicMinmax-02695",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubicMinmax</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-cubicRangeClamp-09212",
          "text": "If the <a href=\"#features-filter-cubic-range-clamp\"><code>cubicRangeClamp</code></a> feature is not enabled, then 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=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-reductionMode-09213",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with a <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code> as a result of this command <strong class=\"purple\">must</strong> sample with <code>VK_FILTER_CUBIC_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-selectableCubicWeights-09214",
          "text": "If the <a href=\"#features-filter-cubic-weight-selection\"><code>selectableCubicWeights</code></a> feature is not enabled, then 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 href=\"#VkSamplerCubicWeightsCreateInfoQCOM\">VkSamplerCubicWeightsCreateInfoQCOM</a>::<code>cubicWeights</code> equal to <code>VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-flags-02696",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-OpTypeImage-07027",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being written as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-OpTypeImage-07028",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being read as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-OpTypeImage-07029",
          "text": "For any <a href=\"#VkBufferView\">VkBufferView</a> being written as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-OpTypeImage-07030",
          "text": "Any <a href=\"#VkBufferView\">VkBufferView</a> being read as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code> then the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08600",
          "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08601",
          "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-10068",
          "text": "For each array of resources that is used by <a href=\"#shaders-binding\">a bound shader</a>, the indices used to access members of the array <strong class=\"purple\">must</strong> be less than the descriptor count for the identified binding in the descriptor sets used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-maintenance4-08602",
          "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08114",
          "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08115",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created without <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08116",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08604",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08117",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08119",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkPipeline\">VkPipeline</a> created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08605",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkShaderEXT\">VkShaderEXT</a> created with a <code>VkDescriptorSetLayout</code> that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08606",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is not enabled, a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08608",
          "text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state specified statically in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08609",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <a href=\"#VkImage\">VkImage</a> with a <a href=\"#VkImageView\">VkImageView</a> 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08610",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08611",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08607",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-uniformBuffers-06935",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08612",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-storageBuffers-06936",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>storageBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08613",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-commandBuffer-02707",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, any resource accessed by <a href=\"#shaders-binding\">bound shaders</a> <strong class=\"purple\">must</strong> not be a protected resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-06550",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> only be used with <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-ConstOffset-06551",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> not use the <code>ConstOffset</code> and <code>Offset</code> operands",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-viewType-07752",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> match the <code>Dim</code> operand of the <code>OpTypeImage</code> as described in <a href=\"#spirvenv-image-dimensions\">Compatibility Between SPIR-V Image Dimensions and Vulkan ImageView Types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-format-07753",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the <a href=\"#formats-numericformat\">numeric type</a> of the image view&#8217;s <code>format</code> and the <code>Sampled</code> <code>Type</code> operand of the <code>OpTypeImage</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-OpImageWrite-08795",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with a format other than <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-OpImageWrite-08796",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with the format <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have four components",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-OpImageWrite-04469",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the buffer view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-SampledType-04470",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-SampledType-04471",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-SampledType-04472",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-SampledType-04473",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-sparseImageInt64Atomics-04474",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-sparseImageInt64Atomics-04475",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-OpImageWeightedSampleQCOM-06971",
          "text": "If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-OpImageWeightedSampleQCOM-06972",
          "text": "If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image 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_2_WEIGHT_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-OpImageBoxFilterQCOM-06973",
          "text": "If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-OpImageBlockMatchSSDQCOM-06974",
          "text": "If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-OpImageBlockMatchSADQCOM-06975",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-OpImageBlockMatchSADQCOM-06976",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-OpImageWeightedSampleQCOM-06977",
          "text": "If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-OpImageWeightedSampleQCOM-06978",
          "text": "If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-OpImageBlockMatchWindow-09215",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-OpImageBlockMatchWindow-09216",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s format <strong class=\"purple\">must</strong> be a single-component format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-OpImageBlockMatchWindow-09217",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07288",
          "text": "Any shader invocation executed by this command <strong class=\"purple\">must</strong> <a href=\"#shaders-termination\">terminate</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-09600",
          "text": "If a descriptor with type equal to any of <code>VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> is accessed as a result of this command, the image subresource identified by that descriptor <strong class=\"purple\">must</strong> be in the image layout identified when the descriptor was written",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-renderPass-02684",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-subpass-02685",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07748",
          "text": "If any shader statically accesses an input attachment, a valid descriptor <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-OpTypeImage-07468",
          "text": "If any shader executed by this pipeline accesses an <code>OpTypeImage</code> variable with a <code>Dim</code> operand of <code>SubpassData</code>, it <strong class=\"purple\">must</strong> be decorated with an <code>InputAttachmentIndex</code> that corresponds to a valid input attachment in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07469",
          "text": "Input attachment views accessed in a subpass <strong class=\"purple\">must</strong> be created with the same <a href=\"#VkFormat\">VkFormat</a> as the corresponding subpass definition, and be created with a <a href=\"#VkImageView\">VkImageView</a> that is compatible with the attachment referenced by the subpass' <code>pInputAttachments</code>[<code>InputAttachmentIndex</code>] in the currently bound <a href=\"#VkFramebuffer\">VkFramebuffer</a> as specified by <a href=\"#compatibility-inputattachment\">Fragment Input Attachment Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-pDepthInputAttachmentIndex-09595",
          "text": "Input attachment views accessed in a dynamic render pass with a <code>InputAttachmentIndex</code> referenced by <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>, or no <code>InputAttachmentIndex</code> if <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pDepthInputAttachmentIndex</code> or <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pStencilInputAttachmentIndex</code> are <code>NULL</code>, <strong class=\"purple\">must</strong> be created with a <a href=\"#VkImageView\">VkImageView</a> that is compatible with the corresponding color, depth, or stencil attachment in <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-pDepthInputAttachmentIndex-09596",
          "text": "Input attachment views accessed in a dynamic render pass via a shader object <strong class=\"purple\">must</strong> have an <code>InputAttachmentIndex</code> if both <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pDepthInputAttachmentIndex</code> and <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pStencilInputAttachmentIndex</code> are non-<code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-InputAttachmentIndex-09597",
          "text": "If an input attachment view accessed in a dynamic render pass via a shader object has an <code>InputAttachmentIndex</code>, the <code>InputAttachmentIndex</code> <strong class=\"purple\">must</strong> match an index in <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-06537",
          "text": "Memory backing image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be written in any way other than as an attachment by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-09000",
          "text": "If a color attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe <code>VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code> is\nset on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_COLOR_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-09001",
          "text": "If a depth attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe\n<code>VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code>\nis set on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_DEPTH_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-09002",
          "text": "If a stencil attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe\n<code>VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code>\nis set on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_STENCIL_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-09003",
          "text": "If an attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment, storage image, or sampled image by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-06539",
          "text": "If any previously recorded command in the current subpass accessed an image subresource used as an attachment in this subpass in any way other than as an attachment, this command <strong class=\"purple\">must</strong> not write to that image subresource as an attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-06886",
          "text": "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, <a href=\"#fragops-depth-write\">depth writes</a> <strong class=\"purple\">must</strong> be disabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-06887",
          "text": "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back <code>writeMask</code> are not zero, and stencil test is enabled, <a href=\"#fragops-stencil\">all stencil ops</a> <strong class=\"purple\">must</strong> be <code>VK_STENCIL_OP_KEEP</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07831",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT</code> dynamic state enabled then <a href=\"#vkCmdSetViewport\">vkCmdSetViewport</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07832",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR</code> dynamic state enabled then <a href=\"#vkCmdSetScissor\">vkCmdSetScissor</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07833",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_WIDTH</code> dynamic state enabled then <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08617",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08618",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08619",
          "text": "If a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07834",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthBiasEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthBounds\">vkCmdSetDepthBounds</a> or <a href=\"#vkCmdSetDepthBias2EXT\">vkCmdSetDepthBias2EXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07835",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_BLEND_CONSTANTS</code> dynamic state enabled then <a href=\"#vkCmdSetBlendConstants\">vkCmdSetBlendConstants</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08621",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> in the current command buffer set any element of <code>pColorBlendEnables</code> to <code>VK_TRUE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> in the current command buffer set the same element of <code>pColorBlendEquations</code> to a <code>VkColorBlendEquationEXT</code> structure with any <a href=\"#VkBlendFactor\">VkBlendFactor</a> member with a value of <code>VK_BLEND_FACTOR_CONSTANT_COLOR</code>, <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR</code>, <code>VK_BLEND_FACTOR_CONSTANT_ALPHA</code>, or <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA</code>, <a href=\"#vkCmdSetBlendConstants\">vkCmdSetBlendConstants</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07836",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthBoundsTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthBounds\">vkCmdSetDepthBounds</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07837",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilCompareMask\">vkCmdSetStencilCompareMask</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07838",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilWriteMask\">vkCmdSetStencilWriteMask</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07839",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_REFERENCE</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of and <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilReference\">vkCmdSetStencilReference</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-maxMultiviewInstanceIndex-02688",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-sampleLocationsEnable-02689",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-06666",
          "text": "If the <code><a href=\"#VK_EXT_sample_locations\">VK_EXT_sample_locations</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07840",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_CULL_MODE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCullMode\">vkCmdSetCullMode</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07841",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_FRONT_FACE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetFrontFace\">vkCmdSetFrontFace</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07843",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, <a href=\"#vkCmdSetDepthTestEnable\">vkCmdSetDepthTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07844",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthWriteEnable\">vkCmdSetDepthWriteEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07845",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_COMPARE_OP</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthCompareOp\">vkCmdSetDepthCompareOp</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07846",
          "text": "If the <a href=\"#features-depthBounds\"><code>depthBounds</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthBoundsTestEnable\">vkCmdSetDepthBoundsTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07847",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetStencilTestEnable\">vkCmdSetStencilTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07848",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_OP</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilOp\">vkCmdSetStencilOp</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-viewportCount-03417",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-scissorCount-03418",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, then <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-viewportCount-03419",
          "text": "If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> and <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08635",
          "text": "If a shader object is bound to any graphics stage, then both <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> and <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-viewportCount-04137",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-viewportCount-04138",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08636",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-viewportCount-04139",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-shadingRateImage-09233",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV</code> and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-shadingRateImage-09234",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08637",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-VkPipelineVieportCreateInfo-04141",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled and a <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> structure chained from <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-VkPipelineVieportCreateInfo-04142",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled and a <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> structure chained from <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07878",
          "text": "If the <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetExclusiveScissorEnableNV\">vkCmdSetExclusiveScissorEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07879",
          "text": "If the <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV</code> dynamic state enabled, and the most recent call to <a href=\"#vkCmdSetExclusiveScissorEnableNV\">vkCmdSetExclusiveScissorEnableNV</a> in the current command buffer set any element of <code>pExclusiveScissorEnables</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetExclusiveScissorNV\">vkCmdSetExclusiveScissorNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-04876",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-04877",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthBiasEnable\">vkCmdSetDepthBiasEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-logicOp-04878",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_LOGIC_OP_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>logicOpEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetLogicOpEXT\">vkCmdSetLogicOpEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-primitiveFragmentShadingRateWithMultipleViewports-04552",
          "text": "If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-primitiveFragmentShadingRateWithMultipleViewports-08642",
          "text": "If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, and any shader object bound to a graphics stage writes to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-blendEnable-04727",
          "text": "If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the <code>blendEnable</code> member of the corresponding element of the <code>pAttachments</code> member of <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08643",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then for each color attachment in the render pass, if the corresponding image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the corresponding member of <code>pColorBlendEnables</code> in the most recent call to <code>vkCmdSetColorBlendEnableEXT</code> in the current command buffer that affected that attachment index <strong class=\"purple\">must</strong> have been <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-multisampledRenderToSingleSampled-07284",
          "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then <code>rasterizationSamples</code> for the currently bound graphics pipeline\n<strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil\nattachments</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08644",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the\ncurrent command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the\nsame as the number of samples for the current render pass color and/or\ndepth/stencil attachments</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08876",
          "text": "If a shader object is bound to any graphics stage, the current render pass instance <strong class=\"purple\">must</strong> have been begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-imageView-06172",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-imageView-06173",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-imageView-06174",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-imageView-06175",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-imageView-06176",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-imageView-06177",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-viewMask-06178",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>viewMask</code> equal to <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>viewMask</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-colorAttachmentCount-06179",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>colorAttachmentCount</code> equal to <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-08910",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-08912",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-08911",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-colorAttachmentCount-09362",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, there is no shader object bound to any graphics stage, and a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>resolveImageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with an image created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value equal to the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-09363",
          "text": "If there is no shader object bound to any graphics stage, the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, and a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with an image created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value equal to the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-09364",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have set the blend enable to <code>VK_FALSE</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-09365",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to <code>VK_SAMPLE_COUNT_1_BIT</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-09366",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have set blend enable to <code>VK_FALSE</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-rasterizationSamples-09367",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to <code>VK_SAMPLE_COUNT_1_BIT</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-09368",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;width</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-09369",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;height</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-pFragmentSize-09370",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;width</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-pFragmentSize-09371",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;height</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07749",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteEnableEXT\">vkCmdSetColorWriteEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08646",
          "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is enabled on the device, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorWriteEnableEXT\">vkCmdSetColorWriteEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-attachmentCount-07750",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code> dynamic state enabled then the <code>attachmentCount</code> parameter of <code>vkCmdSetColorWriteEnableEXT</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>VkPipelineColorBlendStateCreateInfo</code>::<code>attachmentCount</code> of the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08647",
          "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is enabled on the device, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then the <code>attachmentCount</code> parameter of most recent call to <code>vkCmdSetColorWriteEnableEXT</code> in the current command buffer <strong class=\"purple\">must</strong> be greater than or equal to the number of color attachments in the current render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07751",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleEXT\">vkCmdSetDiscardRectangleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command for each discard rectangle in <a href=\"#VkPipelineDiscardRectangleStateCreateInfoEXT\">VkPipelineDiscardRectangleStateCreateInfoEXT</a>::<code>discardRectangleCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07880",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-rasterizerDiscardEnable-09236",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> in the current command buffer set <code>discardRectangleEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDiscardRectangleEXT\">vkCmdSetDiscardRectangleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08648",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07881",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleModeEXT\">vkCmdSetDiscardRectangleModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08649",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> in the current command buffer set <code>discardRectangleEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDiscardRectangleModeEXT\">vkCmdSetDiscardRectangleModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-08913",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-08914",
          "text": "If current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-08915",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline was not equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>, the value of the format <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-08916",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-08917",
          "text": "If current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-dynamicRenderingUnusedAttachments-08918",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline was not equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>, the value of the format <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-imageView-06183",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a>::<code>imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-imageView-06184",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingFragmentDensityMapAttachmentInfoEXT\">VkRenderingFragmentDensityMapAttachmentInfoEXT</a>::<code>imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-colorAttachmentCount-06185",
          "text": "If the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the corresponding element of the <code>pColorAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-pDepthAttachment-06186",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-pStencilAttachment-06187",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-multisampledRenderToSingleSampled-07285",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     the current render pass instance was begun with     <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than     <code>0</code>, then each element of the     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a     <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been     created with a sample count equal to the value of     <code>rasterizationSamples</code> for the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-multisampledRenderToSingleSampled-07286",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not     <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the     currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count     used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-multisampledRenderToSingleSampled-07287",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not     <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the     currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count     used to create     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-pNext-07935",
          "text": "If this command has been called inside a render pass instance started with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and the <code>pNext</code> chain of <a href=\"#VkRenderingInfo\">VkRenderingInfo</a> includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a>::<code>rasterizationSamples</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-renderPass-06198",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>renderPass</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-pColorAttachments-08963",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound with a fragment shader that statically writes to a color attachment, the color write mask is not zero, color writes are enabled, and the corresponding element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-pDepthAttachment-08964",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound, depth test is enabled, depth write is enabled, and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-pStencilAttachment-08965",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound, stencil test is enabled and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-primitivesGeneratedQueryWithRasterizerDiscard-06708",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithRasterizerDiscard\"><code>primitivesGeneratedQueryWithRasterizerDiscard</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, <a href=\"#primsrast-discard\">rasterization discard</a> <strong class=\"purple\">must</strong> not be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-primitivesGeneratedQueryWithNonZeroStreams-06709",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, the bound graphics pipeline <strong class=\"purple\">must</strong> not have been created with a non-zero value in <code>VkPipelineRasterizationStateStreamCreateInfoEXT</code>::<code>rasterizationStream</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07619",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetTessellationDomainOriginEXT\">vkCmdSetTessellationDomainOriginEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07620",
          "text": "If the <a href=\"#features-depthClamp\"><code>depthClamp</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthClampEnableEXT\">vkCmdSetDepthClampEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07621",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_POLYGON_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07622",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07623",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-alphaToCoverageEnable-08919",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic state enabled, and <code>alphaToCoverageEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-alphaToCoverageEnable-08920",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a> in the current command buffer set <code>alphaToCoverageEnable</code> to <code>VK_TRUE</code>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07624",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07625",
          "text": "If the <a href=\"#features-alphaToOne\"><code>alphaToOne</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAlphaToOneEnableEXT\">vkCmdSetAlphaToOneEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07626",
          "text": "If the <a href=\"#features-logicOp\"><code>logicOp</code></a> feature is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLogicOpEnableEXT\">vkCmdSetLogicOpEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07627",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08657",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07628",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08658",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> for any attachment set that attachment&#8217;s value in <code>pColorBlendEnables</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07629",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08659",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07630",
          "text": "If the <a href=\"#features-geometryStreams\"><code>geometryStreams</code></a> feature is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizationStreamEXT\">vkCmdSetRasterizationStreamEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07631",
          "text": "If the <code><a href=\"#VK_EXT_conservative_rasterization\">VK_EXT_conservative_rasterization</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetConservativeRasterizationModeEXT\">vkCmdSetConservativeRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07632",
          "text": "If the <code><a href=\"#VK_EXT_conservative_rasterization\">VK_EXT_conservative_rasterization</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>conservativeRasterizationMode</code> is <code>VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT</code>, then <a href=\"#vkCmdSetExtraPrimitiveOverestimationSizeEXT\">vkCmdSetExtraPrimitiveOverestimationSizeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07633",
          "text": "If the <a href=\"#features-depthClipEnable\"><code>depthClipEnable</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT</code> dynamic state, then <a href=\"#vkCmdSetDepthClipEnableEXT\">vkCmdSetDepthClipEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07634",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08664",
          "text": "If the <code><a href=\"#VK_EXT_sample_locations\">VK_EXT_sample_locations</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07635",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-rasterizerDiscardEnable-09416",
          "text": "If the <code><a href=\"#VK_EXT_blend_operation_advanced\">VK_EXT_blend_operation_advanced</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then at least one of <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> and <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07636",
          "text": "If the <code><a href=\"#VK_EXT_provoking_vertex\">VK_EXT_provoking_vertex</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetProvokingVertexModeEXT\">vkCmdSetProvokingVertexModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07637",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08666",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08667",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08668",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07638",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08669",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08670",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08671",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07849",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_KHR</code>     dynamic state enabled then <a href=\"#vkCmdSetLineStippleKHR\">vkCmdSetLineStippleKHR</a>     <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing     command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08672",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> in the current command buffer set <code>stippledLineEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetLineStippleEXT\">vkCmdSetLineStippleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07639",
          "text": "If the <a href=\"#features-depthClipControl\"><code>depthClipControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetDepthClipNegativeOneToOneEXT\">vkCmdSetDepthClipNegativeOneToOneEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-09650",
          "text": "If the <a href=\"#features-depthClampControl\"><code>depthClampControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthClampEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthClampRangeEXT\">vkCmdSetDepthClampRangeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07640",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07641",
          "text": "If the <code><a href=\"#VK_NV_viewport_swizzle\">VK_NV_viewport_swizzle</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07642",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07643",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageToColorEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07644",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageModulationModeNV\">vkCmdSetCoverageModulationModeNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07645",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageModulationMode</code> is any value other than <code>VK_COVERAGE_MODULATION_MODE_NONE_NV</code>, then <a href=\"#vkCmdSetCoverageModulationTableEnableNV\">vkCmdSetCoverageModulationTableEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07646",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageModulationTableEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetCoverageModulationTableNV\">vkCmdSetCoverageModulationTableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07647",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-pipelineFragmentShadingRate-09238",
          "text": "If the <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a> feature is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07648",
          "text": "If the <a href=\"#features-representativeFragmentTest\"><code>representativeFragmentTest</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetRepresentativeFragmentTestEnableNV\">vkCmdSetRepresentativeFragmentTestEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07649",
          "text": "If the <a href=\"#features-coverageReductionMode\"><code>coverageReductionMode</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageReductionModeNV\">vkCmdSetCoverageReductionModeNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-pColorBlendEnables-07470",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> state enabled and the last call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> set <code>pColorBlendEnables</code> for any attachment to <code>VK_TRUE</code>, then for those attachments in the subpass the corresponding 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_BLEND_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-rasterizationSamples-07471",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> follow the rules for a <a href=\"#renderpass-noattachments\">zero-attachment subpass</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-samples-07472",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, then the <code>samples</code> parameter in the last call to <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> be greater or equal to the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a>::<code>rasterizationSamples</code> parameter used to create the bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-samples-07473",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> state and <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> states enabled, then the <code>samples</code> parameter in the last call to <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> be greater or equal to the <code>rasterizationSamples</code> parameter in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-rasterizationSamples-07474",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and neither the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> nor the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extensions are enabled, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil attachments",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-09211",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, or a shader object is bound to any graphics stage, and the current render pass instance includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> be the same as the <code>rasterizationSamples</code> member of that structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-firstAttachment-07476",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEnableEXT</code> calls <strong class=\"purple\">must</strong> specify an enable for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-rasterizerDiscardEnable-09417",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEnableEXT</code> calls <strong class=\"purple\">must</strong> specify an enable for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-firstAttachment-07477",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEquationEXT</code> calls <strong class=\"purple\">must</strong> specify the blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-rasterizerDiscardEnable-09418",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEquationEXT</code> calls <strong class=\"purple\">must</strong> specify the blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-firstAttachment-07478",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorWriteMaskEXT</code> calls <strong class=\"purple\">must</strong> specify the color write mask for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-rasterizerDiscardEnable-09419",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorWriteMaskEXT</code> calls <strong class=\"purple\">must</strong> specify the color write mask for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-firstAttachment-07479",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendAdvancedEXT</code> calls <strong class=\"purple\">must</strong> specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-advancedBlendMaxColorAttachments-07480",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> and <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic states enabled and the last calls to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> and <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> have enabled advanced blending, then the number of active color attachments in the current subpass <strong class=\"purple\">must</strong> not exceed <a href=\"#limits-advancedBlendMaxColorAttachments\"><code>advancedBlendMaxColorAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-primitivesGeneratedQueryWithNonZeroStreams-07481",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, and the bound graphics pipeline was created with <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code> state enabled, the last call to <a href=\"#vkCmdSetRasterizationStreamEXT\">vkCmdSetRasterizationStreamEXT</a> <strong class=\"purple\">must</strong> have set the <code>rasterizationStream</code> to zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-sampleLocationsPerPixel-07482",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-sampleLocationsPerPixel-07483",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-sampleLocationsEnable-07484",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-sampleLocationsEnable-07485",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, then the <code>sampleLocationsInfo.sampleLocationGridSize.width</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-sampleLocationsEnable-07486",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, then the <code>sampleLocationsInfo.sampleLocationGridSize.height</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-sampleLocationsEnable-07487",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, the fragment shader code <strong class=\"purple\">must</strong> not statically use the extended instruction <code>InterpolateAtSample</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-sampleLocationsEnable-07936",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <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 the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-sampleLocationsEnable-07937",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <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 the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-sampleLocationsEnable-07938",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-coverageModulationTableEnable-07488",
          "text": "If a shader object is bound to any graphics stage or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code> state enabled, and the last call to <a href=\"#vkCmdSetCoverageModulationTableEnableNV\">vkCmdSetCoverageModulationTableEnableNV</a> set <code>coverageModulationTableEnable</code> to <code>VK_TRUE</code>, then the <code>coverageModulationTableCount</code> parameter in the last call to <a href=\"#vkCmdSetCoverageModulationTableNV\">vkCmdSetCoverageModulationTableNV</a> <strong class=\"purple\">must</strong> equal the current <code>rasterizationSamples</code> divided by the number of color samples in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-rasterizationSamples-07489",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current <code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be the same as the sample count of the depth/stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-coverageToColorEnable-07490",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> state enabled and the last call to <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> set the <code>coverageToColorEnable</code> to <code>VK_TRUE</code>, then the current subpass <strong class=\"purple\">must</strong> have a color attachment at the location selected by the last call to <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-rasterizerDiscardEnable-09420",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the last call to <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> set the <code>coverageToColorEnable</code> to <code>VK_TRUE</code>, then the current subpass <strong class=\"purple\">must</strong> have a color attachment at the location selected by the last call to <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-coverageReductionMode-07491",
          "text": "If this <code><a href=\"#VK_NV_coverage_reduction_mode\">VK_NV_coverage_reduction_mode</a></code> extension is enabled, the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> and <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> states enabled, the current coverage reduction mode <code>coverageReductionMode</code>, then the current <code>rasterizationSamples</code>, and the sample counts for the color and depth/stencil attachments (if the subpass has them) <strong class=\"purple\">must</strong> be a valid combination returned by <a href=\"#vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV\">vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-viewportCount-07492",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-viewportCount-07493",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-viewportCount-09421",
          "text": "If the <code><a href=\"#VK_NV_viewport_swizzle\">VK_NV_viewport_swizzle</a></code> extension is enabled, and a shader object is bound to any graphics stage, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-rasterizationSamples-07494",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, and if the current subpass has any color attachments and <code>rasterizationSamples</code> of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> is greater than the number of color samples, then the pipeline <code>sampleShadingEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-stippledLineEnable-07495",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-stippledLineEnable-07496",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR</code>, then the <a href=\"#features-stippledBresenhamLines\"><code>stippledBresenhamLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-stippledLineEnable-07497",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR</code>, then the <a href=\"#features-stippledSmoothLines\"><code>stippledSmoothLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-stippledLineEnable-07498",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_DEFAULT_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled and <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>strictLines</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-conservativePointAndLineRasterization-07499",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code> dynamic state enabled, <a href=\"#limits-conservativePointAndLineRasterization\"><code>conservativePointAndLineRasterization</code></a> is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the <code>conservativeRasterizationMode</code> set by the last call to <a href=\"#vkCmdSetConservativeRasterizationModeEXT\">vkCmdSetConservativeRasterizationModeEXT</a> <strong class=\"purple\">must</strong> be <code>VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-stage-07073",
          "text": "If the currently bound pipeline was created with the <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a>::<code>stage</code> member of an element of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> set to <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>, then <a href=\"#queries-mesh-shader\">Mesh Shader Queries</a> <strong class=\"purple\">must</strong> not be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08877",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07850",
          "text": "If dynamic state was inherited from <a href=\"#VkCommandBufferInheritanceViewportScissorInfoNV\">VkCommandBufferInheritanceViewportScissorInfoNV</a>, it <strong class=\"purple\">must</strong> be set in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08684",
          "text": "If there is no bound graphics pipeline, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_VERTEX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08685",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08686",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08687",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08688",
          "text": "If there is no bound graphics pipeline, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08689",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TASK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08690",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08693",
          "text": "If there is no bound graphics pipeline, and at least one of the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features is enabled, one of the <code>VK_SHADER_STAGE_VERTEX_BIT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stages <strong class=\"purple\">must</strong> have a valid <code>VkShaderEXT</code> bound, and the other <strong class=\"purple\">must</strong> have no <code>VkShaderEXT</code> bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08694",
          "text": "If there is no bound graphics pipeline, and both the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features are enabled, and a valid <code>VkShaderEXT</code> is bound the to the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage, and that <code>VkShaderEXT</code> was created without the <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> flag, a valid <code>VkShaderEXT</code> <strong class=\"purple\">must</strong> be bound to the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08695",
          "text": "If there is no bound graphics pipeline, and both the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features are enabled, and a valid <code>VkShaderEXT</code> is bound the to the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage, and that <code>VkShaderEXT</code> was created with the <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> flag, there <strong class=\"purple\">must</strong> be no <code>VkShaderEXT</code> bound to the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08696",
          "text": "If there is no bound graphics pipeline, and a valid <code>VkShaderEXT</code> is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, there <strong class=\"purple\">must</strong> be no <code>VkShaderEXT</code> bound to either the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage or the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08698",
          "text": "If any graphics shader is bound which was created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag, then all shaders created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag in the same <a href=\"#vkCreateShadersEXT\">vkCreateShadersEXT</a> call <strong class=\"purple\">must</strong> also be bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08699",
          "text": "If any graphics shader is bound which was created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag, any stages in between stages whose shaders which did not create a shader with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag as part of the same <a href=\"#vkCreateShadersEXT\">vkCreateShadersEXT</a> call <strong class=\"purple\">must</strong> not have any <code>VkShaderEXT</code> bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08878",
          "text": "All bound graphics shader objects <strong class=\"purple\">must</strong> have been created with identical or identically defined push constant ranges",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08879",
          "text": "All bound graphics shader objects <strong class=\"purple\">must</strong> have been created with identical or identically defined arrays of descriptor set layouts",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-colorAttachmentCount-09372",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, and a fragment shader is bound, it <strong class=\"purple\">must</strong> not declare the <code>DepthReplacing</code> or <code>StencilRefReplacingEXT</code> execution modes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-pDynamicStates-08715",
          "text": "If the bound graphics pipeline state includes a fragment shader stage, was created with <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpDepthAttachmentReadEXT</code>, the <code>depthWriteEnable</code> parameter in the last call to <a href=\"#vkCmdSetDepthWriteEnable\">vkCmdSetDepthWriteEnable</a> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-pDynamicStates-08716",
          "text": "If the bound graphics pipeline state includes a fragment shader stage, was created with <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpStencilAttachmentReadEXT</code>, the <code>writeMask</code> parameter in the last call to <a href=\"#vkCmdSetStencilWriteMask\">vkCmdSetStencilWriteMask</a> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-09116",
          "text": "If     a shader object is bound to any graphics stage or     the currently bound graphics pipeline was created with     <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code>,     and the format of any color attachment is     <code>VK_FORMAT_E5B9G9R9_UFLOAT_PACK32</code>, the corresponding element of the     <code>pColorWriteMasks</code> parameter of <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a>     <strong class=\"purple\">must</strong> either include all of <code>VK_COLOR_COMPONENT_R_BIT</code>,     <code>VK_COLOR_COMPONENT_G_BIT</code>, and <code>VK_COLOR_COMPONENT_B_BIT</code>, or     none of them",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-maxFragmentDualSrcAttachments-09239",
          "text": "If <a href=\"#framebuffer-blending\">blending</a> is enabled for any attachment where either the source or destination blend factors for that attachment <a href=\"#framebuffer-dsb\">use the secondary color input</a>, the maximum value of <code>Location</code> for any output attachment <a href=\"#shaders-staticuse\">statically used</a> in the <code>Fragment</code> <code>Execution</code> <code>Model</code> executed by this command <strong class=\"purple\">must</strong> be less than <a href=\"#limits-maxFragmentDualSrcAttachments\"><code>maxFragmentDualSrcAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-09548",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and there is no shader object bound to any graphics stage, the value of each element of <a href=\"#VkRenderingAttachmentLocationInfoKHR\">VkRenderingAttachmentLocationInfoKHR</a>::<code>pColorAttachmentLocations</code> set by <a href=\"#vkCmdSetRenderingAttachmentLocationsKHR\">vkCmdSetRenderingAttachmentLocationsKHR</a> <strong class=\"purple\">must</strong> match the value set for the corresponding element in the currently bound pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-09549",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and there is no shader object bound to any graphics stage, input attachment index mappings in the currently bound pipeline <strong class=\"purple\">must</strong> match those set for the current render pass instance via <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-09642",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with the <code>VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT</code> flag, the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-09643",
          "text": "If the bound graphics pipeline was created with <code>VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT</code>, the current render pass <strong class=\"purple\">must</strong> have begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with the <code>VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT</code> flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-commandBuffer-02712",
          "text": "If <code>commandBuffer</code> is a protected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, any resource written to by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be an unprotected resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-commandBuffer-02713",
          "text": "If <code>commandBuffer</code> is a protected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, pipeline stages other than the framebuffer-space and compute stages in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not write to any resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-commandBuffer-04617",
          "text": "If any of the shader stages of the <code>VkPipeline</code> bound to the pipeline bind point used by this command uses the <a href=\"#spirvenv-capabilities-table-RayQueryKHR\"><code>RayQueryKHR</code></a> capability, then <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-04007",
          "text": "All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> buffers bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-04008",
          "text": "If the <a href=\"#features-nullDescriptor\"><code>nullDescriptor</code></a> feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-02721",
          "text": "If <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> is not enabled, and that pipeline was created without enabling <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> for <code>vertexInputs</code>, then 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-07842",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY</code> dynamic state enabled     then <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> <strong class=\"purple\">must</strong> have been called and not     subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current     command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-dynamicPrimitiveTopologyUnrestricted-07500",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY</code> dynamic state enabled and the <a href=\"#limits-dynamicPrimitiveTopologyUnrestricted\"><code>dynamicPrimitiveTopologyUnrestricted</code></a> is <code>VK_FALSE</code>, then the <code>primitiveTopology</code> parameter of <code>vkCmdSetPrimitiveTopology</code> <strong class=\"purple\">must</strong> be of the same <a href=\"#drawing-primitive-topology-class\">topology class</a> as the pipeline <a href=\"#VkPipelineInputAssemblyStateCreateInfo\">VkPipelineInputAssemblyStateCreateInfo</a>::<code>topology</code> state",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-pStrides-04913",
          "text": "If the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE</code> dynamic state enabled, but without the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdBindVertexBuffers2\">vkCmdBindVertexBuffers2</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this draw command, and the <code>pStrides</code> parameter of <a href=\"#vkCmdBindVertexBuffers2\">vkCmdBindVertexBuffers2</a> <strong class=\"purple\">must</strong> not be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-04914",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     then <a href=\"#vkCmdSetVertexInputEXT\">vkCmdSetVertexInputEXT</a> <strong class=\"purple\">must</strong> have been called and not     subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current     command buffer prior to this draw command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-Input-07939",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     then all variables with the <code>Input</code> storage class decorated with     <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code>     <strong class=\"purple\">must</strong> contain a location in     <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>location</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-Input-08734",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     and either <a href=\"#features-legacyVertexAttributes\"><code>legacyVertexAttributes</code></a> is not enabled or the SPIR-V Type     associated with a given <code>Input</code> variable of the corresponding     <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code> is     64-bit,     then the numeric type associated with all <code>Input</code> variables of the     corresponding <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code>     <code>OpEntryPoint</code> <strong class=\"purple\">must</strong> be the same as     <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>format</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-format-08936",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     and <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>format</code> has a     64-bit component, then the scalar width associated with all <code>Input</code>     variables of the corresponding <code>Location</code> in the <code>Vertex</code>     <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code> <strong class=\"purple\">must</strong> be 64-bit",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-format-08937",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     and the scalar width associated with a <code>Location</code> decorated     <code>Input</code> variable in the <code>Vertex</code> <code>Execution</code> <code>Model</code>     <code>OpEntryPoint</code> is 64-bit, then the corresponding     <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>format</code> <strong class=\"purple\">must</strong> have a     64-bit component",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-09203",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     and <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>format</code> has a     64-bit component, then all <code>Input</code> variables at the corresponding     <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code>     <strong class=\"purple\">must</strong> not use components that are not present in the format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-04875",
          "text": "If     there is a shader object bound to the     <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT</code> dynamic state enabled,     and the <a href=\"#dynamic-state-current-value\">current value</a> of     <code>primitiveTopology</code> is <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, then     <a href=\"#vkCmdSetPatchControlPointsEXT\">vkCmdSetPatchControlPointsEXT</a> <strong class=\"purple\">must</strong> have been called and not     subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current     command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-04879",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE</code> dynamic state enabled     then <a href=\"#vkCmdSetPrimitiveRestartEnable\">vkCmdSetPrimitiveRestartEnable</a> <strong class=\"purple\">must</strong> have been called and not     subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current     command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-09637",
          "text": "If     the <a href=\"#features-primitiveTopologyListRestart\"><code>primitiveTopologyListRestart</code></a> feature is not enabled,     the topology 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>, or     <code>VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY</code>,     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE</code> dynamic state enabled     then <a href=\"#vkCmdSetPrimitiveRestartEnable\">vkCmdSetPrimitiveRestartEnable</a> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-stage-06481",
          "text": "The bound graphics pipeline <strong class=\"purple\">must</strong> not have been created with the <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a>::<code>stage</code> member of an element of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> set to <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-08885",
          "text": "There <strong class=\"purple\">must</strong> be no shader object bound to either of the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-pNext-09461",
          "text": "If the bound graphics pipeline state was created with <a href=\"#VkPipelineVertexInputDivisorStateCreateInfoKHR\">VkPipelineVertexInputDivisorStateCreateInfoKHR</a> in the <code>pNext</code> chain of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pVertexInputState</code>, any member of <a href=\"#VkPipelineVertexInputDivisorStateCreateInfoKHR\">VkPipelineVertexInputDivisorStateCreateInfoKHR</a>::<code>pVertexBindingDivisors</code> has a value other than <code>1</code> in <code>divisor</code>, and <a href=\"#VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR\">VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR</a>::<code>supportsNonZeroFirstInstance</code> is <code>VK_FALSE</code>, then <code>firstInstance</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-None-09462",
          "text": "If <a href=\"#shaders-objects\">shader objects</a> are used for drawing or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled, any member of the <code>pVertexBindingDescriptions</code> parameter to the <a href=\"#vkCmdSetVertexInputEXT\">vkCmdSetVertexInputEXT</a> call that sets this dynamic state has a value other than <code>1</code> in <code>divisor</code>, and <a href=\"#VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR\">VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR</a>::<code>supportsNonZeroFirstInstance</code> is <code>VK_FALSE</code>, then <code>firstInstance</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDraw-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdDrawIndexed": {
      "core": [
        {
          "vuid": "VUID-vkCmdDrawIndexed-magFilter-04553",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-magFilter-09598",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-mipmapMode-04770",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-mipmapMode-09599",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-unnormalizedCoordinates-09635",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>levelCount</code> and <code>layerCount</code> <strong class=\"purple\">must</strong> be 1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-unnormalizedCoordinates-09636",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_VIEW_TYPE_1D</code> or <code>VK_IMAGE_VIEW_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-06479",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is sampled with <a href=\"#textures-depth-compare-operation\">depth comparison</a>, 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_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-02691",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed using atomic operations as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07888",
          "text": "If a <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> descriptor is accessed using atomic operations as a result of this command, then the storage texel buffer&#8217;s <a href=\"#resources-buffer-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-02692",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-02693",
          "text": "If the <a href=\"#VK_EXT_filter_cubic\">VK_EXT_filter_cubic</a> extension is not enabled and any <a href=\"#VkImageView\">VkImageView</a> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, it <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-filterCubic-02694",
          "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 <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubic</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-filterCubicMinmax-02695",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubicMinmax</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-cubicRangeClamp-09212",
          "text": "If the <a href=\"#features-filter-cubic-range-clamp\"><code>cubicRangeClamp</code></a> feature is not enabled, then 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=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-reductionMode-09213",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with a <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code> as a result of this command <strong class=\"purple\">must</strong> sample with <code>VK_FILTER_CUBIC_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-selectableCubicWeights-09214",
          "text": "If the <a href=\"#features-filter-cubic-weight-selection\"><code>selectableCubicWeights</code></a> feature is not enabled, then 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 href=\"#VkSamplerCubicWeightsCreateInfoQCOM\">VkSamplerCubicWeightsCreateInfoQCOM</a>::<code>cubicWeights</code> equal to <code>VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-flags-02696",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-OpTypeImage-07027",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being written as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-OpTypeImage-07028",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being read as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-OpTypeImage-07029",
          "text": "For any <a href=\"#VkBufferView\">VkBufferView</a> being written as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-OpTypeImage-07030",
          "text": "Any <a href=\"#VkBufferView\">VkBufferView</a> being read as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code> then the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08600",
          "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08601",
          "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-10068",
          "text": "For each array of resources that is used by <a href=\"#shaders-binding\">a bound shader</a>, the indices used to access members of the array <strong class=\"purple\">must</strong> be less than the descriptor count for the identified binding in the descriptor sets used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-maintenance4-08602",
          "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08114",
          "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08115",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created without <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08116",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08604",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08117",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08119",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkPipeline\">VkPipeline</a> created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08605",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkShaderEXT\">VkShaderEXT</a> created with a <code>VkDescriptorSetLayout</code> that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08606",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is not enabled, a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08608",
          "text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state specified statically in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08609",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <a href=\"#VkImage\">VkImage</a> with a <a href=\"#VkImageView\">VkImageView</a> 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08610",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08611",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08607",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-uniformBuffers-06935",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08612",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-storageBuffers-06936",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>storageBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08613",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-02707",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, any resource accessed by <a href=\"#shaders-binding\">bound shaders</a> <strong class=\"purple\">must</strong> not be a protected resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-06550",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> only be used with <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-ConstOffset-06551",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> not use the <code>ConstOffset</code> and <code>Offset</code> operands",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-viewType-07752",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> match the <code>Dim</code> operand of the <code>OpTypeImage</code> as described in <a href=\"#spirvenv-image-dimensions\">Compatibility Between SPIR-V Image Dimensions and Vulkan ImageView Types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-format-07753",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the <a href=\"#formats-numericformat\">numeric type</a> of the image view&#8217;s <code>format</code> and the <code>Sampled</code> <code>Type</code> operand of the <code>OpTypeImage</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-OpImageWrite-08795",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with a format other than <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-OpImageWrite-08796",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with the format <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have four components",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-OpImageWrite-04469",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the buffer view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-SampledType-04470",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-SampledType-04471",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-SampledType-04472",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-SampledType-04473",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-sparseImageInt64Atomics-04474",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-sparseImageInt64Atomics-04475",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-OpImageWeightedSampleQCOM-06971",
          "text": "If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-OpImageWeightedSampleQCOM-06972",
          "text": "If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image 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_2_WEIGHT_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-OpImageBoxFilterQCOM-06973",
          "text": "If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-OpImageBlockMatchSSDQCOM-06974",
          "text": "If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-OpImageBlockMatchSADQCOM-06975",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-OpImageBlockMatchSADQCOM-06976",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-OpImageWeightedSampleQCOM-06977",
          "text": "If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-OpImageWeightedSampleQCOM-06978",
          "text": "If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-OpImageBlockMatchWindow-09215",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-OpImageBlockMatchWindow-09216",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s format <strong class=\"purple\">must</strong> be a single-component format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-OpImageBlockMatchWindow-09217",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07288",
          "text": "Any shader invocation executed by this command <strong class=\"purple\">must</strong> <a href=\"#shaders-termination\">terminate</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-09600",
          "text": "If a descriptor with type equal to any of <code>VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> is accessed as a result of this command, the image subresource identified by that descriptor <strong class=\"purple\">must</strong> be in the image layout identified when the descriptor was written",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-renderPass-02684",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-subpass-02685",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07748",
          "text": "If any shader statically accesses an input attachment, a valid descriptor <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-OpTypeImage-07468",
          "text": "If any shader executed by this pipeline accesses an <code>OpTypeImage</code> variable with a <code>Dim</code> operand of <code>SubpassData</code>, it <strong class=\"purple\">must</strong> be decorated with an <code>InputAttachmentIndex</code> that corresponds to a valid input attachment in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07469",
          "text": "Input attachment views accessed in a subpass <strong class=\"purple\">must</strong> be created with the same <a href=\"#VkFormat\">VkFormat</a> as the corresponding subpass definition, and be created with a <a href=\"#VkImageView\">VkImageView</a> that is compatible with the attachment referenced by the subpass' <code>pInputAttachments</code>[<code>InputAttachmentIndex</code>] in the currently bound <a href=\"#VkFramebuffer\">VkFramebuffer</a> as specified by <a href=\"#compatibility-inputattachment\">Fragment Input Attachment Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-pDepthInputAttachmentIndex-09595",
          "text": "Input attachment views accessed in a dynamic render pass with a <code>InputAttachmentIndex</code> referenced by <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>, or no <code>InputAttachmentIndex</code> if <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pDepthInputAttachmentIndex</code> or <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pStencilInputAttachmentIndex</code> are <code>NULL</code>, <strong class=\"purple\">must</strong> be created with a <a href=\"#VkImageView\">VkImageView</a> that is compatible with the corresponding color, depth, or stencil attachment in <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-pDepthInputAttachmentIndex-09596",
          "text": "Input attachment views accessed in a dynamic render pass via a shader object <strong class=\"purple\">must</strong> have an <code>InputAttachmentIndex</code> if both <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pDepthInputAttachmentIndex</code> and <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pStencilInputAttachmentIndex</code> are non-<code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-InputAttachmentIndex-09597",
          "text": "If an input attachment view accessed in a dynamic render pass via a shader object has an <code>InputAttachmentIndex</code>, the <code>InputAttachmentIndex</code> <strong class=\"purple\">must</strong> match an index in <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-06537",
          "text": "Memory backing image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be written in any way other than as an attachment by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-09000",
          "text": "If a color attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe <code>VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code> is\nset on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_COLOR_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-09001",
          "text": "If a depth attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe\n<code>VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code>\nis set on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_DEPTH_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-09002",
          "text": "If a stencil attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe\n<code>VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code>\nis set on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_STENCIL_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-09003",
          "text": "If an attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment, storage image, or sampled image by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-06539",
          "text": "If any previously recorded command in the current subpass accessed an image subresource used as an attachment in this subpass in any way other than as an attachment, this command <strong class=\"purple\">must</strong> not write to that image subresource as an attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-06886",
          "text": "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, <a href=\"#fragops-depth-write\">depth writes</a> <strong class=\"purple\">must</strong> be disabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-06887",
          "text": "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back <code>writeMask</code> are not zero, and stencil test is enabled, <a href=\"#fragops-stencil\">all stencil ops</a> <strong class=\"purple\">must</strong> be <code>VK_STENCIL_OP_KEEP</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07831",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT</code> dynamic state enabled then <a href=\"#vkCmdSetViewport\">vkCmdSetViewport</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07832",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR</code> dynamic state enabled then <a href=\"#vkCmdSetScissor\">vkCmdSetScissor</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07833",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_WIDTH</code> dynamic state enabled then <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08617",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08618",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08619",
          "text": "If a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07834",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthBiasEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthBounds\">vkCmdSetDepthBounds</a> or <a href=\"#vkCmdSetDepthBias2EXT\">vkCmdSetDepthBias2EXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07835",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_BLEND_CONSTANTS</code> dynamic state enabled then <a href=\"#vkCmdSetBlendConstants\">vkCmdSetBlendConstants</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08621",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> in the current command buffer set any element of <code>pColorBlendEnables</code> to <code>VK_TRUE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> in the current command buffer set the same element of <code>pColorBlendEquations</code> to a <code>VkColorBlendEquationEXT</code> structure with any <a href=\"#VkBlendFactor\">VkBlendFactor</a> member with a value of <code>VK_BLEND_FACTOR_CONSTANT_COLOR</code>, <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR</code>, <code>VK_BLEND_FACTOR_CONSTANT_ALPHA</code>, or <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA</code>, <a href=\"#vkCmdSetBlendConstants\">vkCmdSetBlendConstants</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07836",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthBoundsTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthBounds\">vkCmdSetDepthBounds</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07837",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilCompareMask\">vkCmdSetStencilCompareMask</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07838",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilWriteMask\">vkCmdSetStencilWriteMask</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07839",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_REFERENCE</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of and <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilReference\">vkCmdSetStencilReference</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-maxMultiviewInstanceIndex-02688",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-sampleLocationsEnable-02689",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-06666",
          "text": "If the <code><a href=\"#VK_EXT_sample_locations\">VK_EXT_sample_locations</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07840",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_CULL_MODE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCullMode\">vkCmdSetCullMode</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07841",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_FRONT_FACE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetFrontFace\">vkCmdSetFrontFace</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07843",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, <a href=\"#vkCmdSetDepthTestEnable\">vkCmdSetDepthTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07844",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthWriteEnable\">vkCmdSetDepthWriteEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07845",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_COMPARE_OP</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthCompareOp\">vkCmdSetDepthCompareOp</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07846",
          "text": "If the <a href=\"#features-depthBounds\"><code>depthBounds</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthBoundsTestEnable\">vkCmdSetDepthBoundsTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07847",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetStencilTestEnable\">vkCmdSetStencilTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07848",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_OP</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilOp\">vkCmdSetStencilOp</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-viewportCount-03417",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-scissorCount-03418",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, then <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-viewportCount-03419",
          "text": "If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> and <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08635",
          "text": "If a shader object is bound to any graphics stage, then both <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> and <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-viewportCount-04137",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-viewportCount-04138",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08636",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-viewportCount-04139",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-shadingRateImage-09233",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV</code> and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-shadingRateImage-09234",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08637",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-VkPipelineVieportCreateInfo-04141",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled and a <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> structure chained from <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-VkPipelineVieportCreateInfo-04142",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled and a <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> structure chained from <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07878",
          "text": "If the <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetExclusiveScissorEnableNV\">vkCmdSetExclusiveScissorEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07879",
          "text": "If the <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV</code> dynamic state enabled, and the most recent call to <a href=\"#vkCmdSetExclusiveScissorEnableNV\">vkCmdSetExclusiveScissorEnableNV</a> in the current command buffer set any element of <code>pExclusiveScissorEnables</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetExclusiveScissorNV\">vkCmdSetExclusiveScissorNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-04876",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-04877",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthBiasEnable\">vkCmdSetDepthBiasEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-logicOp-04878",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_LOGIC_OP_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>logicOpEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetLogicOpEXT\">vkCmdSetLogicOpEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-primitiveFragmentShadingRateWithMultipleViewports-04552",
          "text": "If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-primitiveFragmentShadingRateWithMultipleViewports-08642",
          "text": "If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, and any shader object bound to a graphics stage writes to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-blendEnable-04727",
          "text": "If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the <code>blendEnable</code> member of the corresponding element of the <code>pAttachments</code> member of <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08643",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then for each color attachment in the render pass, if the corresponding image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the corresponding member of <code>pColorBlendEnables</code> in the most recent call to <code>vkCmdSetColorBlendEnableEXT</code> in the current command buffer that affected that attachment index <strong class=\"purple\">must</strong> have been <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-multisampledRenderToSingleSampled-07284",
          "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then <code>rasterizationSamples</code> for the currently bound graphics pipeline\n<strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil\nattachments</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08644",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the\ncurrent command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the\nsame as the number of samples for the current render pass color and/or\ndepth/stencil attachments</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08876",
          "text": "If a shader object is bound to any graphics stage, the current render pass instance <strong class=\"purple\">must</strong> have been begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-imageView-06172",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-imageView-06173",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-imageView-06174",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-imageView-06175",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-imageView-06176",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-imageView-06177",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-viewMask-06178",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>viewMask</code> equal to <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>viewMask</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-colorAttachmentCount-06179",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>colorAttachmentCount</code> equal to <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-08910",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-08912",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-08911",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-colorAttachmentCount-09362",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, there is no shader object bound to any graphics stage, and a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>resolveImageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with an image created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value equal to the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-09363",
          "text": "If there is no shader object bound to any graphics stage, the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, and a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with an image created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value equal to the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-09364",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have set the blend enable to <code>VK_FALSE</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-09365",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to <code>VK_SAMPLE_COUNT_1_BIT</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-09366",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have set blend enable to <code>VK_FALSE</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-rasterizationSamples-09367",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to <code>VK_SAMPLE_COUNT_1_BIT</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-09368",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;width</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-09369",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;height</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-pFragmentSize-09370",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;width</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-pFragmentSize-09371",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;height</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07749",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteEnableEXT\">vkCmdSetColorWriteEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08646",
          "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is enabled on the device, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorWriteEnableEXT\">vkCmdSetColorWriteEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-attachmentCount-07750",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code> dynamic state enabled then the <code>attachmentCount</code> parameter of <code>vkCmdSetColorWriteEnableEXT</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>VkPipelineColorBlendStateCreateInfo</code>::<code>attachmentCount</code> of the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08647",
          "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is enabled on the device, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then the <code>attachmentCount</code> parameter of most recent call to <code>vkCmdSetColorWriteEnableEXT</code> in the current command buffer <strong class=\"purple\">must</strong> be greater than or equal to the number of color attachments in the current render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07751",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleEXT\">vkCmdSetDiscardRectangleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command for each discard rectangle in <a href=\"#VkPipelineDiscardRectangleStateCreateInfoEXT\">VkPipelineDiscardRectangleStateCreateInfoEXT</a>::<code>discardRectangleCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07880",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-rasterizerDiscardEnable-09236",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> in the current command buffer set <code>discardRectangleEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDiscardRectangleEXT\">vkCmdSetDiscardRectangleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08648",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07881",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleModeEXT\">vkCmdSetDiscardRectangleModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08649",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> in the current command buffer set <code>discardRectangleEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDiscardRectangleModeEXT\">vkCmdSetDiscardRectangleModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-08913",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-08914",
          "text": "If current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-08915",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline was not equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>, the value of the format <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-08916",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-08917",
          "text": "If current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-dynamicRenderingUnusedAttachments-08918",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline was not equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>, the value of the format <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-imageView-06183",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a>::<code>imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-imageView-06184",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingFragmentDensityMapAttachmentInfoEXT\">VkRenderingFragmentDensityMapAttachmentInfoEXT</a>::<code>imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-colorAttachmentCount-06185",
          "text": "If the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the corresponding element of the <code>pColorAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-pDepthAttachment-06186",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-pStencilAttachment-06187",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-multisampledRenderToSingleSampled-07285",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     the current render pass instance was begun with     <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than     <code>0</code>, then each element of the     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a     <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been     created with a sample count equal to the value of     <code>rasterizationSamples</code> for the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-multisampledRenderToSingleSampled-07286",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not     <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the     currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count     used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-multisampledRenderToSingleSampled-07287",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not     <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the     currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count     used to create     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-pNext-07935",
          "text": "If this command has been called inside a render pass instance started with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and the <code>pNext</code> chain of <a href=\"#VkRenderingInfo\">VkRenderingInfo</a> includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a>::<code>rasterizationSamples</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-renderPass-06198",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>renderPass</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-pColorAttachments-08963",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound with a fragment shader that statically writes to a color attachment, the color write mask is not zero, color writes are enabled, and the corresponding element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-pDepthAttachment-08964",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound, depth test is enabled, depth write is enabled, and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-pStencilAttachment-08965",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound, stencil test is enabled and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-primitivesGeneratedQueryWithRasterizerDiscard-06708",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithRasterizerDiscard\"><code>primitivesGeneratedQueryWithRasterizerDiscard</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, <a href=\"#primsrast-discard\">rasterization discard</a> <strong class=\"purple\">must</strong> not be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-primitivesGeneratedQueryWithNonZeroStreams-06709",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, the bound graphics pipeline <strong class=\"purple\">must</strong> not have been created with a non-zero value in <code>VkPipelineRasterizationStateStreamCreateInfoEXT</code>::<code>rasterizationStream</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07619",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetTessellationDomainOriginEXT\">vkCmdSetTessellationDomainOriginEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07620",
          "text": "If the <a href=\"#features-depthClamp\"><code>depthClamp</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthClampEnableEXT\">vkCmdSetDepthClampEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07621",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_POLYGON_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07622",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07623",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-alphaToCoverageEnable-08919",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic state enabled, and <code>alphaToCoverageEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-alphaToCoverageEnable-08920",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a> in the current command buffer set <code>alphaToCoverageEnable</code> to <code>VK_TRUE</code>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07624",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07625",
          "text": "If the <a href=\"#features-alphaToOne\"><code>alphaToOne</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAlphaToOneEnableEXT\">vkCmdSetAlphaToOneEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07626",
          "text": "If the <a href=\"#features-logicOp\"><code>logicOp</code></a> feature is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLogicOpEnableEXT\">vkCmdSetLogicOpEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07627",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08657",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07628",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08658",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> for any attachment set that attachment&#8217;s value in <code>pColorBlendEnables</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07629",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08659",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07630",
          "text": "If the <a href=\"#features-geometryStreams\"><code>geometryStreams</code></a> feature is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizationStreamEXT\">vkCmdSetRasterizationStreamEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07631",
          "text": "If the <code><a href=\"#VK_EXT_conservative_rasterization\">VK_EXT_conservative_rasterization</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetConservativeRasterizationModeEXT\">vkCmdSetConservativeRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07632",
          "text": "If the <code><a href=\"#VK_EXT_conservative_rasterization\">VK_EXT_conservative_rasterization</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>conservativeRasterizationMode</code> is <code>VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT</code>, then <a href=\"#vkCmdSetExtraPrimitiveOverestimationSizeEXT\">vkCmdSetExtraPrimitiveOverestimationSizeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07633",
          "text": "If the <a href=\"#features-depthClipEnable\"><code>depthClipEnable</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT</code> dynamic state, then <a href=\"#vkCmdSetDepthClipEnableEXT\">vkCmdSetDepthClipEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07634",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08664",
          "text": "If the <code><a href=\"#VK_EXT_sample_locations\">VK_EXT_sample_locations</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07635",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-rasterizerDiscardEnable-09416",
          "text": "If the <code><a href=\"#VK_EXT_blend_operation_advanced\">VK_EXT_blend_operation_advanced</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then at least one of <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> and <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07636",
          "text": "If the <code><a href=\"#VK_EXT_provoking_vertex\">VK_EXT_provoking_vertex</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetProvokingVertexModeEXT\">vkCmdSetProvokingVertexModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07637",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08666",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08667",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08668",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07638",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08669",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08670",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08671",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07849",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_KHR</code>     dynamic state enabled then <a href=\"#vkCmdSetLineStippleKHR\">vkCmdSetLineStippleKHR</a>     <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing     command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08672",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> in the current command buffer set <code>stippledLineEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetLineStippleEXT\">vkCmdSetLineStippleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07639",
          "text": "If the <a href=\"#features-depthClipControl\"><code>depthClipControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetDepthClipNegativeOneToOneEXT\">vkCmdSetDepthClipNegativeOneToOneEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-09650",
          "text": "If the <a href=\"#features-depthClampControl\"><code>depthClampControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthClampEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthClampRangeEXT\">vkCmdSetDepthClampRangeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07640",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07641",
          "text": "If the <code><a href=\"#VK_NV_viewport_swizzle\">VK_NV_viewport_swizzle</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07642",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07643",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageToColorEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07644",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageModulationModeNV\">vkCmdSetCoverageModulationModeNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07645",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageModulationMode</code> is any value other than <code>VK_COVERAGE_MODULATION_MODE_NONE_NV</code>, then <a href=\"#vkCmdSetCoverageModulationTableEnableNV\">vkCmdSetCoverageModulationTableEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07646",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageModulationTableEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetCoverageModulationTableNV\">vkCmdSetCoverageModulationTableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07647",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-pipelineFragmentShadingRate-09238",
          "text": "If the <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a> feature is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07648",
          "text": "If the <a href=\"#features-representativeFragmentTest\"><code>representativeFragmentTest</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetRepresentativeFragmentTestEnableNV\">vkCmdSetRepresentativeFragmentTestEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07649",
          "text": "If the <a href=\"#features-coverageReductionMode\"><code>coverageReductionMode</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageReductionModeNV\">vkCmdSetCoverageReductionModeNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-pColorBlendEnables-07470",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> state enabled and the last call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> set <code>pColorBlendEnables</code> for any attachment to <code>VK_TRUE</code>, then for those attachments in the subpass the corresponding 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_BLEND_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-rasterizationSamples-07471",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> follow the rules for a <a href=\"#renderpass-noattachments\">zero-attachment subpass</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-samples-07472",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, then the <code>samples</code> parameter in the last call to <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> be greater or equal to the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a>::<code>rasterizationSamples</code> parameter used to create the bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-samples-07473",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> state and <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> states enabled, then the <code>samples</code> parameter in the last call to <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> be greater or equal to the <code>rasterizationSamples</code> parameter in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-rasterizationSamples-07474",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and neither the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> nor the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extensions are enabled, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil attachments",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-09211",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, or a shader object is bound to any graphics stage, and the current render pass instance includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> be the same as the <code>rasterizationSamples</code> member of that structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-firstAttachment-07476",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEnableEXT</code> calls <strong class=\"purple\">must</strong> specify an enable for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-rasterizerDiscardEnable-09417",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEnableEXT</code> calls <strong class=\"purple\">must</strong> specify an enable for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-firstAttachment-07477",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEquationEXT</code> calls <strong class=\"purple\">must</strong> specify the blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-rasterizerDiscardEnable-09418",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEquationEXT</code> calls <strong class=\"purple\">must</strong> specify the blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-firstAttachment-07478",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorWriteMaskEXT</code> calls <strong class=\"purple\">must</strong> specify the color write mask for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-rasterizerDiscardEnable-09419",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorWriteMaskEXT</code> calls <strong class=\"purple\">must</strong> specify the color write mask for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-firstAttachment-07479",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendAdvancedEXT</code> calls <strong class=\"purple\">must</strong> specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-advancedBlendMaxColorAttachments-07480",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> and <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic states enabled and the last calls to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> and <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> have enabled advanced blending, then the number of active color attachments in the current subpass <strong class=\"purple\">must</strong> not exceed <a href=\"#limits-advancedBlendMaxColorAttachments\"><code>advancedBlendMaxColorAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-primitivesGeneratedQueryWithNonZeroStreams-07481",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, and the bound graphics pipeline was created with <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code> state enabled, the last call to <a href=\"#vkCmdSetRasterizationStreamEXT\">vkCmdSetRasterizationStreamEXT</a> <strong class=\"purple\">must</strong> have set the <code>rasterizationStream</code> to zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-sampleLocationsPerPixel-07482",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-sampleLocationsPerPixel-07483",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-sampleLocationsEnable-07484",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-sampleLocationsEnable-07485",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, then the <code>sampleLocationsInfo.sampleLocationGridSize.width</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-sampleLocationsEnable-07486",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, then the <code>sampleLocationsInfo.sampleLocationGridSize.height</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-sampleLocationsEnable-07487",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, the fragment shader code <strong class=\"purple\">must</strong> not statically use the extended instruction <code>InterpolateAtSample</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-sampleLocationsEnable-07936",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <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 the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-sampleLocationsEnable-07937",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <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 the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-sampleLocationsEnable-07938",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-coverageModulationTableEnable-07488",
          "text": "If a shader object is bound to any graphics stage or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code> state enabled, and the last call to <a href=\"#vkCmdSetCoverageModulationTableEnableNV\">vkCmdSetCoverageModulationTableEnableNV</a> set <code>coverageModulationTableEnable</code> to <code>VK_TRUE</code>, then the <code>coverageModulationTableCount</code> parameter in the last call to <a href=\"#vkCmdSetCoverageModulationTableNV\">vkCmdSetCoverageModulationTableNV</a> <strong class=\"purple\">must</strong> equal the current <code>rasterizationSamples</code> divided by the number of color samples in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-rasterizationSamples-07489",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current <code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be the same as the sample count of the depth/stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-coverageToColorEnable-07490",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> state enabled and the last call to <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> set the <code>coverageToColorEnable</code> to <code>VK_TRUE</code>, then the current subpass <strong class=\"purple\">must</strong> have a color attachment at the location selected by the last call to <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-rasterizerDiscardEnable-09420",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the last call to <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> set the <code>coverageToColorEnable</code> to <code>VK_TRUE</code>, then the current subpass <strong class=\"purple\">must</strong> have a color attachment at the location selected by the last call to <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-coverageReductionMode-07491",
          "text": "If this <code><a href=\"#VK_NV_coverage_reduction_mode\">VK_NV_coverage_reduction_mode</a></code> extension is enabled, the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> and <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> states enabled, the current coverage reduction mode <code>coverageReductionMode</code>, then the current <code>rasterizationSamples</code>, and the sample counts for the color and depth/stencil attachments (if the subpass has them) <strong class=\"purple\">must</strong> be a valid combination returned by <a href=\"#vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV\">vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-viewportCount-07492",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-viewportCount-07493",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-viewportCount-09421",
          "text": "If the <code><a href=\"#VK_NV_viewport_swizzle\">VK_NV_viewport_swizzle</a></code> extension is enabled, and a shader object is bound to any graphics stage, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-rasterizationSamples-07494",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, and if the current subpass has any color attachments and <code>rasterizationSamples</code> of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> is greater than the number of color samples, then the pipeline <code>sampleShadingEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-stippledLineEnable-07495",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-stippledLineEnable-07496",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR</code>, then the <a href=\"#features-stippledBresenhamLines\"><code>stippledBresenhamLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-stippledLineEnable-07497",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR</code>, then the <a href=\"#features-stippledSmoothLines\"><code>stippledSmoothLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-stippledLineEnable-07498",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_DEFAULT_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled and <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>strictLines</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-conservativePointAndLineRasterization-07499",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code> dynamic state enabled, <a href=\"#limits-conservativePointAndLineRasterization\"><code>conservativePointAndLineRasterization</code></a> is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the <code>conservativeRasterizationMode</code> set by the last call to <a href=\"#vkCmdSetConservativeRasterizationModeEXT\">vkCmdSetConservativeRasterizationModeEXT</a> <strong class=\"purple\">must</strong> be <code>VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-stage-07073",
          "text": "If the currently bound pipeline was created with the <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a>::<code>stage</code> member of an element of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> set to <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>, then <a href=\"#queries-mesh-shader\">Mesh Shader Queries</a> <strong class=\"purple\">must</strong> not be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08877",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07850",
          "text": "If dynamic state was inherited from <a href=\"#VkCommandBufferInheritanceViewportScissorInfoNV\">VkCommandBufferInheritanceViewportScissorInfoNV</a>, it <strong class=\"purple\">must</strong> be set in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08684",
          "text": "If there is no bound graphics pipeline, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_VERTEX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08685",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08686",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08687",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08688",
          "text": "If there is no bound graphics pipeline, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08689",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TASK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08690",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08693",
          "text": "If there is no bound graphics pipeline, and at least one of the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features is enabled, one of the <code>VK_SHADER_STAGE_VERTEX_BIT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stages <strong class=\"purple\">must</strong> have a valid <code>VkShaderEXT</code> bound, and the other <strong class=\"purple\">must</strong> have no <code>VkShaderEXT</code> bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08694",
          "text": "If there is no bound graphics pipeline, and both the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features are enabled, and a valid <code>VkShaderEXT</code> is bound the to the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage, and that <code>VkShaderEXT</code> was created without the <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> flag, a valid <code>VkShaderEXT</code> <strong class=\"purple\">must</strong> be bound to the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08695",
          "text": "If there is no bound graphics pipeline, and both the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features are enabled, and a valid <code>VkShaderEXT</code> is bound the to the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage, and that <code>VkShaderEXT</code> was created with the <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> flag, there <strong class=\"purple\">must</strong> be no <code>VkShaderEXT</code> bound to the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08696",
          "text": "If there is no bound graphics pipeline, and a valid <code>VkShaderEXT</code> is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, there <strong class=\"purple\">must</strong> be no <code>VkShaderEXT</code> bound to either the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage or the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08698",
          "text": "If any graphics shader is bound which was created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag, then all shaders created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag in the same <a href=\"#vkCreateShadersEXT\">vkCreateShadersEXT</a> call <strong class=\"purple\">must</strong> also be bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08699",
          "text": "If any graphics shader is bound which was created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag, any stages in between stages whose shaders which did not create a shader with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag as part of the same <a href=\"#vkCreateShadersEXT\">vkCreateShadersEXT</a> call <strong class=\"purple\">must</strong> not have any <code>VkShaderEXT</code> bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08878",
          "text": "All bound graphics shader objects <strong class=\"purple\">must</strong> have been created with identical or identically defined push constant ranges",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08879",
          "text": "All bound graphics shader objects <strong class=\"purple\">must</strong> have been created with identical or identically defined arrays of descriptor set layouts",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-colorAttachmentCount-09372",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, and a fragment shader is bound, it <strong class=\"purple\">must</strong> not declare the <code>DepthReplacing</code> or <code>StencilRefReplacingEXT</code> execution modes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-pDynamicStates-08715",
          "text": "If the bound graphics pipeline state includes a fragment shader stage, was created with <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpDepthAttachmentReadEXT</code>, the <code>depthWriteEnable</code> parameter in the last call to <a href=\"#vkCmdSetDepthWriteEnable\">vkCmdSetDepthWriteEnable</a> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-pDynamicStates-08716",
          "text": "If the bound graphics pipeline state includes a fragment shader stage, was created with <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpStencilAttachmentReadEXT</code>, the <code>writeMask</code> parameter in the last call to <a href=\"#vkCmdSetStencilWriteMask\">vkCmdSetStencilWriteMask</a> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-09116",
          "text": "If     a shader object is bound to any graphics stage or     the currently bound graphics pipeline was created with     <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code>,     and the format of any color attachment is     <code>VK_FORMAT_E5B9G9R9_UFLOAT_PACK32</code>, the corresponding element of the     <code>pColorWriteMasks</code> parameter of <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a>     <strong class=\"purple\">must</strong> either include all of <code>VK_COLOR_COMPONENT_R_BIT</code>,     <code>VK_COLOR_COMPONENT_G_BIT</code>, and <code>VK_COLOR_COMPONENT_B_BIT</code>, or     none of them",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-maxFragmentDualSrcAttachments-09239",
          "text": "If <a href=\"#framebuffer-blending\">blending</a> is enabled for any attachment where either the source or destination blend factors for that attachment <a href=\"#framebuffer-dsb\">use the secondary color input</a>, the maximum value of <code>Location</code> for any output attachment <a href=\"#shaders-staticuse\">statically used</a> in the <code>Fragment</code> <code>Execution</code> <code>Model</code> executed by this command <strong class=\"purple\">must</strong> be less than <a href=\"#limits-maxFragmentDualSrcAttachments\"><code>maxFragmentDualSrcAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-09548",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and there is no shader object bound to any graphics stage, the value of each element of <a href=\"#VkRenderingAttachmentLocationInfoKHR\">VkRenderingAttachmentLocationInfoKHR</a>::<code>pColorAttachmentLocations</code> set by <a href=\"#vkCmdSetRenderingAttachmentLocationsKHR\">vkCmdSetRenderingAttachmentLocationsKHR</a> <strong class=\"purple\">must</strong> match the value set for the corresponding element in the currently bound pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-09549",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and there is no shader object bound to any graphics stage, input attachment index mappings in the currently bound pipeline <strong class=\"purple\">must</strong> match those set for the current render pass instance via <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-09642",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with the <code>VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT</code> flag, the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-09643",
          "text": "If the bound graphics pipeline was created with <code>VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT</code>, the current render pass <strong class=\"purple\">must</strong> have begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with the <code>VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT</code> flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-02712",
          "text": "If <code>commandBuffer</code> is a protected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, any resource written to by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be an unprotected resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-02713",
          "text": "If <code>commandBuffer</code> is a protected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, pipeline stages other than the framebuffer-space and compute stages in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not write to any resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-04617",
          "text": "If any of the shader stages of the <code>VkPipeline</code> bound to the pipeline bind point used by this command uses the <a href=\"#spirvenv-capabilities-table-RayQueryKHR\"><code>RayQueryKHR</code></a> capability, then <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-04007",
          "text": "All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> buffers bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-04008",
          "text": "If the <a href=\"#features-nullDescriptor\"><code>nullDescriptor</code></a> feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-02721",
          "text": "If <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> is not enabled, and that pipeline was created without enabling <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> for <code>vertexInputs</code>, then 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07842",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY</code> dynamic state enabled     then <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> <strong class=\"purple\">must</strong> have been called and not     subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current     command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-dynamicPrimitiveTopologyUnrestricted-07500",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY</code> dynamic state enabled and the <a href=\"#limits-dynamicPrimitiveTopologyUnrestricted\"><code>dynamicPrimitiveTopologyUnrestricted</code></a> is <code>VK_FALSE</code>, then the <code>primitiveTopology</code> parameter of <code>vkCmdSetPrimitiveTopology</code> <strong class=\"purple\">must</strong> be of the same <a href=\"#drawing-primitive-topology-class\">topology class</a> as the pipeline <a href=\"#VkPipelineInputAssemblyStateCreateInfo\">VkPipelineInputAssemblyStateCreateInfo</a>::<code>topology</code> state",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-pStrides-04913",
          "text": "If the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE</code> dynamic state enabled, but without the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdBindVertexBuffers2\">vkCmdBindVertexBuffers2</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this draw command, and the <code>pStrides</code> parameter of <a href=\"#vkCmdBindVertexBuffers2\">vkCmdBindVertexBuffers2</a> <strong class=\"purple\">must</strong> not be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-04914",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     then <a href=\"#vkCmdSetVertexInputEXT\">vkCmdSetVertexInputEXT</a> <strong class=\"purple\">must</strong> have been called and not     subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current     command buffer prior to this draw command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-Input-07939",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     then all variables with the <code>Input</code> storage class decorated with     <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code>     <strong class=\"purple\">must</strong> contain a location in     <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>location</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-Input-08734",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     and either <a href=\"#features-legacyVertexAttributes\"><code>legacyVertexAttributes</code></a> is not enabled or the SPIR-V Type     associated with a given <code>Input</code> variable of the corresponding     <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code> is     64-bit,     then the numeric type associated with all <code>Input</code> variables of the     corresponding <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code>     <code>OpEntryPoint</code> <strong class=\"purple\">must</strong> be the same as     <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>format</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-format-08936",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     and <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>format</code> has a     64-bit component, then the scalar width associated with all <code>Input</code>     variables of the corresponding <code>Location</code> in the <code>Vertex</code>     <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code> <strong class=\"purple\">must</strong> be 64-bit",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-format-08937",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     and the scalar width associated with a <code>Location</code> decorated     <code>Input</code> variable in the <code>Vertex</code> <code>Execution</code> <code>Model</code>     <code>OpEntryPoint</code> is 64-bit, then the corresponding     <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>format</code> <strong class=\"purple\">must</strong> have a     64-bit component",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-09203",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     and <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>format</code> has a     64-bit component, then all <code>Input</code> variables at the corresponding     <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code>     <strong class=\"purple\">must</strong> not use components that are not present in the format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-04875",
          "text": "If     there is a shader object bound to the     <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT</code> dynamic state enabled,     and the <a href=\"#dynamic-state-current-value\">current value</a> of     <code>primitiveTopology</code> is <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, then     <a href=\"#vkCmdSetPatchControlPointsEXT\">vkCmdSetPatchControlPointsEXT</a> <strong class=\"purple\">must</strong> have been called and not     subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current     command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-04879",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE</code> dynamic state enabled     then <a href=\"#vkCmdSetPrimitiveRestartEnable\">vkCmdSetPrimitiveRestartEnable</a> <strong class=\"purple\">must</strong> have been called and not     subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current     command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-09637",
          "text": "If     the <a href=\"#features-primitiveTopologyListRestart\"><code>primitiveTopologyListRestart</code></a> feature is not enabled,     the topology 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>, or     <code>VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY</code>,     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE</code> dynamic state enabled     then <a href=\"#vkCmdSetPrimitiveRestartEnable\">vkCmdSetPrimitiveRestartEnable</a> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-stage-06481",
          "text": "The bound graphics pipeline <strong class=\"purple\">must</strong> not have been created with the <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a>::<code>stage</code> member of an element of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> set to <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-08885",
          "text": "There <strong class=\"purple\">must</strong> be no shader object bound to either of the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-07312",
          "text": "If <a href=\"#features-maintenance6\"><code>maintenance6</code></a> is not enabled, a valid index buffer <strong class=\"purple\">must</strong> be bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-pNext-09461",
          "text": "If the bound graphics pipeline state was created with <a href=\"#VkPipelineVertexInputDivisorStateCreateInfoKHR\">VkPipelineVertexInputDivisorStateCreateInfoKHR</a> in the <code>pNext</code> chain of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pVertexInputState</code>, any member of <a href=\"#VkPipelineVertexInputDivisorStateCreateInfoKHR\">VkPipelineVertexInputDivisorStateCreateInfoKHR</a>::<code>pVertexBindingDivisors</code> has a value other than <code>1</code> in <code>divisor</code>, and <a href=\"#VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR\">VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR</a>::<code>supportsNonZeroFirstInstance</code> is <code>VK_FALSE</code>, then <code>firstInstance</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-None-09462",
          "text": "If <a href=\"#shaders-objects\">shader objects</a> are used for drawing or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled, any member of the <code>pVertexBindingDescriptions</code> parameter to the <a href=\"#vkCmdSetVertexInputEXT\">vkCmdSetVertexInputEXT</a> call that sets this dynamic state has a value other than <code>1</code> in <code>divisor</code>, and <a href=\"#VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR\">VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR</a>::<code>supportsNonZeroFirstInstance</code> is <code>VK_FALSE</code>, then <code>firstInstance</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-robustBufferAccess2-08798",
          "text": "If <a href=\"#features-robustBufferAccess2\"><code>robustBufferAccess2</code></a> is not enabled, <span class=\"eq\">(<code>indexSize</code> × (<code>firstIndex</code> +  <code>indexCount</code>) +  <code>offset</code>)</span> <strong class=\"purple\">must</strong> be less than or equal to the size of the bound index buffer, with <code>indexSize</code> being based on the type specified by <code>indexType</code>, where the index buffer, <code>indexType</code>, and <code>offset</code> are specified via <code>vkCmdBindIndexBuffer</code> or <code>vkCmdBindIndexBuffer2KHR</code>. If <code>vkCmdBindIndexBuffer2KHR</code> is used to bind the index buffer, the size of the bound index buffer is <a href=\"#vkCmdBindIndexBuffer2KHR\">vkCmdBindIndexBuffer2KHR</a>::<code>size</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexed-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdDrawMultiEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-magFilter-04553",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-magFilter-09598",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-mipmapMode-04770",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-mipmapMode-09599",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-unnormalizedCoordinates-09635",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>levelCount</code> and <code>layerCount</code> <strong class=\"purple\">must</strong> be 1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-unnormalizedCoordinates-09636",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_VIEW_TYPE_1D</code> or <code>VK_IMAGE_VIEW_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-06479",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is sampled with <a href=\"#textures-depth-compare-operation\">depth comparison</a>, 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_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-02691",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed using atomic operations as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07888",
          "text": "If a <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> descriptor is accessed using atomic operations as a result of this command, then the storage texel buffer&#8217;s <a href=\"#resources-buffer-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-02692",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-02693",
          "text": "If the <a href=\"#VK_EXT_filter_cubic\">VK_EXT_filter_cubic</a> extension is not enabled and any <a href=\"#VkImageView\">VkImageView</a> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, it <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-filterCubic-02694",
          "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 <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubic</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-filterCubicMinmax-02695",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubicMinmax</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-cubicRangeClamp-09212",
          "text": "If the <a href=\"#features-filter-cubic-range-clamp\"><code>cubicRangeClamp</code></a> feature is not enabled, then 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=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-reductionMode-09213",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with a <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code> as a result of this command <strong class=\"purple\">must</strong> sample with <code>VK_FILTER_CUBIC_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-selectableCubicWeights-09214",
          "text": "If the <a href=\"#features-filter-cubic-weight-selection\"><code>selectableCubicWeights</code></a> feature is not enabled, then 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 href=\"#VkSamplerCubicWeightsCreateInfoQCOM\">VkSamplerCubicWeightsCreateInfoQCOM</a>::<code>cubicWeights</code> equal to <code>VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-flags-02696",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-OpTypeImage-07027",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being written as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-OpTypeImage-07028",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being read as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-OpTypeImage-07029",
          "text": "For any <a href=\"#VkBufferView\">VkBufferView</a> being written as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-OpTypeImage-07030",
          "text": "Any <a href=\"#VkBufferView\">VkBufferView</a> being read as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code> then the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08600",
          "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08601",
          "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-10068",
          "text": "For each array of resources that is used by <a href=\"#shaders-binding\">a bound shader</a>, the indices used to access members of the array <strong class=\"purple\">must</strong> be less than the descriptor count for the identified binding in the descriptor sets used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-maintenance4-08602",
          "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08114",
          "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08115",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created without <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08116",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08604",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08117",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08119",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkPipeline\">VkPipeline</a> created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08605",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkShaderEXT\">VkShaderEXT</a> created with a <code>VkDescriptorSetLayout</code> that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08606",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is not enabled, a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08608",
          "text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state specified statically in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08609",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <a href=\"#VkImage\">VkImage</a> with a <a href=\"#VkImageView\">VkImageView</a> 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08610",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08611",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08607",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-uniformBuffers-06935",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08612",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-storageBuffers-06936",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>storageBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08613",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-commandBuffer-02707",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, any resource accessed by <a href=\"#shaders-binding\">bound shaders</a> <strong class=\"purple\">must</strong> not be a protected resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-06550",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> only be used with <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-ConstOffset-06551",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> not use the <code>ConstOffset</code> and <code>Offset</code> operands",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-viewType-07752",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> match the <code>Dim</code> operand of the <code>OpTypeImage</code> as described in <a href=\"#spirvenv-image-dimensions\">Compatibility Between SPIR-V Image Dimensions and Vulkan ImageView Types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-format-07753",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the <a href=\"#formats-numericformat\">numeric type</a> of the image view&#8217;s <code>format</code> and the <code>Sampled</code> <code>Type</code> operand of the <code>OpTypeImage</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-OpImageWrite-08795",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with a format other than <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-OpImageWrite-08796",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with the format <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have four components",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-OpImageWrite-04469",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the buffer view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-SampledType-04470",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-SampledType-04471",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-SampledType-04472",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-SampledType-04473",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-sparseImageInt64Atomics-04474",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-sparseImageInt64Atomics-04475",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-OpImageWeightedSampleQCOM-06971",
          "text": "If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-OpImageWeightedSampleQCOM-06972",
          "text": "If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image 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_2_WEIGHT_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-OpImageBoxFilterQCOM-06973",
          "text": "If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-OpImageBlockMatchSSDQCOM-06974",
          "text": "If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-OpImageBlockMatchSADQCOM-06975",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-OpImageBlockMatchSADQCOM-06976",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-OpImageWeightedSampleQCOM-06977",
          "text": "If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-OpImageWeightedSampleQCOM-06978",
          "text": "If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-OpImageBlockMatchWindow-09215",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-OpImageBlockMatchWindow-09216",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s format <strong class=\"purple\">must</strong> be a single-component format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-OpImageBlockMatchWindow-09217",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07288",
          "text": "Any shader invocation executed by this command <strong class=\"purple\">must</strong> <a href=\"#shaders-termination\">terminate</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-09600",
          "text": "If a descriptor with type equal to any of <code>VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> is accessed as a result of this command, the image subresource identified by that descriptor <strong class=\"purple\">must</strong> be in the image layout identified when the descriptor was written",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-renderPass-02684",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-subpass-02685",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07748",
          "text": "If any shader statically accesses an input attachment, a valid descriptor <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-OpTypeImage-07468",
          "text": "If any shader executed by this pipeline accesses an <code>OpTypeImage</code> variable with a <code>Dim</code> operand of <code>SubpassData</code>, it <strong class=\"purple\">must</strong> be decorated with an <code>InputAttachmentIndex</code> that corresponds to a valid input attachment in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07469",
          "text": "Input attachment views accessed in a subpass <strong class=\"purple\">must</strong> be created with the same <a href=\"#VkFormat\">VkFormat</a> as the corresponding subpass definition, and be created with a <a href=\"#VkImageView\">VkImageView</a> that is compatible with the attachment referenced by the subpass' <code>pInputAttachments</code>[<code>InputAttachmentIndex</code>] in the currently bound <a href=\"#VkFramebuffer\">VkFramebuffer</a> as specified by <a href=\"#compatibility-inputattachment\">Fragment Input Attachment Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-pDepthInputAttachmentIndex-09595",
          "text": "Input attachment views accessed in a dynamic render pass with a <code>InputAttachmentIndex</code> referenced by <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>, or no <code>InputAttachmentIndex</code> if <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pDepthInputAttachmentIndex</code> or <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pStencilInputAttachmentIndex</code> are <code>NULL</code>, <strong class=\"purple\">must</strong> be created with a <a href=\"#VkImageView\">VkImageView</a> that is compatible with the corresponding color, depth, or stencil attachment in <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-pDepthInputAttachmentIndex-09596",
          "text": "Input attachment views accessed in a dynamic render pass via a shader object <strong class=\"purple\">must</strong> have an <code>InputAttachmentIndex</code> if both <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pDepthInputAttachmentIndex</code> and <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pStencilInputAttachmentIndex</code> are non-<code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-InputAttachmentIndex-09597",
          "text": "If an input attachment view accessed in a dynamic render pass via a shader object has an <code>InputAttachmentIndex</code>, the <code>InputAttachmentIndex</code> <strong class=\"purple\">must</strong> match an index in <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-06537",
          "text": "Memory backing image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be written in any way other than as an attachment by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-09000",
          "text": "If a color attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe <code>VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code> is\nset on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_COLOR_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-09001",
          "text": "If a depth attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe\n<code>VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code>\nis set on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_DEPTH_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-09002",
          "text": "If a stencil attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe\n<code>VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code>\nis set on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_STENCIL_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-09003",
          "text": "If an attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment, storage image, or sampled image by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-06539",
          "text": "If any previously recorded command in the current subpass accessed an image subresource used as an attachment in this subpass in any way other than as an attachment, this command <strong class=\"purple\">must</strong> not write to that image subresource as an attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-06886",
          "text": "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, <a href=\"#fragops-depth-write\">depth writes</a> <strong class=\"purple\">must</strong> be disabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-06887",
          "text": "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back <code>writeMask</code> are not zero, and stencil test is enabled, <a href=\"#fragops-stencil\">all stencil ops</a> <strong class=\"purple\">must</strong> be <code>VK_STENCIL_OP_KEEP</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07831",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT</code> dynamic state enabled then <a href=\"#vkCmdSetViewport\">vkCmdSetViewport</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07832",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR</code> dynamic state enabled then <a href=\"#vkCmdSetScissor\">vkCmdSetScissor</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07833",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_WIDTH</code> dynamic state enabled then <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08617",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08618",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08619",
          "text": "If a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07834",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthBiasEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthBounds\">vkCmdSetDepthBounds</a> or <a href=\"#vkCmdSetDepthBias2EXT\">vkCmdSetDepthBias2EXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07835",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_BLEND_CONSTANTS</code> dynamic state enabled then <a href=\"#vkCmdSetBlendConstants\">vkCmdSetBlendConstants</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08621",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> in the current command buffer set any element of <code>pColorBlendEnables</code> to <code>VK_TRUE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> in the current command buffer set the same element of <code>pColorBlendEquations</code> to a <code>VkColorBlendEquationEXT</code> structure with any <a href=\"#VkBlendFactor\">VkBlendFactor</a> member with a value of <code>VK_BLEND_FACTOR_CONSTANT_COLOR</code>, <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR</code>, <code>VK_BLEND_FACTOR_CONSTANT_ALPHA</code>, or <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA</code>, <a href=\"#vkCmdSetBlendConstants\">vkCmdSetBlendConstants</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07836",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthBoundsTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthBounds\">vkCmdSetDepthBounds</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07837",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilCompareMask\">vkCmdSetStencilCompareMask</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07838",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilWriteMask\">vkCmdSetStencilWriteMask</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07839",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_REFERENCE</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of and <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilReference\">vkCmdSetStencilReference</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-maxMultiviewInstanceIndex-02688",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-02689",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-06666",
          "text": "If the <code><a href=\"#VK_EXT_sample_locations\">VK_EXT_sample_locations</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07840",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_CULL_MODE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCullMode\">vkCmdSetCullMode</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07841",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_FRONT_FACE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetFrontFace\">vkCmdSetFrontFace</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07843",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, <a href=\"#vkCmdSetDepthTestEnable\">vkCmdSetDepthTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07844",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthWriteEnable\">vkCmdSetDepthWriteEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07845",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_COMPARE_OP</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthCompareOp\">vkCmdSetDepthCompareOp</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07846",
          "text": "If the <a href=\"#features-depthBounds\"><code>depthBounds</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthBoundsTestEnable\">vkCmdSetDepthBoundsTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07847",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetStencilTestEnable\">vkCmdSetStencilTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07848",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_OP</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilOp\">vkCmdSetStencilOp</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-viewportCount-03417",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-scissorCount-03418",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, then <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-viewportCount-03419",
          "text": "If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> and <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08635",
          "text": "If a shader object is bound to any graphics stage, then both <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> and <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-viewportCount-04137",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-viewportCount-04138",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08636",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-viewportCount-04139",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-shadingRateImage-09233",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV</code> and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-shadingRateImage-09234",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08637",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-VkPipelineVieportCreateInfo-04141",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled and a <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> structure chained from <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-VkPipelineVieportCreateInfo-04142",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled and a <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> structure chained from <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07878",
          "text": "If the <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetExclusiveScissorEnableNV\">vkCmdSetExclusiveScissorEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07879",
          "text": "If the <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV</code> dynamic state enabled, and the most recent call to <a href=\"#vkCmdSetExclusiveScissorEnableNV\">vkCmdSetExclusiveScissorEnableNV</a> in the current command buffer set any element of <code>pExclusiveScissorEnables</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetExclusiveScissorNV\">vkCmdSetExclusiveScissorNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-04876",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-04877",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthBiasEnable\">vkCmdSetDepthBiasEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-logicOp-04878",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_LOGIC_OP_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>logicOpEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetLogicOpEXT\">vkCmdSetLogicOpEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-primitiveFragmentShadingRateWithMultipleViewports-04552",
          "text": "If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-primitiveFragmentShadingRateWithMultipleViewports-08642",
          "text": "If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, and any shader object bound to a graphics stage writes to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-blendEnable-04727",
          "text": "If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the <code>blendEnable</code> member of the corresponding element of the <code>pAttachments</code> member of <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08643",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then for each color attachment in the render pass, if the corresponding image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the corresponding member of <code>pColorBlendEnables</code> in the most recent call to <code>vkCmdSetColorBlendEnableEXT</code> in the current command buffer that affected that attachment index <strong class=\"purple\">must</strong> have been <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-multisampledRenderToSingleSampled-07284",
          "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then <code>rasterizationSamples</code> for the currently bound graphics pipeline\n<strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil\nattachments</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08644",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the\ncurrent command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the\nsame as the number of samples for the current render pass color and/or\ndepth/stencil attachments</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08876",
          "text": "If a shader object is bound to any graphics stage, the current render pass instance <strong class=\"purple\">must</strong> have been begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-imageView-06172",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-imageView-06173",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-imageView-06174",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-imageView-06175",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-imageView-06176",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-imageView-06177",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-viewMask-06178",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>viewMask</code> equal to <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>viewMask</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-colorAttachmentCount-06179",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>colorAttachmentCount</code> equal to <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08910",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08912",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08911",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-colorAttachmentCount-09362",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, there is no shader object bound to any graphics stage, and a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>resolveImageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with an image created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value equal to the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-09363",
          "text": "If there is no shader object bound to any graphics stage, the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, and a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with an image created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value equal to the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-09364",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have set the blend enable to <code>VK_FALSE</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-09365",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to <code>VK_SAMPLE_COUNT_1_BIT</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-09366",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have set blend enable to <code>VK_FALSE</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-rasterizationSamples-09367",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to <code>VK_SAMPLE_COUNT_1_BIT</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-09368",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;width</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-09369",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;height</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-pFragmentSize-09370",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;width</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-pFragmentSize-09371",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;height</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07749",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteEnableEXT\">vkCmdSetColorWriteEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08646",
          "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is enabled on the device, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorWriteEnableEXT\">vkCmdSetColorWriteEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-attachmentCount-07750",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code> dynamic state enabled then the <code>attachmentCount</code> parameter of <code>vkCmdSetColorWriteEnableEXT</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>VkPipelineColorBlendStateCreateInfo</code>::<code>attachmentCount</code> of the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08647",
          "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is enabled on the device, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then the <code>attachmentCount</code> parameter of most recent call to <code>vkCmdSetColorWriteEnableEXT</code> in the current command buffer <strong class=\"purple\">must</strong> be greater than or equal to the number of color attachments in the current render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07751",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleEXT\">vkCmdSetDiscardRectangleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command for each discard rectangle in <a href=\"#VkPipelineDiscardRectangleStateCreateInfoEXT\">VkPipelineDiscardRectangleStateCreateInfoEXT</a>::<code>discardRectangleCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07880",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-rasterizerDiscardEnable-09236",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> in the current command buffer set <code>discardRectangleEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDiscardRectangleEXT\">vkCmdSetDiscardRectangleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08648",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07881",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleModeEXT\">vkCmdSetDiscardRectangleModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08649",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> in the current command buffer set <code>discardRectangleEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDiscardRectangleModeEXT\">vkCmdSetDiscardRectangleModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08913",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08914",
          "text": "If current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08915",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline was not equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>, the value of the format <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08916",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08917",
          "text": "If current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-dynamicRenderingUnusedAttachments-08918",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline was not equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>, the value of the format <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-imageView-06183",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a>::<code>imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-imageView-06184",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingFragmentDensityMapAttachmentInfoEXT\">VkRenderingFragmentDensityMapAttachmentInfoEXT</a>::<code>imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-colorAttachmentCount-06185",
          "text": "If the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the corresponding element of the <code>pColorAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-pDepthAttachment-06186",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-pStencilAttachment-06187",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-multisampledRenderToSingleSampled-07285",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     the current render pass instance was begun with     <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than     <code>0</code>, then each element of the     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a     <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been     created with a sample count equal to the value of     <code>rasterizationSamples</code> for the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-multisampledRenderToSingleSampled-07286",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not     <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the     currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count     used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-multisampledRenderToSingleSampled-07287",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not     <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the     currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count     used to create     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-pNext-07935",
          "text": "If this command has been called inside a render pass instance started with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and the <code>pNext</code> chain of <a href=\"#VkRenderingInfo\">VkRenderingInfo</a> includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a>::<code>rasterizationSamples</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-renderPass-06198",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>renderPass</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-pColorAttachments-08963",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound with a fragment shader that statically writes to a color attachment, the color write mask is not zero, color writes are enabled, and the corresponding element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-pDepthAttachment-08964",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound, depth test is enabled, depth write is enabled, and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-pStencilAttachment-08965",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound, stencil test is enabled and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-primitivesGeneratedQueryWithRasterizerDiscard-06708",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithRasterizerDiscard\"><code>primitivesGeneratedQueryWithRasterizerDiscard</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, <a href=\"#primsrast-discard\">rasterization discard</a> <strong class=\"purple\">must</strong> not be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-primitivesGeneratedQueryWithNonZeroStreams-06709",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, the bound graphics pipeline <strong class=\"purple\">must</strong> not have been created with a non-zero value in <code>VkPipelineRasterizationStateStreamCreateInfoEXT</code>::<code>rasterizationStream</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07619",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetTessellationDomainOriginEXT\">vkCmdSetTessellationDomainOriginEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07620",
          "text": "If the <a href=\"#features-depthClamp\"><code>depthClamp</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthClampEnableEXT\">vkCmdSetDepthClampEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07621",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_POLYGON_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07622",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07623",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-alphaToCoverageEnable-08919",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic state enabled, and <code>alphaToCoverageEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-alphaToCoverageEnable-08920",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a> in the current command buffer set <code>alphaToCoverageEnable</code> to <code>VK_TRUE</code>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07624",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07625",
          "text": "If the <a href=\"#features-alphaToOne\"><code>alphaToOne</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAlphaToOneEnableEXT\">vkCmdSetAlphaToOneEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07626",
          "text": "If the <a href=\"#features-logicOp\"><code>logicOp</code></a> feature is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLogicOpEnableEXT\">vkCmdSetLogicOpEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07627",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08657",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07628",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08658",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> for any attachment set that attachment&#8217;s value in <code>pColorBlendEnables</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07629",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08659",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07630",
          "text": "If the <a href=\"#features-geometryStreams\"><code>geometryStreams</code></a> feature is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizationStreamEXT\">vkCmdSetRasterizationStreamEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07631",
          "text": "If the <code><a href=\"#VK_EXT_conservative_rasterization\">VK_EXT_conservative_rasterization</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetConservativeRasterizationModeEXT\">vkCmdSetConservativeRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07632",
          "text": "If the <code><a href=\"#VK_EXT_conservative_rasterization\">VK_EXT_conservative_rasterization</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>conservativeRasterizationMode</code> is <code>VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT</code>, then <a href=\"#vkCmdSetExtraPrimitiveOverestimationSizeEXT\">vkCmdSetExtraPrimitiveOverestimationSizeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07633",
          "text": "If the <a href=\"#features-depthClipEnable\"><code>depthClipEnable</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT</code> dynamic state, then <a href=\"#vkCmdSetDepthClipEnableEXT\">vkCmdSetDepthClipEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07634",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08664",
          "text": "If the <code><a href=\"#VK_EXT_sample_locations\">VK_EXT_sample_locations</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07635",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-rasterizerDiscardEnable-09416",
          "text": "If the <code><a href=\"#VK_EXT_blend_operation_advanced\">VK_EXT_blend_operation_advanced</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then at least one of <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> and <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07636",
          "text": "If the <code><a href=\"#VK_EXT_provoking_vertex\">VK_EXT_provoking_vertex</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetProvokingVertexModeEXT\">vkCmdSetProvokingVertexModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07637",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08666",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08667",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08668",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07638",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08669",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08670",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08671",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07849",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_KHR</code>     dynamic state enabled then <a href=\"#vkCmdSetLineStippleKHR\">vkCmdSetLineStippleKHR</a>     <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing     command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08672",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> in the current command buffer set <code>stippledLineEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetLineStippleEXT\">vkCmdSetLineStippleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07639",
          "text": "If the <a href=\"#features-depthClipControl\"><code>depthClipControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetDepthClipNegativeOneToOneEXT\">vkCmdSetDepthClipNegativeOneToOneEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-09650",
          "text": "If the <a href=\"#features-depthClampControl\"><code>depthClampControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthClampEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthClampRangeEXT\">vkCmdSetDepthClampRangeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07640",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07641",
          "text": "If the <code><a href=\"#VK_NV_viewport_swizzle\">VK_NV_viewport_swizzle</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07642",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07643",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageToColorEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07644",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageModulationModeNV\">vkCmdSetCoverageModulationModeNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07645",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageModulationMode</code> is any value other than <code>VK_COVERAGE_MODULATION_MODE_NONE_NV</code>, then <a href=\"#vkCmdSetCoverageModulationTableEnableNV\">vkCmdSetCoverageModulationTableEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07646",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageModulationTableEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetCoverageModulationTableNV\">vkCmdSetCoverageModulationTableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07647",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-pipelineFragmentShadingRate-09238",
          "text": "If the <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a> feature is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07648",
          "text": "If the <a href=\"#features-representativeFragmentTest\"><code>representativeFragmentTest</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetRepresentativeFragmentTestEnableNV\">vkCmdSetRepresentativeFragmentTestEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07649",
          "text": "If the <a href=\"#features-coverageReductionMode\"><code>coverageReductionMode</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageReductionModeNV\">vkCmdSetCoverageReductionModeNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-pColorBlendEnables-07470",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> state enabled and the last call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> set <code>pColorBlendEnables</code> for any attachment to <code>VK_TRUE</code>, then for those attachments in the subpass the corresponding 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_BLEND_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-rasterizationSamples-07471",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> follow the rules for a <a href=\"#renderpass-noattachments\">zero-attachment subpass</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-samples-07472",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, then the <code>samples</code> parameter in the last call to <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> be greater or equal to the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a>::<code>rasterizationSamples</code> parameter used to create the bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-samples-07473",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> state and <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> states enabled, then the <code>samples</code> parameter in the last call to <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> be greater or equal to the <code>rasterizationSamples</code> parameter in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-rasterizationSamples-07474",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and neither the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> nor the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extensions are enabled, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil attachments",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-09211",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, or a shader object is bound to any graphics stage, and the current render pass instance includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> be the same as the <code>rasterizationSamples</code> member of that structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-firstAttachment-07476",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEnableEXT</code> calls <strong class=\"purple\">must</strong> specify an enable for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-rasterizerDiscardEnable-09417",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEnableEXT</code> calls <strong class=\"purple\">must</strong> specify an enable for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-firstAttachment-07477",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEquationEXT</code> calls <strong class=\"purple\">must</strong> specify the blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-rasterizerDiscardEnable-09418",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEquationEXT</code> calls <strong class=\"purple\">must</strong> specify the blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-firstAttachment-07478",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorWriteMaskEXT</code> calls <strong class=\"purple\">must</strong> specify the color write mask for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-rasterizerDiscardEnable-09419",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorWriteMaskEXT</code> calls <strong class=\"purple\">must</strong> specify the color write mask for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-firstAttachment-07479",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendAdvancedEXT</code> calls <strong class=\"purple\">must</strong> specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-advancedBlendMaxColorAttachments-07480",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> and <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic states enabled and the last calls to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> and <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> have enabled advanced blending, then the number of active color attachments in the current subpass <strong class=\"purple\">must</strong> not exceed <a href=\"#limits-advancedBlendMaxColorAttachments\"><code>advancedBlendMaxColorAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-primitivesGeneratedQueryWithNonZeroStreams-07481",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, and the bound graphics pipeline was created with <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code> state enabled, the last call to <a href=\"#vkCmdSetRasterizationStreamEXT\">vkCmdSetRasterizationStreamEXT</a> <strong class=\"purple\">must</strong> have set the <code>rasterizationStream</code> to zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-sampleLocationsPerPixel-07482",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-sampleLocationsPerPixel-07483",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-07484",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-07485",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, then the <code>sampleLocationsInfo.sampleLocationGridSize.width</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-07486",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, then the <code>sampleLocationsInfo.sampleLocationGridSize.height</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-07487",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, the fragment shader code <strong class=\"purple\">must</strong> not statically use the extended instruction <code>InterpolateAtSample</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-07936",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <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 the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-07937",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <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 the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-07938",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-coverageModulationTableEnable-07488",
          "text": "If a shader object is bound to any graphics stage or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code> state enabled, and the last call to <a href=\"#vkCmdSetCoverageModulationTableEnableNV\">vkCmdSetCoverageModulationTableEnableNV</a> set <code>coverageModulationTableEnable</code> to <code>VK_TRUE</code>, then the <code>coverageModulationTableCount</code> parameter in the last call to <a href=\"#vkCmdSetCoverageModulationTableNV\">vkCmdSetCoverageModulationTableNV</a> <strong class=\"purple\">must</strong> equal the current <code>rasterizationSamples</code> divided by the number of color samples in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-rasterizationSamples-07489",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current <code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be the same as the sample count of the depth/stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-coverageToColorEnable-07490",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> state enabled and the last call to <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> set the <code>coverageToColorEnable</code> to <code>VK_TRUE</code>, then the current subpass <strong class=\"purple\">must</strong> have a color attachment at the location selected by the last call to <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-rasterizerDiscardEnable-09420",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the last call to <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> set the <code>coverageToColorEnable</code> to <code>VK_TRUE</code>, then the current subpass <strong class=\"purple\">must</strong> have a color attachment at the location selected by the last call to <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-coverageReductionMode-07491",
          "text": "If this <code><a href=\"#VK_NV_coverage_reduction_mode\">VK_NV_coverage_reduction_mode</a></code> extension is enabled, the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> and <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> states enabled, the current coverage reduction mode <code>coverageReductionMode</code>, then the current <code>rasterizationSamples</code>, and the sample counts for the color and depth/stencil attachments (if the subpass has them) <strong class=\"purple\">must</strong> be a valid combination returned by <a href=\"#vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV\">vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-viewportCount-07492",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-viewportCount-07493",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-viewportCount-09421",
          "text": "If the <code><a href=\"#VK_NV_viewport_swizzle\">VK_NV_viewport_swizzle</a></code> extension is enabled, and a shader object is bound to any graphics stage, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-rasterizationSamples-07494",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, and if the current subpass has any color attachments and <code>rasterizationSamples</code> of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> is greater than the number of color samples, then the pipeline <code>sampleShadingEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-stippledLineEnable-07495",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-stippledLineEnable-07496",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR</code>, then the <a href=\"#features-stippledBresenhamLines\"><code>stippledBresenhamLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-stippledLineEnable-07497",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR</code>, then the <a href=\"#features-stippledSmoothLines\"><code>stippledSmoothLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-stippledLineEnable-07498",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_DEFAULT_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled and <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>strictLines</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-conservativePointAndLineRasterization-07499",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code> dynamic state enabled, <a href=\"#limits-conservativePointAndLineRasterization\"><code>conservativePointAndLineRasterization</code></a> is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the <code>conservativeRasterizationMode</code> set by the last call to <a href=\"#vkCmdSetConservativeRasterizationModeEXT\">vkCmdSetConservativeRasterizationModeEXT</a> <strong class=\"purple\">must</strong> be <code>VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-stage-07073",
          "text": "If the currently bound pipeline was created with the <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a>::<code>stage</code> member of an element of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> set to <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>, then <a href=\"#queries-mesh-shader\">Mesh Shader Queries</a> <strong class=\"purple\">must</strong> not be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08877",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07850",
          "text": "If dynamic state was inherited from <a href=\"#VkCommandBufferInheritanceViewportScissorInfoNV\">VkCommandBufferInheritanceViewportScissorInfoNV</a>, it <strong class=\"purple\">must</strong> be set in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08684",
          "text": "If there is no bound graphics pipeline, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_VERTEX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08685",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08686",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08687",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08688",
          "text": "If there is no bound graphics pipeline, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08689",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TASK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08690",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08693",
          "text": "If there is no bound graphics pipeline, and at least one of the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features is enabled, one of the <code>VK_SHADER_STAGE_VERTEX_BIT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stages <strong class=\"purple\">must</strong> have a valid <code>VkShaderEXT</code> bound, and the other <strong class=\"purple\">must</strong> have no <code>VkShaderEXT</code> bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08694",
          "text": "If there is no bound graphics pipeline, and both the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features are enabled, and a valid <code>VkShaderEXT</code> is bound the to the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage, and that <code>VkShaderEXT</code> was created without the <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> flag, a valid <code>VkShaderEXT</code> <strong class=\"purple\">must</strong> be bound to the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08695",
          "text": "If there is no bound graphics pipeline, and both the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features are enabled, and a valid <code>VkShaderEXT</code> is bound the to the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage, and that <code>VkShaderEXT</code> was created with the <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> flag, there <strong class=\"purple\">must</strong> be no <code>VkShaderEXT</code> bound to the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08696",
          "text": "If there is no bound graphics pipeline, and a valid <code>VkShaderEXT</code> is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, there <strong class=\"purple\">must</strong> be no <code>VkShaderEXT</code> bound to either the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage or the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08698",
          "text": "If any graphics shader is bound which was created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag, then all shaders created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag in the same <a href=\"#vkCreateShadersEXT\">vkCreateShadersEXT</a> call <strong class=\"purple\">must</strong> also be bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08699",
          "text": "If any graphics shader is bound which was created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag, any stages in between stages whose shaders which did not create a shader with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag as part of the same <a href=\"#vkCreateShadersEXT\">vkCreateShadersEXT</a> call <strong class=\"purple\">must</strong> not have any <code>VkShaderEXT</code> bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08878",
          "text": "All bound graphics shader objects <strong class=\"purple\">must</strong> have been created with identical or identically defined push constant ranges",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08879",
          "text": "All bound graphics shader objects <strong class=\"purple\">must</strong> have been created with identical or identically defined arrays of descriptor set layouts",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-colorAttachmentCount-09372",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, and a fragment shader is bound, it <strong class=\"purple\">must</strong> not declare the <code>DepthReplacing</code> or <code>StencilRefReplacingEXT</code> execution modes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-pDynamicStates-08715",
          "text": "If the bound graphics pipeline state includes a fragment shader stage, was created with <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpDepthAttachmentReadEXT</code>, the <code>depthWriteEnable</code> parameter in the last call to <a href=\"#vkCmdSetDepthWriteEnable\">vkCmdSetDepthWriteEnable</a> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-pDynamicStates-08716",
          "text": "If the bound graphics pipeline state includes a fragment shader stage, was created with <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpStencilAttachmentReadEXT</code>, the <code>writeMask</code> parameter in the last call to <a href=\"#vkCmdSetStencilWriteMask\">vkCmdSetStencilWriteMask</a> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-09116",
          "text": "If     a shader object is bound to any graphics stage or     the currently bound graphics pipeline was created with     <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code>,     and the format of any color attachment is     <code>VK_FORMAT_E5B9G9R9_UFLOAT_PACK32</code>, the corresponding element of the     <code>pColorWriteMasks</code> parameter of <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a>     <strong class=\"purple\">must</strong> either include all of <code>VK_COLOR_COMPONENT_R_BIT</code>,     <code>VK_COLOR_COMPONENT_G_BIT</code>, and <code>VK_COLOR_COMPONENT_B_BIT</code>, or     none of them",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-maxFragmentDualSrcAttachments-09239",
          "text": "If <a href=\"#framebuffer-blending\">blending</a> is enabled for any attachment where either the source or destination blend factors for that attachment <a href=\"#framebuffer-dsb\">use the secondary color input</a>, the maximum value of <code>Location</code> for any output attachment <a href=\"#shaders-staticuse\">statically used</a> in the <code>Fragment</code> <code>Execution</code> <code>Model</code> executed by this command <strong class=\"purple\">must</strong> be less than <a href=\"#limits-maxFragmentDualSrcAttachments\"><code>maxFragmentDualSrcAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-09548",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and there is no shader object bound to any graphics stage, the value of each element of <a href=\"#VkRenderingAttachmentLocationInfoKHR\">VkRenderingAttachmentLocationInfoKHR</a>::<code>pColorAttachmentLocations</code> set by <a href=\"#vkCmdSetRenderingAttachmentLocationsKHR\">vkCmdSetRenderingAttachmentLocationsKHR</a> <strong class=\"purple\">must</strong> match the value set for the corresponding element in the currently bound pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-09549",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and there is no shader object bound to any graphics stage, input attachment index mappings in the currently bound pipeline <strong class=\"purple\">must</strong> match those set for the current render pass instance via <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-09642",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with the <code>VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT</code> flag, the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-09643",
          "text": "If the bound graphics pipeline was created with <code>VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT</code>, the current render pass <strong class=\"purple\">must</strong> have begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with the <code>VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT</code> flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-commandBuffer-02712",
          "text": "If <code>commandBuffer</code> is a protected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, any resource written to by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be an unprotected resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-commandBuffer-02713",
          "text": "If <code>commandBuffer</code> is a protected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, pipeline stages other than the framebuffer-space and compute stages in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not write to any resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-commandBuffer-04617",
          "text": "If any of the shader stages of the <code>VkPipeline</code> bound to the pipeline bind point used by this command uses the <a href=\"#spirvenv-capabilities-table-RayQueryKHR\"><code>RayQueryKHR</code></a> capability, then <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-04007",
          "text": "All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> buffers bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-04008",
          "text": "If the <a href=\"#features-nullDescriptor\"><code>nullDescriptor</code></a> feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-02721",
          "text": "If <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> is not enabled, and that pipeline was created without enabling <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> for <code>vertexInputs</code>, then 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-07842",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY</code> dynamic state enabled     then <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> <strong class=\"purple\">must</strong> have been called and not     subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current     command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-dynamicPrimitiveTopologyUnrestricted-07500",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY</code> dynamic state enabled and the <a href=\"#limits-dynamicPrimitiveTopologyUnrestricted\"><code>dynamicPrimitiveTopologyUnrestricted</code></a> is <code>VK_FALSE</code>, then the <code>primitiveTopology</code> parameter of <code>vkCmdSetPrimitiveTopology</code> <strong class=\"purple\">must</strong> be of the same <a href=\"#drawing-primitive-topology-class\">topology class</a> as the pipeline <a href=\"#VkPipelineInputAssemblyStateCreateInfo\">VkPipelineInputAssemblyStateCreateInfo</a>::<code>topology</code> state",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-pStrides-04913",
          "text": "If the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE</code> dynamic state enabled, but without the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdBindVertexBuffers2\">vkCmdBindVertexBuffers2</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this draw command, and the <code>pStrides</code> parameter of <a href=\"#vkCmdBindVertexBuffers2\">vkCmdBindVertexBuffers2</a> <strong class=\"purple\">must</strong> not be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-04914",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     then <a href=\"#vkCmdSetVertexInputEXT\">vkCmdSetVertexInputEXT</a> <strong class=\"purple\">must</strong> have been called and not     subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current     command buffer prior to this draw command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-Input-07939",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     then all variables with the <code>Input</code> storage class decorated with     <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code>     <strong class=\"purple\">must</strong> contain a location in     <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>location</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-Input-08734",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     and either <a href=\"#features-legacyVertexAttributes\"><code>legacyVertexAttributes</code></a> is not enabled or the SPIR-V Type     associated with a given <code>Input</code> variable of the corresponding     <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code> is     64-bit,     then the numeric type associated with all <code>Input</code> variables of the     corresponding <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code>     <code>OpEntryPoint</code> <strong class=\"purple\">must</strong> be the same as     <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>format</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-format-08936",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     and <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>format</code> has a     64-bit component, then the scalar width associated with all <code>Input</code>     variables of the corresponding <code>Location</code> in the <code>Vertex</code>     <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code> <strong class=\"purple\">must</strong> be 64-bit",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-format-08937",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     and the scalar width associated with a <code>Location</code> decorated     <code>Input</code> variable in the <code>Vertex</code> <code>Execution</code> <code>Model</code>     <code>OpEntryPoint</code> is 64-bit, then the corresponding     <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>format</code> <strong class=\"purple\">must</strong> have a     64-bit component",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-09203",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     and <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>format</code> has a     64-bit component, then all <code>Input</code> variables at the corresponding     <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code>     <strong class=\"purple\">must</strong> not use components that are not present in the format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-04875",
          "text": "If     there is a shader object bound to the     <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT</code> dynamic state enabled,     and the <a href=\"#dynamic-state-current-value\">current value</a> of     <code>primitiveTopology</code> is <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, then     <a href=\"#vkCmdSetPatchControlPointsEXT\">vkCmdSetPatchControlPointsEXT</a> <strong class=\"purple\">must</strong> have been called and not     subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current     command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-04879",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE</code> dynamic state enabled     then <a href=\"#vkCmdSetPrimitiveRestartEnable\">vkCmdSetPrimitiveRestartEnable</a> <strong class=\"purple\">must</strong> have been called and not     subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current     command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-09637",
          "text": "If     the <a href=\"#features-primitiveTopologyListRestart\"><code>primitiveTopologyListRestart</code></a> feature is not enabled,     the topology 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>, or     <code>VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY</code>,     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE</code> dynamic state enabled     then <a href=\"#vkCmdSetPrimitiveRestartEnable\">vkCmdSetPrimitiveRestartEnable</a> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-stage-06481",
          "text": "The bound graphics pipeline <strong class=\"purple\">must</strong> not have been created with the <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a>::<code>stage</code> member of an element of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> set to <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-08885",
          "text": "There <strong class=\"purple\">must</strong> be no shader object bound to either of the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-pNext-09461",
          "text": "If the bound graphics pipeline state was created with <a href=\"#VkPipelineVertexInputDivisorStateCreateInfoKHR\">VkPipelineVertexInputDivisorStateCreateInfoKHR</a> in the <code>pNext</code> chain of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pVertexInputState</code>, any member of <a href=\"#VkPipelineVertexInputDivisorStateCreateInfoKHR\">VkPipelineVertexInputDivisorStateCreateInfoKHR</a>::<code>pVertexBindingDivisors</code> has a value other than <code>1</code> in <code>divisor</code>, and <a href=\"#VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR\">VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR</a>::<code>supportsNonZeroFirstInstance</code> is <code>VK_FALSE</code>, then <code>firstInstance</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-09462",
          "text": "If <a href=\"#shaders-objects\">shader objects</a> are used for drawing or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled, any member of the <code>pVertexBindingDescriptions</code> parameter to the <a href=\"#vkCmdSetVertexInputEXT\">vkCmdSetVertexInputEXT</a> call that sets this dynamic state has a value other than <code>1</code> in <code>divisor</code>, and <a href=\"#VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR\">VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR</a>::<code>supportsNonZeroFirstInstance</code> is <code>VK_FALSE</code>, then <code>firstInstance</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-None-04933",
          "text": "The <a href=\"#features-multiDraw\"><code>multiDraw</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-drawCount-04934",
          "text": "<code>drawCount</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceMultiDrawPropertiesEXT</code>::<code>maxMultiDrawCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-drawCount-04935",
          "text": "If <code>drawCount</code> is greater than zero, <code>pVertexInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to memory containing one or more valid instances of <a href=\"#VkMultiDrawInfoEXT\">VkMultiDrawInfoEXT</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-drawCount-09628",
          "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>VkMultiDrawInfoEXT</code>)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdDrawMultiIndexedEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-magFilter-04553",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-magFilter-09598",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-mipmapMode-04770",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-mipmapMode-09599",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-unnormalizedCoordinates-09635",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>levelCount</code> and <code>layerCount</code> <strong class=\"purple\">must</strong> be 1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-unnormalizedCoordinates-09636",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_VIEW_TYPE_1D</code> or <code>VK_IMAGE_VIEW_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-06479",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is sampled with <a href=\"#textures-depth-compare-operation\">depth comparison</a>, 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_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-02691",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed using atomic operations as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07888",
          "text": "If a <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> descriptor is accessed using atomic operations as a result of this command, then the storage texel buffer&#8217;s <a href=\"#resources-buffer-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-02692",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-02693",
          "text": "If the <a href=\"#VK_EXT_filter_cubic\">VK_EXT_filter_cubic</a> extension is not enabled and any <a href=\"#VkImageView\">VkImageView</a> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, it <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-filterCubic-02694",
          "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 <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubic</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-filterCubicMinmax-02695",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubicMinmax</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-cubicRangeClamp-09212",
          "text": "If the <a href=\"#features-filter-cubic-range-clamp\"><code>cubicRangeClamp</code></a> feature is not enabled, then 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=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-reductionMode-09213",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with a <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code> as a result of this command <strong class=\"purple\">must</strong> sample with <code>VK_FILTER_CUBIC_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-selectableCubicWeights-09214",
          "text": "If the <a href=\"#features-filter-cubic-weight-selection\"><code>selectableCubicWeights</code></a> feature is not enabled, then 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 href=\"#VkSamplerCubicWeightsCreateInfoQCOM\">VkSamplerCubicWeightsCreateInfoQCOM</a>::<code>cubicWeights</code> equal to <code>VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-flags-02696",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpTypeImage-07027",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being written as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpTypeImage-07028",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being read as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpTypeImage-07029",
          "text": "For any <a href=\"#VkBufferView\">VkBufferView</a> being written as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpTypeImage-07030",
          "text": "Any <a href=\"#VkBufferView\">VkBufferView</a> being read as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code> then the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08600",
          "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08601",
          "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-10068",
          "text": "For each array of resources that is used by <a href=\"#shaders-binding\">a bound shader</a>, the indices used to access members of the array <strong class=\"purple\">must</strong> be less than the descriptor count for the identified binding in the descriptor sets used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-maintenance4-08602",
          "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08114",
          "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08115",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created without <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08116",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08604",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08117",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08119",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkPipeline\">VkPipeline</a> created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08605",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkShaderEXT\">VkShaderEXT</a> created with a <code>VkDescriptorSetLayout</code> that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08606",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is not enabled, a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08608",
          "text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state specified statically in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08609",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <a href=\"#VkImage\">VkImage</a> with a <a href=\"#VkImageView\">VkImageView</a> 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08610",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08611",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08607",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-uniformBuffers-06935",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08612",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-storageBuffers-06936",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>storageBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08613",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-02707",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, any resource accessed by <a href=\"#shaders-binding\">bound shaders</a> <strong class=\"purple\">must</strong> not be a protected resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-06550",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> only be used with <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-ConstOffset-06551",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> not use the <code>ConstOffset</code> and <code>Offset</code> operands",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-viewType-07752",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> match the <code>Dim</code> operand of the <code>OpTypeImage</code> as described in <a href=\"#spirvenv-image-dimensions\">Compatibility Between SPIR-V Image Dimensions and Vulkan ImageView Types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-format-07753",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the <a href=\"#formats-numericformat\">numeric type</a> of the image view&#8217;s <code>format</code> and the <code>Sampled</code> <code>Type</code> operand of the <code>OpTypeImage</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpImageWrite-08795",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with a format other than <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpImageWrite-08796",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with the format <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have four components",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpImageWrite-04469",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the buffer view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-SampledType-04470",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-SampledType-04471",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-SampledType-04472",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-SampledType-04473",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-sparseImageInt64Atomics-04474",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-sparseImageInt64Atomics-04475",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpImageWeightedSampleQCOM-06971",
          "text": "If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpImageWeightedSampleQCOM-06972",
          "text": "If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image 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_2_WEIGHT_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpImageBoxFilterQCOM-06973",
          "text": "If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpImageBlockMatchSSDQCOM-06974",
          "text": "If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpImageBlockMatchSADQCOM-06975",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpImageBlockMatchSADQCOM-06976",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpImageWeightedSampleQCOM-06977",
          "text": "If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpImageWeightedSampleQCOM-06978",
          "text": "If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpImageBlockMatchWindow-09215",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpImageBlockMatchWindow-09216",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s format <strong class=\"purple\">must</strong> be a single-component format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpImageBlockMatchWindow-09217",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07288",
          "text": "Any shader invocation executed by this command <strong class=\"purple\">must</strong> <a href=\"#shaders-termination\">terminate</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-09600",
          "text": "If a descriptor with type equal to any of <code>VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> is accessed as a result of this command, the image subresource identified by that descriptor <strong class=\"purple\">must</strong> be in the image layout identified when the descriptor was written",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-renderPass-02684",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-subpass-02685",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07748",
          "text": "If any shader statically accesses an input attachment, a valid descriptor <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpTypeImage-07468",
          "text": "If any shader executed by this pipeline accesses an <code>OpTypeImage</code> variable with a <code>Dim</code> operand of <code>SubpassData</code>, it <strong class=\"purple\">must</strong> be decorated with an <code>InputAttachmentIndex</code> that corresponds to a valid input attachment in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07469",
          "text": "Input attachment views accessed in a subpass <strong class=\"purple\">must</strong> be created with the same <a href=\"#VkFormat\">VkFormat</a> as the corresponding subpass definition, and be created with a <a href=\"#VkImageView\">VkImageView</a> that is compatible with the attachment referenced by the subpass' <code>pInputAttachments</code>[<code>InputAttachmentIndex</code>] in the currently bound <a href=\"#VkFramebuffer\">VkFramebuffer</a> as specified by <a href=\"#compatibility-inputattachment\">Fragment Input Attachment Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-pDepthInputAttachmentIndex-09595",
          "text": "Input attachment views accessed in a dynamic render pass with a <code>InputAttachmentIndex</code> referenced by <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>, or no <code>InputAttachmentIndex</code> if <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pDepthInputAttachmentIndex</code> or <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pStencilInputAttachmentIndex</code> are <code>NULL</code>, <strong class=\"purple\">must</strong> be created with a <a href=\"#VkImageView\">VkImageView</a> that is compatible with the corresponding color, depth, or stencil attachment in <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-pDepthInputAttachmentIndex-09596",
          "text": "Input attachment views accessed in a dynamic render pass via a shader object <strong class=\"purple\">must</strong> have an <code>InputAttachmentIndex</code> if both <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pDepthInputAttachmentIndex</code> and <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pStencilInputAttachmentIndex</code> are non-<code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-InputAttachmentIndex-09597",
          "text": "If an input attachment view accessed in a dynamic render pass via a shader object has an <code>InputAttachmentIndex</code>, the <code>InputAttachmentIndex</code> <strong class=\"purple\">must</strong> match an index in <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-06537",
          "text": "Memory backing image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be written in any way other than as an attachment by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-09000",
          "text": "If a color attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe <code>VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code> is\nset on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_COLOR_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-09001",
          "text": "If a depth attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe\n<code>VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code>\nis set on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_DEPTH_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-09002",
          "text": "If a stencil attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe\n<code>VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code>\nis set on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_STENCIL_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-09003",
          "text": "If an attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment, storage image, or sampled image by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-06539",
          "text": "If any previously recorded command in the current subpass accessed an image subresource used as an attachment in this subpass in any way other than as an attachment, this command <strong class=\"purple\">must</strong> not write to that image subresource as an attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-06886",
          "text": "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, <a href=\"#fragops-depth-write\">depth writes</a> <strong class=\"purple\">must</strong> be disabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-06887",
          "text": "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back <code>writeMask</code> are not zero, and stencil test is enabled, <a href=\"#fragops-stencil\">all stencil ops</a> <strong class=\"purple\">must</strong> be <code>VK_STENCIL_OP_KEEP</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07831",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT</code> dynamic state enabled then <a href=\"#vkCmdSetViewport\">vkCmdSetViewport</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07832",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR</code> dynamic state enabled then <a href=\"#vkCmdSetScissor\">vkCmdSetScissor</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07833",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_WIDTH</code> dynamic state enabled then <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08617",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08618",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08619",
          "text": "If a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07834",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthBiasEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthBounds\">vkCmdSetDepthBounds</a> or <a href=\"#vkCmdSetDepthBias2EXT\">vkCmdSetDepthBias2EXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07835",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_BLEND_CONSTANTS</code> dynamic state enabled then <a href=\"#vkCmdSetBlendConstants\">vkCmdSetBlendConstants</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08621",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> in the current command buffer set any element of <code>pColorBlendEnables</code> to <code>VK_TRUE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> in the current command buffer set the same element of <code>pColorBlendEquations</code> to a <code>VkColorBlendEquationEXT</code> structure with any <a href=\"#VkBlendFactor\">VkBlendFactor</a> member with a value of <code>VK_BLEND_FACTOR_CONSTANT_COLOR</code>, <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR</code>, <code>VK_BLEND_FACTOR_CONSTANT_ALPHA</code>, or <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA</code>, <a href=\"#vkCmdSetBlendConstants\">vkCmdSetBlendConstants</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07836",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthBoundsTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthBounds\">vkCmdSetDepthBounds</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07837",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilCompareMask\">vkCmdSetStencilCompareMask</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07838",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilWriteMask\">vkCmdSetStencilWriteMask</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07839",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_REFERENCE</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of and <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilReference\">vkCmdSetStencilReference</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-maxMultiviewInstanceIndex-02688",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-02689",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-06666",
          "text": "If the <code><a href=\"#VK_EXT_sample_locations\">VK_EXT_sample_locations</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07840",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_CULL_MODE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCullMode\">vkCmdSetCullMode</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07841",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_FRONT_FACE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetFrontFace\">vkCmdSetFrontFace</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07843",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, <a href=\"#vkCmdSetDepthTestEnable\">vkCmdSetDepthTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07844",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthWriteEnable\">vkCmdSetDepthWriteEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07845",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_COMPARE_OP</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthCompareOp\">vkCmdSetDepthCompareOp</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07846",
          "text": "If the <a href=\"#features-depthBounds\"><code>depthBounds</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthBoundsTestEnable\">vkCmdSetDepthBoundsTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07847",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetStencilTestEnable\">vkCmdSetStencilTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07848",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_OP</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilOp\">vkCmdSetStencilOp</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-viewportCount-03417",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-scissorCount-03418",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, then <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-viewportCount-03419",
          "text": "If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> and <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08635",
          "text": "If a shader object is bound to any graphics stage, then both <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> and <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-viewportCount-04137",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-viewportCount-04138",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08636",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-viewportCount-04139",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-shadingRateImage-09233",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV</code> and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-shadingRateImage-09234",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08637",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-VkPipelineVieportCreateInfo-04141",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled and a <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> structure chained from <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-VkPipelineVieportCreateInfo-04142",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled and a <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> structure chained from <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07878",
          "text": "If the <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetExclusiveScissorEnableNV\">vkCmdSetExclusiveScissorEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07879",
          "text": "If the <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV</code> dynamic state enabled, and the most recent call to <a href=\"#vkCmdSetExclusiveScissorEnableNV\">vkCmdSetExclusiveScissorEnableNV</a> in the current command buffer set any element of <code>pExclusiveScissorEnables</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetExclusiveScissorNV\">vkCmdSetExclusiveScissorNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-04876",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-04877",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthBiasEnable\">vkCmdSetDepthBiasEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-logicOp-04878",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_LOGIC_OP_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>logicOpEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetLogicOpEXT\">vkCmdSetLogicOpEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-primitiveFragmentShadingRateWithMultipleViewports-04552",
          "text": "If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-primitiveFragmentShadingRateWithMultipleViewports-08642",
          "text": "If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, and any shader object bound to a graphics stage writes to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-blendEnable-04727",
          "text": "If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the <code>blendEnable</code> member of the corresponding element of the <code>pAttachments</code> member of <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08643",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then for each color attachment in the render pass, if the corresponding image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the corresponding member of <code>pColorBlendEnables</code> in the most recent call to <code>vkCmdSetColorBlendEnableEXT</code> in the current command buffer that affected that attachment index <strong class=\"purple\">must</strong> have been <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-multisampledRenderToSingleSampled-07284",
          "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then <code>rasterizationSamples</code> for the currently bound graphics pipeline\n<strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil\nattachments</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08644",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the\ncurrent command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the\nsame as the number of samples for the current render pass color and/or\ndepth/stencil attachments</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08876",
          "text": "If a shader object is bound to any graphics stage, the current render pass instance <strong class=\"purple\">must</strong> have been begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-imageView-06172",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-imageView-06173",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-imageView-06174",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-imageView-06175",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-imageView-06176",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-imageView-06177",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-viewMask-06178",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>viewMask</code> equal to <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>viewMask</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-colorAttachmentCount-06179",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>colorAttachmentCount</code> equal to <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08910",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08912",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08911",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-colorAttachmentCount-09362",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, there is no shader object bound to any graphics stage, and a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>resolveImageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with an image created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value equal to the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-09363",
          "text": "If there is no shader object bound to any graphics stage, the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, and a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with an image created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value equal to the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-09364",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have set the blend enable to <code>VK_FALSE</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-09365",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to <code>VK_SAMPLE_COUNT_1_BIT</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-09366",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have set blend enable to <code>VK_FALSE</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-rasterizationSamples-09367",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to <code>VK_SAMPLE_COUNT_1_BIT</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-09368",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;width</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-09369",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;height</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-pFragmentSize-09370",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;width</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-pFragmentSize-09371",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;height</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07749",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteEnableEXT\">vkCmdSetColorWriteEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08646",
          "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is enabled on the device, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorWriteEnableEXT\">vkCmdSetColorWriteEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-attachmentCount-07750",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code> dynamic state enabled then the <code>attachmentCount</code> parameter of <code>vkCmdSetColorWriteEnableEXT</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>VkPipelineColorBlendStateCreateInfo</code>::<code>attachmentCount</code> of the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08647",
          "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is enabled on the device, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then the <code>attachmentCount</code> parameter of most recent call to <code>vkCmdSetColorWriteEnableEXT</code> in the current command buffer <strong class=\"purple\">must</strong> be greater than or equal to the number of color attachments in the current render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07751",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleEXT\">vkCmdSetDiscardRectangleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command for each discard rectangle in <a href=\"#VkPipelineDiscardRectangleStateCreateInfoEXT\">VkPipelineDiscardRectangleStateCreateInfoEXT</a>::<code>discardRectangleCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07880",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-rasterizerDiscardEnable-09236",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> in the current command buffer set <code>discardRectangleEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDiscardRectangleEXT\">vkCmdSetDiscardRectangleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08648",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07881",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleModeEXT\">vkCmdSetDiscardRectangleModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08649",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> in the current command buffer set <code>discardRectangleEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDiscardRectangleModeEXT\">vkCmdSetDiscardRectangleModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08913",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08914",
          "text": "If current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08915",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline was not equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>, the value of the format <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08916",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08917",
          "text": "If current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-dynamicRenderingUnusedAttachments-08918",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline was not equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>, the value of the format <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-imageView-06183",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a>::<code>imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-imageView-06184",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingFragmentDensityMapAttachmentInfoEXT\">VkRenderingFragmentDensityMapAttachmentInfoEXT</a>::<code>imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-colorAttachmentCount-06185",
          "text": "If the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the corresponding element of the <code>pColorAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-pDepthAttachment-06186",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-pStencilAttachment-06187",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-multisampledRenderToSingleSampled-07285",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     the current render pass instance was begun with     <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than     <code>0</code>, then each element of the     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a     <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been     created with a sample count equal to the value of     <code>rasterizationSamples</code> for the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-multisampledRenderToSingleSampled-07286",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not     <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the     currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count     used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-multisampledRenderToSingleSampled-07287",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not     <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the     currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count     used to create     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-pNext-07935",
          "text": "If this command has been called inside a render pass instance started with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and the <code>pNext</code> chain of <a href=\"#VkRenderingInfo\">VkRenderingInfo</a> includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a>::<code>rasterizationSamples</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-renderPass-06198",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>renderPass</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-pColorAttachments-08963",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound with a fragment shader that statically writes to a color attachment, the color write mask is not zero, color writes are enabled, and the corresponding element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-pDepthAttachment-08964",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound, depth test is enabled, depth write is enabled, and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-pStencilAttachment-08965",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound, stencil test is enabled and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-primitivesGeneratedQueryWithRasterizerDiscard-06708",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithRasterizerDiscard\"><code>primitivesGeneratedQueryWithRasterizerDiscard</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, <a href=\"#primsrast-discard\">rasterization discard</a> <strong class=\"purple\">must</strong> not be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-primitivesGeneratedQueryWithNonZeroStreams-06709",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, the bound graphics pipeline <strong class=\"purple\">must</strong> not have been created with a non-zero value in <code>VkPipelineRasterizationStateStreamCreateInfoEXT</code>::<code>rasterizationStream</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07619",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetTessellationDomainOriginEXT\">vkCmdSetTessellationDomainOriginEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07620",
          "text": "If the <a href=\"#features-depthClamp\"><code>depthClamp</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthClampEnableEXT\">vkCmdSetDepthClampEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07621",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_POLYGON_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07622",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07623",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-alphaToCoverageEnable-08919",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic state enabled, and <code>alphaToCoverageEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-alphaToCoverageEnable-08920",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a> in the current command buffer set <code>alphaToCoverageEnable</code> to <code>VK_TRUE</code>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07624",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07625",
          "text": "If the <a href=\"#features-alphaToOne\"><code>alphaToOne</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAlphaToOneEnableEXT\">vkCmdSetAlphaToOneEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07626",
          "text": "If the <a href=\"#features-logicOp\"><code>logicOp</code></a> feature is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLogicOpEnableEXT\">vkCmdSetLogicOpEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07627",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08657",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07628",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08658",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> for any attachment set that attachment&#8217;s value in <code>pColorBlendEnables</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07629",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08659",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07630",
          "text": "If the <a href=\"#features-geometryStreams\"><code>geometryStreams</code></a> feature is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizationStreamEXT\">vkCmdSetRasterizationStreamEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07631",
          "text": "If the <code><a href=\"#VK_EXT_conservative_rasterization\">VK_EXT_conservative_rasterization</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetConservativeRasterizationModeEXT\">vkCmdSetConservativeRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07632",
          "text": "If the <code><a href=\"#VK_EXT_conservative_rasterization\">VK_EXT_conservative_rasterization</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>conservativeRasterizationMode</code> is <code>VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT</code>, then <a href=\"#vkCmdSetExtraPrimitiveOverestimationSizeEXT\">vkCmdSetExtraPrimitiveOverestimationSizeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07633",
          "text": "If the <a href=\"#features-depthClipEnable\"><code>depthClipEnable</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT</code> dynamic state, then <a href=\"#vkCmdSetDepthClipEnableEXT\">vkCmdSetDepthClipEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07634",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08664",
          "text": "If the <code><a href=\"#VK_EXT_sample_locations\">VK_EXT_sample_locations</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07635",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-rasterizerDiscardEnable-09416",
          "text": "If the <code><a href=\"#VK_EXT_blend_operation_advanced\">VK_EXT_blend_operation_advanced</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then at least one of <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> and <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07636",
          "text": "If the <code><a href=\"#VK_EXT_provoking_vertex\">VK_EXT_provoking_vertex</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetProvokingVertexModeEXT\">vkCmdSetProvokingVertexModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07637",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08666",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08667",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08668",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07638",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08669",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08670",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08671",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07849",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_KHR</code>     dynamic state enabled then <a href=\"#vkCmdSetLineStippleKHR\">vkCmdSetLineStippleKHR</a>     <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing     command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08672",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> in the current command buffer set <code>stippledLineEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetLineStippleEXT\">vkCmdSetLineStippleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07639",
          "text": "If the <a href=\"#features-depthClipControl\"><code>depthClipControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetDepthClipNegativeOneToOneEXT\">vkCmdSetDepthClipNegativeOneToOneEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-09650",
          "text": "If the <a href=\"#features-depthClampControl\"><code>depthClampControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthClampEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthClampRangeEXT\">vkCmdSetDepthClampRangeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07640",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07641",
          "text": "If the <code><a href=\"#VK_NV_viewport_swizzle\">VK_NV_viewport_swizzle</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07642",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07643",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageToColorEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07644",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageModulationModeNV\">vkCmdSetCoverageModulationModeNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07645",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageModulationMode</code> is any value other than <code>VK_COVERAGE_MODULATION_MODE_NONE_NV</code>, then <a href=\"#vkCmdSetCoverageModulationTableEnableNV\">vkCmdSetCoverageModulationTableEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07646",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageModulationTableEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetCoverageModulationTableNV\">vkCmdSetCoverageModulationTableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07647",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-pipelineFragmentShadingRate-09238",
          "text": "If the <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a> feature is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07648",
          "text": "If the <a href=\"#features-representativeFragmentTest\"><code>representativeFragmentTest</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetRepresentativeFragmentTestEnableNV\">vkCmdSetRepresentativeFragmentTestEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07649",
          "text": "If the <a href=\"#features-coverageReductionMode\"><code>coverageReductionMode</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageReductionModeNV\">vkCmdSetCoverageReductionModeNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-pColorBlendEnables-07470",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> state enabled and the last call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> set <code>pColorBlendEnables</code> for any attachment to <code>VK_TRUE</code>, then for those attachments in the subpass the corresponding 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_BLEND_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-rasterizationSamples-07471",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> follow the rules for a <a href=\"#renderpass-noattachments\">zero-attachment subpass</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-samples-07472",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, then the <code>samples</code> parameter in the last call to <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> be greater or equal to the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a>::<code>rasterizationSamples</code> parameter used to create the bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-samples-07473",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> state and <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> states enabled, then the <code>samples</code> parameter in the last call to <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> be greater or equal to the <code>rasterizationSamples</code> parameter in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-rasterizationSamples-07474",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and neither the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> nor the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extensions are enabled, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil attachments",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-09211",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, or a shader object is bound to any graphics stage, and the current render pass instance includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> be the same as the <code>rasterizationSamples</code> member of that structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-firstAttachment-07476",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEnableEXT</code> calls <strong class=\"purple\">must</strong> specify an enable for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-rasterizerDiscardEnable-09417",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEnableEXT</code> calls <strong class=\"purple\">must</strong> specify an enable for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-firstAttachment-07477",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEquationEXT</code> calls <strong class=\"purple\">must</strong> specify the blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-rasterizerDiscardEnable-09418",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEquationEXT</code> calls <strong class=\"purple\">must</strong> specify the blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-firstAttachment-07478",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorWriteMaskEXT</code> calls <strong class=\"purple\">must</strong> specify the color write mask for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-rasterizerDiscardEnable-09419",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorWriteMaskEXT</code> calls <strong class=\"purple\">must</strong> specify the color write mask for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-firstAttachment-07479",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendAdvancedEXT</code> calls <strong class=\"purple\">must</strong> specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-advancedBlendMaxColorAttachments-07480",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> and <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic states enabled and the last calls to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> and <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> have enabled advanced blending, then the number of active color attachments in the current subpass <strong class=\"purple\">must</strong> not exceed <a href=\"#limits-advancedBlendMaxColorAttachments\"><code>advancedBlendMaxColorAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-primitivesGeneratedQueryWithNonZeroStreams-07481",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, and the bound graphics pipeline was created with <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code> state enabled, the last call to <a href=\"#vkCmdSetRasterizationStreamEXT\">vkCmdSetRasterizationStreamEXT</a> <strong class=\"purple\">must</strong> have set the <code>rasterizationStream</code> to zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsPerPixel-07482",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsPerPixel-07483",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-07484",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-07485",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, then the <code>sampleLocationsInfo.sampleLocationGridSize.width</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-07486",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, then the <code>sampleLocationsInfo.sampleLocationGridSize.height</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-07487",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, the fragment shader code <strong class=\"purple\">must</strong> not statically use the extended instruction <code>InterpolateAtSample</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-07936",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <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 the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-07937",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <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 the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-07938",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-coverageModulationTableEnable-07488",
          "text": "If a shader object is bound to any graphics stage or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code> state enabled, and the last call to <a href=\"#vkCmdSetCoverageModulationTableEnableNV\">vkCmdSetCoverageModulationTableEnableNV</a> set <code>coverageModulationTableEnable</code> to <code>VK_TRUE</code>, then the <code>coverageModulationTableCount</code> parameter in the last call to <a href=\"#vkCmdSetCoverageModulationTableNV\">vkCmdSetCoverageModulationTableNV</a> <strong class=\"purple\">must</strong> equal the current <code>rasterizationSamples</code> divided by the number of color samples in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-rasterizationSamples-07489",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current <code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be the same as the sample count of the depth/stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-coverageToColorEnable-07490",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> state enabled and the last call to <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> set the <code>coverageToColorEnable</code> to <code>VK_TRUE</code>, then the current subpass <strong class=\"purple\">must</strong> have a color attachment at the location selected by the last call to <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-rasterizerDiscardEnable-09420",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the last call to <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> set the <code>coverageToColorEnable</code> to <code>VK_TRUE</code>, then the current subpass <strong class=\"purple\">must</strong> have a color attachment at the location selected by the last call to <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-coverageReductionMode-07491",
          "text": "If this <code><a href=\"#VK_NV_coverage_reduction_mode\">VK_NV_coverage_reduction_mode</a></code> extension is enabled, the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> and <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> states enabled, the current coverage reduction mode <code>coverageReductionMode</code>, then the current <code>rasterizationSamples</code>, and the sample counts for the color and depth/stencil attachments (if the subpass has them) <strong class=\"purple\">must</strong> be a valid combination returned by <a href=\"#vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV\">vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-viewportCount-07492",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-viewportCount-07493",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-viewportCount-09421",
          "text": "If the <code><a href=\"#VK_NV_viewport_swizzle\">VK_NV_viewport_swizzle</a></code> extension is enabled, and a shader object is bound to any graphics stage, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-rasterizationSamples-07494",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, and if the current subpass has any color attachments and <code>rasterizationSamples</code> of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> is greater than the number of color samples, then the pipeline <code>sampleShadingEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-stippledLineEnable-07495",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-stippledLineEnable-07496",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR</code>, then the <a href=\"#features-stippledBresenhamLines\"><code>stippledBresenhamLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-stippledLineEnable-07497",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR</code>, then the <a href=\"#features-stippledSmoothLines\"><code>stippledSmoothLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-stippledLineEnable-07498",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_DEFAULT_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled and <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>strictLines</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-conservativePointAndLineRasterization-07499",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code> dynamic state enabled, <a href=\"#limits-conservativePointAndLineRasterization\"><code>conservativePointAndLineRasterization</code></a> is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the <code>conservativeRasterizationMode</code> set by the last call to <a href=\"#vkCmdSetConservativeRasterizationModeEXT\">vkCmdSetConservativeRasterizationModeEXT</a> <strong class=\"purple\">must</strong> be <code>VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-stage-07073",
          "text": "If the currently bound pipeline was created with the <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a>::<code>stage</code> member of an element of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> set to <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>, then <a href=\"#queries-mesh-shader\">Mesh Shader Queries</a> <strong class=\"purple\">must</strong> not be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08877",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07850",
          "text": "If dynamic state was inherited from <a href=\"#VkCommandBufferInheritanceViewportScissorInfoNV\">VkCommandBufferInheritanceViewportScissorInfoNV</a>, it <strong class=\"purple\">must</strong> be set in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08684",
          "text": "If there is no bound graphics pipeline, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_VERTEX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08685",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08686",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08687",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08688",
          "text": "If there is no bound graphics pipeline, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08689",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TASK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08690",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08693",
          "text": "If there is no bound graphics pipeline, and at least one of the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features is enabled, one of the <code>VK_SHADER_STAGE_VERTEX_BIT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stages <strong class=\"purple\">must</strong> have a valid <code>VkShaderEXT</code> bound, and the other <strong class=\"purple\">must</strong> have no <code>VkShaderEXT</code> bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08694",
          "text": "If there is no bound graphics pipeline, and both the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features are enabled, and a valid <code>VkShaderEXT</code> is bound the to the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage, and that <code>VkShaderEXT</code> was created without the <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> flag, a valid <code>VkShaderEXT</code> <strong class=\"purple\">must</strong> be bound to the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08695",
          "text": "If there is no bound graphics pipeline, and both the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features are enabled, and a valid <code>VkShaderEXT</code> is bound the to the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage, and that <code>VkShaderEXT</code> was created with the <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> flag, there <strong class=\"purple\">must</strong> be no <code>VkShaderEXT</code> bound to the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08696",
          "text": "If there is no bound graphics pipeline, and a valid <code>VkShaderEXT</code> is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, there <strong class=\"purple\">must</strong> be no <code>VkShaderEXT</code> bound to either the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage or the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08698",
          "text": "If any graphics shader is bound which was created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag, then all shaders created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag in the same <a href=\"#vkCreateShadersEXT\">vkCreateShadersEXT</a> call <strong class=\"purple\">must</strong> also be bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08699",
          "text": "If any graphics shader is bound which was created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag, any stages in between stages whose shaders which did not create a shader with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag as part of the same <a href=\"#vkCreateShadersEXT\">vkCreateShadersEXT</a> call <strong class=\"purple\">must</strong> not have any <code>VkShaderEXT</code> bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08878",
          "text": "All bound graphics shader objects <strong class=\"purple\">must</strong> have been created with identical or identically defined push constant ranges",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08879",
          "text": "All bound graphics shader objects <strong class=\"purple\">must</strong> have been created with identical or identically defined arrays of descriptor set layouts",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-colorAttachmentCount-09372",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, and a fragment shader is bound, it <strong class=\"purple\">must</strong> not declare the <code>DepthReplacing</code> or <code>StencilRefReplacingEXT</code> execution modes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-pDynamicStates-08715",
          "text": "If the bound graphics pipeline state includes a fragment shader stage, was created with <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpDepthAttachmentReadEXT</code>, the <code>depthWriteEnable</code> parameter in the last call to <a href=\"#vkCmdSetDepthWriteEnable\">vkCmdSetDepthWriteEnable</a> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-pDynamicStates-08716",
          "text": "If the bound graphics pipeline state includes a fragment shader stage, was created with <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpStencilAttachmentReadEXT</code>, the <code>writeMask</code> parameter in the last call to <a href=\"#vkCmdSetStencilWriteMask\">vkCmdSetStencilWriteMask</a> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-09116",
          "text": "If     a shader object is bound to any graphics stage or     the currently bound graphics pipeline was created with     <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code>,     and the format of any color attachment is     <code>VK_FORMAT_E5B9G9R9_UFLOAT_PACK32</code>, the corresponding element of the     <code>pColorWriteMasks</code> parameter of <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a>     <strong class=\"purple\">must</strong> either include all of <code>VK_COLOR_COMPONENT_R_BIT</code>,     <code>VK_COLOR_COMPONENT_G_BIT</code>, and <code>VK_COLOR_COMPONENT_B_BIT</code>, or     none of them",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-maxFragmentDualSrcAttachments-09239",
          "text": "If <a href=\"#framebuffer-blending\">blending</a> is enabled for any attachment where either the source or destination blend factors for that attachment <a href=\"#framebuffer-dsb\">use the secondary color input</a>, the maximum value of <code>Location</code> for any output attachment <a href=\"#shaders-staticuse\">statically used</a> in the <code>Fragment</code> <code>Execution</code> <code>Model</code> executed by this command <strong class=\"purple\">must</strong> be less than <a href=\"#limits-maxFragmentDualSrcAttachments\"><code>maxFragmentDualSrcAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-09548",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and there is no shader object bound to any graphics stage, the value of each element of <a href=\"#VkRenderingAttachmentLocationInfoKHR\">VkRenderingAttachmentLocationInfoKHR</a>::<code>pColorAttachmentLocations</code> set by <a href=\"#vkCmdSetRenderingAttachmentLocationsKHR\">vkCmdSetRenderingAttachmentLocationsKHR</a> <strong class=\"purple\">must</strong> match the value set for the corresponding element in the currently bound pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-09549",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and there is no shader object bound to any graphics stage, input attachment index mappings in the currently bound pipeline <strong class=\"purple\">must</strong> match those set for the current render pass instance via <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-09642",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with the <code>VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT</code> flag, the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-09643",
          "text": "If the bound graphics pipeline was created with <code>VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT</code>, the current render pass <strong class=\"purple\">must</strong> have begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with the <code>VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT</code> flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-02712",
          "text": "If <code>commandBuffer</code> is a protected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, any resource written to by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be an unprotected resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-02713",
          "text": "If <code>commandBuffer</code> is a protected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, pipeline stages other than the framebuffer-space and compute stages in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not write to any resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-04617",
          "text": "If any of the shader stages of the <code>VkPipeline</code> bound to the pipeline bind point used by this command uses the <a href=\"#spirvenv-capabilities-table-RayQueryKHR\"><code>RayQueryKHR</code></a> capability, then <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-04007",
          "text": "All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> buffers bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-04008",
          "text": "If the <a href=\"#features-nullDescriptor\"><code>nullDescriptor</code></a> feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-02721",
          "text": "If <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> is not enabled, and that pipeline was created without enabling <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> for <code>vertexInputs</code>, then 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07842",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY</code> dynamic state enabled     then <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> <strong class=\"purple\">must</strong> have been called and not     subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current     command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-dynamicPrimitiveTopologyUnrestricted-07500",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY</code> dynamic state enabled and the <a href=\"#limits-dynamicPrimitiveTopologyUnrestricted\"><code>dynamicPrimitiveTopologyUnrestricted</code></a> is <code>VK_FALSE</code>, then the <code>primitiveTopology</code> parameter of <code>vkCmdSetPrimitiveTopology</code> <strong class=\"purple\">must</strong> be of the same <a href=\"#drawing-primitive-topology-class\">topology class</a> as the pipeline <a href=\"#VkPipelineInputAssemblyStateCreateInfo\">VkPipelineInputAssemblyStateCreateInfo</a>::<code>topology</code> state",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-pStrides-04913",
          "text": "If the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE</code> dynamic state enabled, but without the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdBindVertexBuffers2\">vkCmdBindVertexBuffers2</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this draw command, and the <code>pStrides</code> parameter of <a href=\"#vkCmdBindVertexBuffers2\">vkCmdBindVertexBuffers2</a> <strong class=\"purple\">must</strong> not be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-04914",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     then <a href=\"#vkCmdSetVertexInputEXT\">vkCmdSetVertexInputEXT</a> <strong class=\"purple\">must</strong> have been called and not     subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current     command buffer prior to this draw command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-Input-07939",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     then all variables with the <code>Input</code> storage class decorated with     <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code>     <strong class=\"purple\">must</strong> contain a location in     <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>location</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-Input-08734",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     and either <a href=\"#features-legacyVertexAttributes\"><code>legacyVertexAttributes</code></a> is not enabled or the SPIR-V Type     associated with a given <code>Input</code> variable of the corresponding     <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code> is     64-bit,     then the numeric type associated with all <code>Input</code> variables of the     corresponding <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code>     <code>OpEntryPoint</code> <strong class=\"purple\">must</strong> be the same as     <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>format</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-format-08936",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     and <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>format</code> has a     64-bit component, then the scalar width associated with all <code>Input</code>     variables of the corresponding <code>Location</code> in the <code>Vertex</code>     <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code> <strong class=\"purple\">must</strong> be 64-bit",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-format-08937",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     and the scalar width associated with a <code>Location</code> decorated     <code>Input</code> variable in the <code>Vertex</code> <code>Execution</code> <code>Model</code>     <code>OpEntryPoint</code> is 64-bit, then the corresponding     <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>format</code> <strong class=\"purple\">must</strong> have a     64-bit component",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-09203",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     and <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>format</code> has a     64-bit component, then all <code>Input</code> variables at the corresponding     <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code>     <strong class=\"purple\">must</strong> not use components that are not present in the format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-04875",
          "text": "If     there is a shader object bound to the     <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT</code> dynamic state enabled,     and the <a href=\"#dynamic-state-current-value\">current value</a> of     <code>primitiveTopology</code> is <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, then     <a href=\"#vkCmdSetPatchControlPointsEXT\">vkCmdSetPatchControlPointsEXT</a> <strong class=\"purple\">must</strong> have been called and not     subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current     command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-04879",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE</code> dynamic state enabled     then <a href=\"#vkCmdSetPrimitiveRestartEnable\">vkCmdSetPrimitiveRestartEnable</a> <strong class=\"purple\">must</strong> have been called and not     subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current     command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-09637",
          "text": "If     the <a href=\"#features-primitiveTopologyListRestart\"><code>primitiveTopologyListRestart</code></a> feature is not enabled,     the topology 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>, or     <code>VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY</code>,     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE</code> dynamic state enabled     then <a href=\"#vkCmdSetPrimitiveRestartEnable\">vkCmdSetPrimitiveRestartEnable</a> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-stage-06481",
          "text": "The bound graphics pipeline <strong class=\"purple\">must</strong> not have been created with the <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a>::<code>stage</code> member of an element of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> set to <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08885",
          "text": "There <strong class=\"purple\">must</strong> be no shader object bound to either of the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07312",
          "text": "If <a href=\"#features-maintenance6\"><code>maintenance6</code></a> is not enabled, a valid index buffer <strong class=\"purple\">must</strong> be bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-pNext-09461",
          "text": "If the bound graphics pipeline state was created with <a href=\"#VkPipelineVertexInputDivisorStateCreateInfoKHR\">VkPipelineVertexInputDivisorStateCreateInfoKHR</a> in the <code>pNext</code> chain of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pVertexInputState</code>, any member of <a href=\"#VkPipelineVertexInputDivisorStateCreateInfoKHR\">VkPipelineVertexInputDivisorStateCreateInfoKHR</a>::<code>pVertexBindingDivisors</code> has a value other than <code>1</code> in <code>divisor</code>, and <a href=\"#VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR\">VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR</a>::<code>supportsNonZeroFirstInstance</code> is <code>VK_FALSE</code>, then <code>firstInstance</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-09462",
          "text": "If <a href=\"#shaders-objects\">shader objects</a> are used for drawing or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled, any member of the <code>pVertexBindingDescriptions</code> parameter to the <a href=\"#vkCmdSetVertexInputEXT\">vkCmdSetVertexInputEXT</a> call that sets this dynamic state has a value other than <code>1</code> in <code>divisor</code>, and <a href=\"#VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR\">VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR</a>::<code>supportsNonZeroFirstInstance</code> is <code>VK_FALSE</code>, then <code>firstInstance</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-robustBufferAccess2-08798",
          "text": "If <a href=\"#features-robustBufferAccess2\"><code>robustBufferAccess2</code></a> is not enabled, <span class=\"eq\">(<code>indexSize</code> × (<code>firstIndex</code> +  <code>indexCount</code>) +  <code>offset</code>)</span> <strong class=\"purple\">must</strong> be less than or equal to the size of the bound index buffer, with <code>indexSize</code> being based on the type specified by <code>indexType</code>, where the index buffer, <code>indexType</code>, and <code>offset</code> are specified via <code>vkCmdBindIndexBuffer</code> or <code>vkCmdBindIndexBuffer2KHR</code>. If <code>vkCmdBindIndexBuffer2KHR</code> is used to bind the index buffer, the size of the bound index buffer is <a href=\"#vkCmdBindIndexBuffer2KHR\">vkCmdBindIndexBuffer2KHR</a>::<code>size</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-04937",
          "text": "The <a href=\"#features-multiDraw\"><code>multiDraw</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-drawCount-04939",
          "text": "<code>drawCount</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceMultiDrawPropertiesEXT</code>::<code>maxMultiDrawCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-drawCount-04940",
          "text": "If <code>drawCount</code> is greater than zero, <code>pIndexInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to memory containing one or more valid instances of <a href=\"#VkMultiDrawIndexedInfoEXT\">VkMultiDrawIndexedInfoEXT</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-drawCount-09629",
          "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>VkMultiDrawIndexedInfoEXT</code>)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-pVertexOffset-parameter",
          "text": "If <code>pVertexOffset</code> is not <code>NULL</code>, <code>pVertexOffset</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>int32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMultiIndexedEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdDrawIndirect": {
      "core": [
        {
          "vuid": "VUID-vkCmdDrawIndirect-magFilter-04553",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-magFilter-09598",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-mipmapMode-04770",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-mipmapMode-09599",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-unnormalizedCoordinates-09635",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>levelCount</code> and <code>layerCount</code> <strong class=\"purple\">must</strong> be 1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-unnormalizedCoordinates-09636",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_VIEW_TYPE_1D</code> or <code>VK_IMAGE_VIEW_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-06479",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is sampled with <a href=\"#textures-depth-compare-operation\">depth comparison</a>, 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_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-02691",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed using atomic operations as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07888",
          "text": "If a <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> descriptor is accessed using atomic operations as a result of this command, then the storage texel buffer&#8217;s <a href=\"#resources-buffer-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-02692",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-02693",
          "text": "If the <a href=\"#VK_EXT_filter_cubic\">VK_EXT_filter_cubic</a> extension is not enabled and any <a href=\"#VkImageView\">VkImageView</a> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, it <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-filterCubic-02694",
          "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 <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubic</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-filterCubicMinmax-02695",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubicMinmax</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-cubicRangeClamp-09212",
          "text": "If the <a href=\"#features-filter-cubic-range-clamp\"><code>cubicRangeClamp</code></a> feature is not enabled, then 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=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-reductionMode-09213",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with a <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code> as a result of this command <strong class=\"purple\">must</strong> sample with <code>VK_FILTER_CUBIC_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-selectableCubicWeights-09214",
          "text": "If the <a href=\"#features-filter-cubic-weight-selection\"><code>selectableCubicWeights</code></a> feature is not enabled, then 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 href=\"#VkSamplerCubicWeightsCreateInfoQCOM\">VkSamplerCubicWeightsCreateInfoQCOM</a>::<code>cubicWeights</code> equal to <code>VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-flags-02696",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-OpTypeImage-07027",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being written as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-OpTypeImage-07028",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being read as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-OpTypeImage-07029",
          "text": "For any <a href=\"#VkBufferView\">VkBufferView</a> being written as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-OpTypeImage-07030",
          "text": "Any <a href=\"#VkBufferView\">VkBufferView</a> being read as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code> then the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08600",
          "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08601",
          "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-10068",
          "text": "For each array of resources that is used by <a href=\"#shaders-binding\">a bound shader</a>, the indices used to access members of the array <strong class=\"purple\">must</strong> be less than the descriptor count for the identified binding in the descriptor sets used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-maintenance4-08602",
          "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08114",
          "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08115",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created without <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08116",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08604",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08117",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08119",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkPipeline\">VkPipeline</a> created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08605",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkShaderEXT\">VkShaderEXT</a> created with a <code>VkDescriptorSetLayout</code> that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08606",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is not enabled, a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08608",
          "text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state specified statically in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08609",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <a href=\"#VkImage\">VkImage</a> with a <a href=\"#VkImageView\">VkImageView</a> 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08610",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08611",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08607",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-uniformBuffers-06935",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08612",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-storageBuffers-06936",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>storageBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08613",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-02707",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, any resource accessed by <a href=\"#shaders-binding\">bound shaders</a> <strong class=\"purple\">must</strong> not be a protected resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-06550",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> only be used with <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-ConstOffset-06551",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> not use the <code>ConstOffset</code> and <code>Offset</code> operands",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-viewType-07752",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> match the <code>Dim</code> operand of the <code>OpTypeImage</code> as described in <a href=\"#spirvenv-image-dimensions\">Compatibility Between SPIR-V Image Dimensions and Vulkan ImageView Types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-format-07753",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the <a href=\"#formats-numericformat\">numeric type</a> of the image view&#8217;s <code>format</code> and the <code>Sampled</code> <code>Type</code> operand of the <code>OpTypeImage</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-OpImageWrite-08795",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with a format other than <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-OpImageWrite-08796",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with the format <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have four components",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-OpImageWrite-04469",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the buffer view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-SampledType-04470",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-SampledType-04471",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-SampledType-04472",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-SampledType-04473",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-sparseImageInt64Atomics-04474",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-sparseImageInt64Atomics-04475",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-OpImageWeightedSampleQCOM-06971",
          "text": "If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-OpImageWeightedSampleQCOM-06972",
          "text": "If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image 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_2_WEIGHT_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-OpImageBoxFilterQCOM-06973",
          "text": "If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-OpImageBlockMatchSSDQCOM-06974",
          "text": "If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-OpImageBlockMatchSADQCOM-06975",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-OpImageBlockMatchSADQCOM-06976",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-OpImageWeightedSampleQCOM-06977",
          "text": "If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-OpImageWeightedSampleQCOM-06978",
          "text": "If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-OpImageBlockMatchWindow-09215",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-OpImageBlockMatchWindow-09216",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s format <strong class=\"purple\">must</strong> be a single-component format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-OpImageBlockMatchWindow-09217",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07288",
          "text": "Any shader invocation executed by this command <strong class=\"purple\">must</strong> <a href=\"#shaders-termination\">terminate</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-09600",
          "text": "If a descriptor with type equal to any of <code>VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> is accessed as a result of this command, the image subresource identified by that descriptor <strong class=\"purple\">must</strong> be in the image layout identified when the descriptor was written",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-renderPass-02684",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-subpass-02685",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07748",
          "text": "If any shader statically accesses an input attachment, a valid descriptor <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-OpTypeImage-07468",
          "text": "If any shader executed by this pipeline accesses an <code>OpTypeImage</code> variable with a <code>Dim</code> operand of <code>SubpassData</code>, it <strong class=\"purple\">must</strong> be decorated with an <code>InputAttachmentIndex</code> that corresponds to a valid input attachment in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07469",
          "text": "Input attachment views accessed in a subpass <strong class=\"purple\">must</strong> be created with the same <a href=\"#VkFormat\">VkFormat</a> as the corresponding subpass definition, and be created with a <a href=\"#VkImageView\">VkImageView</a> that is compatible with the attachment referenced by the subpass' <code>pInputAttachments</code>[<code>InputAttachmentIndex</code>] in the currently bound <a href=\"#VkFramebuffer\">VkFramebuffer</a> as specified by <a href=\"#compatibility-inputattachment\">Fragment Input Attachment Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-pDepthInputAttachmentIndex-09595",
          "text": "Input attachment views accessed in a dynamic render pass with a <code>InputAttachmentIndex</code> referenced by <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>, or no <code>InputAttachmentIndex</code> if <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pDepthInputAttachmentIndex</code> or <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pStencilInputAttachmentIndex</code> are <code>NULL</code>, <strong class=\"purple\">must</strong> be created with a <a href=\"#VkImageView\">VkImageView</a> that is compatible with the corresponding color, depth, or stencil attachment in <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-pDepthInputAttachmentIndex-09596",
          "text": "Input attachment views accessed in a dynamic render pass via a shader object <strong class=\"purple\">must</strong> have an <code>InputAttachmentIndex</code> if both <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pDepthInputAttachmentIndex</code> and <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pStencilInputAttachmentIndex</code> are non-<code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-InputAttachmentIndex-09597",
          "text": "If an input attachment view accessed in a dynamic render pass via a shader object has an <code>InputAttachmentIndex</code>, the <code>InputAttachmentIndex</code> <strong class=\"purple\">must</strong> match an index in <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-06537",
          "text": "Memory backing image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be written in any way other than as an attachment by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-09000",
          "text": "If a color attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe <code>VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code> is\nset on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_COLOR_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-09001",
          "text": "If a depth attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe\n<code>VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code>\nis set on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_DEPTH_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-09002",
          "text": "If a stencil attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe\n<code>VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code>\nis set on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_STENCIL_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-09003",
          "text": "If an attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment, storage image, or sampled image by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-06539",
          "text": "If any previously recorded command in the current subpass accessed an image subresource used as an attachment in this subpass in any way other than as an attachment, this command <strong class=\"purple\">must</strong> not write to that image subresource as an attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-06886",
          "text": "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, <a href=\"#fragops-depth-write\">depth writes</a> <strong class=\"purple\">must</strong> be disabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-06887",
          "text": "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back <code>writeMask</code> are not zero, and stencil test is enabled, <a href=\"#fragops-stencil\">all stencil ops</a> <strong class=\"purple\">must</strong> be <code>VK_STENCIL_OP_KEEP</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07831",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT</code> dynamic state enabled then <a href=\"#vkCmdSetViewport\">vkCmdSetViewport</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07832",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR</code> dynamic state enabled then <a href=\"#vkCmdSetScissor\">vkCmdSetScissor</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07833",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_WIDTH</code> dynamic state enabled then <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08617",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08618",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08619",
          "text": "If a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07834",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthBiasEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthBounds\">vkCmdSetDepthBounds</a> or <a href=\"#vkCmdSetDepthBias2EXT\">vkCmdSetDepthBias2EXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07835",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_BLEND_CONSTANTS</code> dynamic state enabled then <a href=\"#vkCmdSetBlendConstants\">vkCmdSetBlendConstants</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08621",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> in the current command buffer set any element of <code>pColorBlendEnables</code> to <code>VK_TRUE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> in the current command buffer set the same element of <code>pColorBlendEquations</code> to a <code>VkColorBlendEquationEXT</code> structure with any <a href=\"#VkBlendFactor\">VkBlendFactor</a> member with a value of <code>VK_BLEND_FACTOR_CONSTANT_COLOR</code>, <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR</code>, <code>VK_BLEND_FACTOR_CONSTANT_ALPHA</code>, or <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA</code>, <a href=\"#vkCmdSetBlendConstants\">vkCmdSetBlendConstants</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07836",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthBoundsTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthBounds\">vkCmdSetDepthBounds</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07837",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilCompareMask\">vkCmdSetStencilCompareMask</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07838",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilWriteMask\">vkCmdSetStencilWriteMask</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07839",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_REFERENCE</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of and <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilReference\">vkCmdSetStencilReference</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-maxMultiviewInstanceIndex-02688",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-sampleLocationsEnable-02689",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-06666",
          "text": "If the <code><a href=\"#VK_EXT_sample_locations\">VK_EXT_sample_locations</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07840",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_CULL_MODE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCullMode\">vkCmdSetCullMode</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07841",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_FRONT_FACE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetFrontFace\">vkCmdSetFrontFace</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07843",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, <a href=\"#vkCmdSetDepthTestEnable\">vkCmdSetDepthTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07844",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthWriteEnable\">vkCmdSetDepthWriteEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07845",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_COMPARE_OP</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthCompareOp\">vkCmdSetDepthCompareOp</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07846",
          "text": "If the <a href=\"#features-depthBounds\"><code>depthBounds</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthBoundsTestEnable\">vkCmdSetDepthBoundsTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07847",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetStencilTestEnable\">vkCmdSetStencilTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07848",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_OP</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilOp\">vkCmdSetStencilOp</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-viewportCount-03417",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-scissorCount-03418",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, then <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-viewportCount-03419",
          "text": "If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> and <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08635",
          "text": "If a shader object is bound to any graphics stage, then both <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> and <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-viewportCount-04137",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-viewportCount-04138",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08636",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-viewportCount-04139",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-shadingRateImage-09233",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV</code> and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-shadingRateImage-09234",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08637",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-VkPipelineVieportCreateInfo-04141",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled and a <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> structure chained from <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-VkPipelineVieportCreateInfo-04142",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled and a <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> structure chained from <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07878",
          "text": "If the <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetExclusiveScissorEnableNV\">vkCmdSetExclusiveScissorEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07879",
          "text": "If the <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV</code> dynamic state enabled, and the most recent call to <a href=\"#vkCmdSetExclusiveScissorEnableNV\">vkCmdSetExclusiveScissorEnableNV</a> in the current command buffer set any element of <code>pExclusiveScissorEnables</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetExclusiveScissorNV\">vkCmdSetExclusiveScissorNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-04876",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-04877",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthBiasEnable\">vkCmdSetDepthBiasEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-logicOp-04878",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_LOGIC_OP_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>logicOpEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetLogicOpEXT\">vkCmdSetLogicOpEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-primitiveFragmentShadingRateWithMultipleViewports-04552",
          "text": "If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-primitiveFragmentShadingRateWithMultipleViewports-08642",
          "text": "If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, and any shader object bound to a graphics stage writes to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-blendEnable-04727",
          "text": "If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the <code>blendEnable</code> member of the corresponding element of the <code>pAttachments</code> member of <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08643",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then for each color attachment in the render pass, if the corresponding image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the corresponding member of <code>pColorBlendEnables</code> in the most recent call to <code>vkCmdSetColorBlendEnableEXT</code> in the current command buffer that affected that attachment index <strong class=\"purple\">must</strong> have been <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-multisampledRenderToSingleSampled-07284",
          "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then <code>rasterizationSamples</code> for the currently bound graphics pipeline\n<strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil\nattachments</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08644",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the\ncurrent command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the\nsame as the number of samples for the current render pass color and/or\ndepth/stencil attachments</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08876",
          "text": "If a shader object is bound to any graphics stage, the current render pass instance <strong class=\"purple\">must</strong> have been begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-imageView-06172",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-imageView-06173",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-imageView-06174",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-imageView-06175",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-imageView-06176",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-imageView-06177",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-viewMask-06178",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>viewMask</code> equal to <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>viewMask</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-colorAttachmentCount-06179",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>colorAttachmentCount</code> equal to <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-08910",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-08912",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-08911",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-colorAttachmentCount-09362",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, there is no shader object bound to any graphics stage, and a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>resolveImageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with an image created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value equal to the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-09363",
          "text": "If there is no shader object bound to any graphics stage, the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, and a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with an image created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value equal to the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-09364",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have set the blend enable to <code>VK_FALSE</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-09365",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to <code>VK_SAMPLE_COUNT_1_BIT</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-09366",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have set blend enable to <code>VK_FALSE</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-rasterizationSamples-09367",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to <code>VK_SAMPLE_COUNT_1_BIT</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-09368",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;width</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-09369",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;height</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-pFragmentSize-09370",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;width</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-pFragmentSize-09371",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;height</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07749",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteEnableEXT\">vkCmdSetColorWriteEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08646",
          "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is enabled on the device, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorWriteEnableEXT\">vkCmdSetColorWriteEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-attachmentCount-07750",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code> dynamic state enabled then the <code>attachmentCount</code> parameter of <code>vkCmdSetColorWriteEnableEXT</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>VkPipelineColorBlendStateCreateInfo</code>::<code>attachmentCount</code> of the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08647",
          "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is enabled on the device, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then the <code>attachmentCount</code> parameter of most recent call to <code>vkCmdSetColorWriteEnableEXT</code> in the current command buffer <strong class=\"purple\">must</strong> be greater than or equal to the number of color attachments in the current render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07751",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleEXT\">vkCmdSetDiscardRectangleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command for each discard rectangle in <a href=\"#VkPipelineDiscardRectangleStateCreateInfoEXT\">VkPipelineDiscardRectangleStateCreateInfoEXT</a>::<code>discardRectangleCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07880",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-rasterizerDiscardEnable-09236",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> in the current command buffer set <code>discardRectangleEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDiscardRectangleEXT\">vkCmdSetDiscardRectangleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08648",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07881",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleModeEXT\">vkCmdSetDiscardRectangleModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08649",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> in the current command buffer set <code>discardRectangleEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDiscardRectangleModeEXT\">vkCmdSetDiscardRectangleModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-08913",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-08914",
          "text": "If current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-08915",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline was not equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>, the value of the format <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-08916",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-08917",
          "text": "If current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-dynamicRenderingUnusedAttachments-08918",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline was not equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>, the value of the format <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-imageView-06183",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a>::<code>imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-imageView-06184",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingFragmentDensityMapAttachmentInfoEXT\">VkRenderingFragmentDensityMapAttachmentInfoEXT</a>::<code>imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-colorAttachmentCount-06185",
          "text": "If the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the corresponding element of the <code>pColorAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-pDepthAttachment-06186",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-pStencilAttachment-06187",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-multisampledRenderToSingleSampled-07285",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     the current render pass instance was begun with     <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than     <code>0</code>, then each element of the     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a     <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been     created with a sample count equal to the value of     <code>rasterizationSamples</code> for the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-multisampledRenderToSingleSampled-07286",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not     <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the     currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count     used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-multisampledRenderToSingleSampled-07287",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not     <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the     currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count     used to create     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-pNext-07935",
          "text": "If this command has been called inside a render pass instance started with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and the <code>pNext</code> chain of <a href=\"#VkRenderingInfo\">VkRenderingInfo</a> includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a>::<code>rasterizationSamples</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-renderPass-06198",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>renderPass</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-pColorAttachments-08963",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound with a fragment shader that statically writes to a color attachment, the color write mask is not zero, color writes are enabled, and the corresponding element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-pDepthAttachment-08964",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound, depth test is enabled, depth write is enabled, and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-pStencilAttachment-08965",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound, stencil test is enabled and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-primitivesGeneratedQueryWithRasterizerDiscard-06708",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithRasterizerDiscard\"><code>primitivesGeneratedQueryWithRasterizerDiscard</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, <a href=\"#primsrast-discard\">rasterization discard</a> <strong class=\"purple\">must</strong> not be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-primitivesGeneratedQueryWithNonZeroStreams-06709",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, the bound graphics pipeline <strong class=\"purple\">must</strong> not have been created with a non-zero value in <code>VkPipelineRasterizationStateStreamCreateInfoEXT</code>::<code>rasterizationStream</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07619",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetTessellationDomainOriginEXT\">vkCmdSetTessellationDomainOriginEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07620",
          "text": "If the <a href=\"#features-depthClamp\"><code>depthClamp</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthClampEnableEXT\">vkCmdSetDepthClampEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07621",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_POLYGON_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07622",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07623",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-alphaToCoverageEnable-08919",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic state enabled, and <code>alphaToCoverageEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-alphaToCoverageEnable-08920",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a> in the current command buffer set <code>alphaToCoverageEnable</code> to <code>VK_TRUE</code>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07624",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07625",
          "text": "If the <a href=\"#features-alphaToOne\"><code>alphaToOne</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAlphaToOneEnableEXT\">vkCmdSetAlphaToOneEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07626",
          "text": "If the <a href=\"#features-logicOp\"><code>logicOp</code></a> feature is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLogicOpEnableEXT\">vkCmdSetLogicOpEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07627",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08657",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07628",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08658",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> for any attachment set that attachment&#8217;s value in <code>pColorBlendEnables</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07629",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08659",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07630",
          "text": "If the <a href=\"#features-geometryStreams\"><code>geometryStreams</code></a> feature is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizationStreamEXT\">vkCmdSetRasterizationStreamEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07631",
          "text": "If the <code><a href=\"#VK_EXT_conservative_rasterization\">VK_EXT_conservative_rasterization</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetConservativeRasterizationModeEXT\">vkCmdSetConservativeRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07632",
          "text": "If the <code><a href=\"#VK_EXT_conservative_rasterization\">VK_EXT_conservative_rasterization</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>conservativeRasterizationMode</code> is <code>VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT</code>, then <a href=\"#vkCmdSetExtraPrimitiveOverestimationSizeEXT\">vkCmdSetExtraPrimitiveOverestimationSizeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07633",
          "text": "If the <a href=\"#features-depthClipEnable\"><code>depthClipEnable</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT</code> dynamic state, then <a href=\"#vkCmdSetDepthClipEnableEXT\">vkCmdSetDepthClipEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07634",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08664",
          "text": "If the <code><a href=\"#VK_EXT_sample_locations\">VK_EXT_sample_locations</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07635",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-rasterizerDiscardEnable-09416",
          "text": "If the <code><a href=\"#VK_EXT_blend_operation_advanced\">VK_EXT_blend_operation_advanced</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then at least one of <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> and <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07636",
          "text": "If the <code><a href=\"#VK_EXT_provoking_vertex\">VK_EXT_provoking_vertex</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetProvokingVertexModeEXT\">vkCmdSetProvokingVertexModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07637",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08666",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08667",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08668",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07638",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08669",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08670",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08671",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07849",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_KHR</code>     dynamic state enabled then <a href=\"#vkCmdSetLineStippleKHR\">vkCmdSetLineStippleKHR</a>     <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing     command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08672",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> in the current command buffer set <code>stippledLineEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetLineStippleEXT\">vkCmdSetLineStippleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07639",
          "text": "If the <a href=\"#features-depthClipControl\"><code>depthClipControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetDepthClipNegativeOneToOneEXT\">vkCmdSetDepthClipNegativeOneToOneEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-09650",
          "text": "If the <a href=\"#features-depthClampControl\"><code>depthClampControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthClampEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthClampRangeEXT\">vkCmdSetDepthClampRangeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07640",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07641",
          "text": "If the <code><a href=\"#VK_NV_viewport_swizzle\">VK_NV_viewport_swizzle</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07642",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07643",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageToColorEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07644",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageModulationModeNV\">vkCmdSetCoverageModulationModeNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07645",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageModulationMode</code> is any value other than <code>VK_COVERAGE_MODULATION_MODE_NONE_NV</code>, then <a href=\"#vkCmdSetCoverageModulationTableEnableNV\">vkCmdSetCoverageModulationTableEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07646",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageModulationTableEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetCoverageModulationTableNV\">vkCmdSetCoverageModulationTableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07647",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-pipelineFragmentShadingRate-09238",
          "text": "If the <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a> feature is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07648",
          "text": "If the <a href=\"#features-representativeFragmentTest\"><code>representativeFragmentTest</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetRepresentativeFragmentTestEnableNV\">vkCmdSetRepresentativeFragmentTestEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07649",
          "text": "If the <a href=\"#features-coverageReductionMode\"><code>coverageReductionMode</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageReductionModeNV\">vkCmdSetCoverageReductionModeNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-pColorBlendEnables-07470",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> state enabled and the last call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> set <code>pColorBlendEnables</code> for any attachment to <code>VK_TRUE</code>, then for those attachments in the subpass the corresponding 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_BLEND_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-rasterizationSamples-07471",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> follow the rules for a <a href=\"#renderpass-noattachments\">zero-attachment subpass</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-samples-07472",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, then the <code>samples</code> parameter in the last call to <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> be greater or equal to the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a>::<code>rasterizationSamples</code> parameter used to create the bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-samples-07473",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> state and <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> states enabled, then the <code>samples</code> parameter in the last call to <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> be greater or equal to the <code>rasterizationSamples</code> parameter in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-rasterizationSamples-07474",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and neither the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> nor the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extensions are enabled, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil attachments",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-09211",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, or a shader object is bound to any graphics stage, and the current render pass instance includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> be the same as the <code>rasterizationSamples</code> member of that structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-firstAttachment-07476",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEnableEXT</code> calls <strong class=\"purple\">must</strong> specify an enable for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-rasterizerDiscardEnable-09417",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEnableEXT</code> calls <strong class=\"purple\">must</strong> specify an enable for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-firstAttachment-07477",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEquationEXT</code> calls <strong class=\"purple\">must</strong> specify the blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-rasterizerDiscardEnable-09418",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEquationEXT</code> calls <strong class=\"purple\">must</strong> specify the blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-firstAttachment-07478",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorWriteMaskEXT</code> calls <strong class=\"purple\">must</strong> specify the color write mask for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-rasterizerDiscardEnable-09419",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorWriteMaskEXT</code> calls <strong class=\"purple\">must</strong> specify the color write mask for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-firstAttachment-07479",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendAdvancedEXT</code> calls <strong class=\"purple\">must</strong> specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-advancedBlendMaxColorAttachments-07480",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> and <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic states enabled and the last calls to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> and <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> have enabled advanced blending, then the number of active color attachments in the current subpass <strong class=\"purple\">must</strong> not exceed <a href=\"#limits-advancedBlendMaxColorAttachments\"><code>advancedBlendMaxColorAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-primitivesGeneratedQueryWithNonZeroStreams-07481",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, and the bound graphics pipeline was created with <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code> state enabled, the last call to <a href=\"#vkCmdSetRasterizationStreamEXT\">vkCmdSetRasterizationStreamEXT</a> <strong class=\"purple\">must</strong> have set the <code>rasterizationStream</code> to zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-sampleLocationsPerPixel-07482",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-sampleLocationsPerPixel-07483",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-sampleLocationsEnable-07484",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-sampleLocationsEnable-07485",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, then the <code>sampleLocationsInfo.sampleLocationGridSize.width</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-sampleLocationsEnable-07486",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, then the <code>sampleLocationsInfo.sampleLocationGridSize.height</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-sampleLocationsEnable-07487",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, the fragment shader code <strong class=\"purple\">must</strong> not statically use the extended instruction <code>InterpolateAtSample</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-sampleLocationsEnable-07936",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <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 the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-sampleLocationsEnable-07937",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <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 the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-sampleLocationsEnable-07938",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-coverageModulationTableEnable-07488",
          "text": "If a shader object is bound to any graphics stage or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code> state enabled, and the last call to <a href=\"#vkCmdSetCoverageModulationTableEnableNV\">vkCmdSetCoverageModulationTableEnableNV</a> set <code>coverageModulationTableEnable</code> to <code>VK_TRUE</code>, then the <code>coverageModulationTableCount</code> parameter in the last call to <a href=\"#vkCmdSetCoverageModulationTableNV\">vkCmdSetCoverageModulationTableNV</a> <strong class=\"purple\">must</strong> equal the current <code>rasterizationSamples</code> divided by the number of color samples in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-rasterizationSamples-07489",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current <code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be the same as the sample count of the depth/stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-coverageToColorEnable-07490",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> state enabled and the last call to <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> set the <code>coverageToColorEnable</code> to <code>VK_TRUE</code>, then the current subpass <strong class=\"purple\">must</strong> have a color attachment at the location selected by the last call to <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-rasterizerDiscardEnable-09420",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the last call to <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> set the <code>coverageToColorEnable</code> to <code>VK_TRUE</code>, then the current subpass <strong class=\"purple\">must</strong> have a color attachment at the location selected by the last call to <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-coverageReductionMode-07491",
          "text": "If this <code><a href=\"#VK_NV_coverage_reduction_mode\">VK_NV_coverage_reduction_mode</a></code> extension is enabled, the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> and <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> states enabled, the current coverage reduction mode <code>coverageReductionMode</code>, then the current <code>rasterizationSamples</code>, and the sample counts for the color and depth/stencil attachments (if the subpass has them) <strong class=\"purple\">must</strong> be a valid combination returned by <a href=\"#vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV\">vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-viewportCount-07492",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-viewportCount-07493",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-viewportCount-09421",
          "text": "If the <code><a href=\"#VK_NV_viewport_swizzle\">VK_NV_viewport_swizzle</a></code> extension is enabled, and a shader object is bound to any graphics stage, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-rasterizationSamples-07494",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, and if the current subpass has any color attachments and <code>rasterizationSamples</code> of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> is greater than the number of color samples, then the pipeline <code>sampleShadingEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-stippledLineEnable-07495",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-stippledLineEnable-07496",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR</code>, then the <a href=\"#features-stippledBresenhamLines\"><code>stippledBresenhamLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-stippledLineEnable-07497",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR</code>, then the <a href=\"#features-stippledSmoothLines\"><code>stippledSmoothLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-stippledLineEnable-07498",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_DEFAULT_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled and <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>strictLines</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-conservativePointAndLineRasterization-07499",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code> dynamic state enabled, <a href=\"#limits-conservativePointAndLineRasterization\"><code>conservativePointAndLineRasterization</code></a> is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the <code>conservativeRasterizationMode</code> set by the last call to <a href=\"#vkCmdSetConservativeRasterizationModeEXT\">vkCmdSetConservativeRasterizationModeEXT</a> <strong class=\"purple\">must</strong> be <code>VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-stage-07073",
          "text": "If the currently bound pipeline was created with the <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a>::<code>stage</code> member of an element of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> set to <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>, then <a href=\"#queries-mesh-shader\">Mesh Shader Queries</a> <strong class=\"purple\">must</strong> not be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08877",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07850",
          "text": "If dynamic state was inherited from <a href=\"#VkCommandBufferInheritanceViewportScissorInfoNV\">VkCommandBufferInheritanceViewportScissorInfoNV</a>, it <strong class=\"purple\">must</strong> be set in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08684",
          "text": "If there is no bound graphics pipeline, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_VERTEX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08685",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08686",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08687",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08688",
          "text": "If there is no bound graphics pipeline, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08689",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TASK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08690",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08693",
          "text": "If there is no bound graphics pipeline, and at least one of the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features is enabled, one of the <code>VK_SHADER_STAGE_VERTEX_BIT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stages <strong class=\"purple\">must</strong> have a valid <code>VkShaderEXT</code> bound, and the other <strong class=\"purple\">must</strong> have no <code>VkShaderEXT</code> bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08694",
          "text": "If there is no bound graphics pipeline, and both the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features are enabled, and a valid <code>VkShaderEXT</code> is bound the to the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage, and that <code>VkShaderEXT</code> was created without the <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> flag, a valid <code>VkShaderEXT</code> <strong class=\"purple\">must</strong> be bound to the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08695",
          "text": "If there is no bound graphics pipeline, and both the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features are enabled, and a valid <code>VkShaderEXT</code> is bound the to the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage, and that <code>VkShaderEXT</code> was created with the <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> flag, there <strong class=\"purple\">must</strong> be no <code>VkShaderEXT</code> bound to the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08696",
          "text": "If there is no bound graphics pipeline, and a valid <code>VkShaderEXT</code> is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, there <strong class=\"purple\">must</strong> be no <code>VkShaderEXT</code> bound to either the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage or the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08698",
          "text": "If any graphics shader is bound which was created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag, then all shaders created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag in the same <a href=\"#vkCreateShadersEXT\">vkCreateShadersEXT</a> call <strong class=\"purple\">must</strong> also be bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08699",
          "text": "If any graphics shader is bound which was created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag, any stages in between stages whose shaders which did not create a shader with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag as part of the same <a href=\"#vkCreateShadersEXT\">vkCreateShadersEXT</a> call <strong class=\"purple\">must</strong> not have any <code>VkShaderEXT</code> bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08878",
          "text": "All bound graphics shader objects <strong class=\"purple\">must</strong> have been created with identical or identically defined push constant ranges",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08879",
          "text": "All bound graphics shader objects <strong class=\"purple\">must</strong> have been created with identical or identically defined arrays of descriptor set layouts",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-colorAttachmentCount-09372",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, and a fragment shader is bound, it <strong class=\"purple\">must</strong> not declare the <code>DepthReplacing</code> or <code>StencilRefReplacingEXT</code> execution modes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-pDynamicStates-08715",
          "text": "If the bound graphics pipeline state includes a fragment shader stage, was created with <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpDepthAttachmentReadEXT</code>, the <code>depthWriteEnable</code> parameter in the last call to <a href=\"#vkCmdSetDepthWriteEnable\">vkCmdSetDepthWriteEnable</a> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-pDynamicStates-08716",
          "text": "If the bound graphics pipeline state includes a fragment shader stage, was created with <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpStencilAttachmentReadEXT</code>, the <code>writeMask</code> parameter in the last call to <a href=\"#vkCmdSetStencilWriteMask\">vkCmdSetStencilWriteMask</a> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-09116",
          "text": "If     a shader object is bound to any graphics stage or     the currently bound graphics pipeline was created with     <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code>,     and the format of any color attachment is     <code>VK_FORMAT_E5B9G9R9_UFLOAT_PACK32</code>, the corresponding element of the     <code>pColorWriteMasks</code> parameter of <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a>     <strong class=\"purple\">must</strong> either include all of <code>VK_COLOR_COMPONENT_R_BIT</code>,     <code>VK_COLOR_COMPONENT_G_BIT</code>, and <code>VK_COLOR_COMPONENT_B_BIT</code>, or     none of them",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-maxFragmentDualSrcAttachments-09239",
          "text": "If <a href=\"#framebuffer-blending\">blending</a> is enabled for any attachment where either the source or destination blend factors for that attachment <a href=\"#framebuffer-dsb\">use the secondary color input</a>, the maximum value of <code>Location</code> for any output attachment <a href=\"#shaders-staticuse\">statically used</a> in the <code>Fragment</code> <code>Execution</code> <code>Model</code> executed by this command <strong class=\"purple\">must</strong> be less than <a href=\"#limits-maxFragmentDualSrcAttachments\"><code>maxFragmentDualSrcAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-09548",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and there is no shader object bound to any graphics stage, the value of each element of <a href=\"#VkRenderingAttachmentLocationInfoKHR\">VkRenderingAttachmentLocationInfoKHR</a>::<code>pColorAttachmentLocations</code> set by <a href=\"#vkCmdSetRenderingAttachmentLocationsKHR\">vkCmdSetRenderingAttachmentLocationsKHR</a> <strong class=\"purple\">must</strong> match the value set for the corresponding element in the currently bound pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-09549",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and there is no shader object bound to any graphics stage, input attachment index mappings in the currently bound pipeline <strong class=\"purple\">must</strong> match those set for the current render pass instance via <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-09642",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with the <code>VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT</code> flag, the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-09643",
          "text": "If the bound graphics pipeline was created with <code>VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT</code>, the current render pass <strong class=\"purple\">must</strong> have begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with the <code>VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT</code> flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-04007",
          "text": "All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> buffers bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-04008",
          "text": "If the <a href=\"#features-nullDescriptor\"><code>nullDescriptor</code></a> feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-02721",
          "text": "If <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> is not enabled, and that pipeline was created without enabling <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> for <code>vertexInputs</code>, then 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-07842",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY</code> dynamic state enabled     then <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> <strong class=\"purple\">must</strong> have been called and not     subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current     command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-dynamicPrimitiveTopologyUnrestricted-07500",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY</code> dynamic state enabled and the <a href=\"#limits-dynamicPrimitiveTopologyUnrestricted\"><code>dynamicPrimitiveTopologyUnrestricted</code></a> is <code>VK_FALSE</code>, then the <code>primitiveTopology</code> parameter of <code>vkCmdSetPrimitiveTopology</code> <strong class=\"purple\">must</strong> be of the same <a href=\"#drawing-primitive-topology-class\">topology class</a> as the pipeline <a href=\"#VkPipelineInputAssemblyStateCreateInfo\">VkPipelineInputAssemblyStateCreateInfo</a>::<code>topology</code> state",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-pStrides-04913",
          "text": "If the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE</code> dynamic state enabled, but without the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdBindVertexBuffers2\">vkCmdBindVertexBuffers2</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this draw command, and the <code>pStrides</code> parameter of <a href=\"#vkCmdBindVertexBuffers2\">vkCmdBindVertexBuffers2</a> <strong class=\"purple\">must</strong> not be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-04914",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     then <a href=\"#vkCmdSetVertexInputEXT\">vkCmdSetVertexInputEXT</a> <strong class=\"purple\">must</strong> have been called and not     subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current     command buffer prior to this draw command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-Input-07939",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     then all variables with the <code>Input</code> storage class decorated with     <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code>     <strong class=\"purple\">must</strong> contain a location in     <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>location</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-Input-08734",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     and either <a href=\"#features-legacyVertexAttributes\"><code>legacyVertexAttributes</code></a> is not enabled or the SPIR-V Type     associated with a given <code>Input</code> variable of the corresponding     <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code> is     64-bit,     then the numeric type associated with all <code>Input</code> variables of the     corresponding <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code>     <code>OpEntryPoint</code> <strong class=\"purple\">must</strong> be the same as     <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>format</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-format-08936",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     and <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>format</code> has a     64-bit component, then the scalar width associated with all <code>Input</code>     variables of the corresponding <code>Location</code> in the <code>Vertex</code>     <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code> <strong class=\"purple\">must</strong> be 64-bit",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-format-08937",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     and the scalar width associated with a <code>Location</code> decorated     <code>Input</code> variable in the <code>Vertex</code> <code>Execution</code> <code>Model</code>     <code>OpEntryPoint</code> is 64-bit, then the corresponding     <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>format</code> <strong class=\"purple\">must</strong> have a     64-bit component",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-09203",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     and <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>format</code> has a     64-bit component, then all <code>Input</code> variables at the corresponding     <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code>     <strong class=\"purple\">must</strong> not use components that are not present in the format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-04875",
          "text": "If     there is a shader object bound to the     <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT</code> dynamic state enabled,     and the <a href=\"#dynamic-state-current-value\">current value</a> of     <code>primitiveTopology</code> is <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, then     <a href=\"#vkCmdSetPatchControlPointsEXT\">vkCmdSetPatchControlPointsEXT</a> <strong class=\"purple\">must</strong> have been called and not     subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current     command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-04879",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE</code> dynamic state enabled     then <a href=\"#vkCmdSetPrimitiveRestartEnable\">vkCmdSetPrimitiveRestartEnable</a> <strong class=\"purple\">must</strong> have been called and not     subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current     command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-09637",
          "text": "If     the <a href=\"#features-primitiveTopologyListRestart\"><code>primitiveTopologyListRestart</code></a> feature is not enabled,     the topology 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>, or     <code>VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY</code>,     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE</code> dynamic state enabled     then <a href=\"#vkCmdSetPrimitiveRestartEnable\">vkCmdSetPrimitiveRestartEnable</a> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-stage-06481",
          "text": "The bound graphics pipeline <strong class=\"purple\">must</strong> not have been created with the <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a>::<code>stage</code> member of an element of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> set to <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-None-08885",
          "text": "There <strong class=\"purple\">must</strong> be no shader object bound to either of the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-buffer-02708",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-buffer-02709",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-offset-02710",
          "text": "<code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-02711",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-drawCount-02718",
          "text": "If the <a href=\"#features-multiDrawIndirect\"><code>multiDrawIndirect</code></a> feature is not enabled, <code>drawCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-drawCount-02719",
          "text": "<code>drawCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-drawCount-00476",
          "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>)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-drawCount-00487",
          "text": "If <code>drawCount</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> +  <code>sizeof</code>(<a href=\"#VkDrawIndirectCommand\">VkDrawIndirectCommand</a>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-drawCount-00488",
          "text": "If <code>drawCount</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> × (<code>drawCount</code> - 1) +  <code>offset</code> +  <code>sizeof</code>(<a href=\"#VkDrawIndirectCommand\">VkDrawIndirectCommand</a>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-buffer-parameter",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirect-commonparent",
          "text": "Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkDrawIndirectCommand": {
      "core": [
        {
          "vuid": "VUID-VkDrawIndirectCommand-pNext-09461",
          "text": "If the bound graphics pipeline state was created with <a href=\"#VkPipelineVertexInputDivisorStateCreateInfoKHR\">VkPipelineVertexInputDivisorStateCreateInfoKHR</a> in the <code>pNext</code> chain of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pVertexInputState</code>, any member of <a href=\"#VkPipelineVertexInputDivisorStateCreateInfoKHR\">VkPipelineVertexInputDivisorStateCreateInfoKHR</a>::<code>pVertexBindingDivisors</code> has a value other than <code>1</code> in <code>divisor</code>, and <a href=\"#VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR\">VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR</a>::<code>supportsNonZeroFirstInstance</code> is <code>VK_FALSE</code>, then <code>firstInstance</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDrawIndirectCommand-None-09462",
          "text": "If <a href=\"#shaders-objects\">shader objects</a> are used for drawing or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled, any member of the <code>pVertexBindingDescriptions</code> parameter to the <a href=\"#vkCmdSetVertexInputEXT\">vkCmdSetVertexInputEXT</a> call that sets this dynamic state has a value other than <code>1</code> in <code>divisor</code>, and <a href=\"#VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR\">VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR</a>::<code>supportsNonZeroFirstInstance</code> is <code>VK_FALSE</code>, then <code>firstInstance</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDrawIndirectCommand-firstInstance-00501",
          "text": "If the <a href=\"#features-drawIndirectFirstInstance\"><code>drawIndirectFirstInstance</code></a> feature is not enabled, <code>firstInstance</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdDrawIndirectCount": {
      "core": [
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-magFilter-04553",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-magFilter-09598",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-mipmapMode-04770",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-mipmapMode-09599",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-unnormalizedCoordinates-09635",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>levelCount</code> and <code>layerCount</code> <strong class=\"purple\">must</strong> be 1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-unnormalizedCoordinates-09636",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_VIEW_TYPE_1D</code> or <code>VK_IMAGE_VIEW_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-06479",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is sampled with <a href=\"#textures-depth-compare-operation\">depth comparison</a>, 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_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-02691",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed using atomic operations as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07888",
          "text": "If a <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> descriptor is accessed using atomic operations as a result of this command, then the storage texel buffer&#8217;s <a href=\"#resources-buffer-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-02692",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-02693",
          "text": "If the <a href=\"#VK_EXT_filter_cubic\">VK_EXT_filter_cubic</a> extension is not enabled and any <a href=\"#VkImageView\">VkImageView</a> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, it <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-filterCubic-02694",
          "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 <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubic</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-filterCubicMinmax-02695",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubicMinmax</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-cubicRangeClamp-09212",
          "text": "If the <a href=\"#features-filter-cubic-range-clamp\"><code>cubicRangeClamp</code></a> feature is not enabled, then 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=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-reductionMode-09213",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with a <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code> as a result of this command <strong class=\"purple\">must</strong> sample with <code>VK_FILTER_CUBIC_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-selectableCubicWeights-09214",
          "text": "If the <a href=\"#features-filter-cubic-weight-selection\"><code>selectableCubicWeights</code></a> feature is not enabled, then 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 href=\"#VkSamplerCubicWeightsCreateInfoQCOM\">VkSamplerCubicWeightsCreateInfoQCOM</a>::<code>cubicWeights</code> equal to <code>VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-flags-02696",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-OpTypeImage-07027",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being written as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-OpTypeImage-07028",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being read as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-OpTypeImage-07029",
          "text": "For any <a href=\"#VkBufferView\">VkBufferView</a> being written as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-OpTypeImage-07030",
          "text": "Any <a href=\"#VkBufferView\">VkBufferView</a> being read as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code> then the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08600",
          "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08601",
          "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-10068",
          "text": "For each array of resources that is used by <a href=\"#shaders-binding\">a bound shader</a>, the indices used to access members of the array <strong class=\"purple\">must</strong> be less than the descriptor count for the identified binding in the descriptor sets used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-maintenance4-08602",
          "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08114",
          "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08115",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created without <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08116",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08604",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08117",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08119",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkPipeline\">VkPipeline</a> created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08605",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkShaderEXT\">VkShaderEXT</a> created with a <code>VkDescriptorSetLayout</code> that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08606",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is not enabled, a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08608",
          "text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state specified statically in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08609",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <a href=\"#VkImage\">VkImage</a> with a <a href=\"#VkImageView\">VkImageView</a> 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08610",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08611",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08607",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-uniformBuffers-06935",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08612",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-storageBuffers-06936",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>storageBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08613",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-commandBuffer-02707",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, any resource accessed by <a href=\"#shaders-binding\">bound shaders</a> <strong class=\"purple\">must</strong> not be a protected resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-06550",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> only be used with <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-ConstOffset-06551",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> not use the <code>ConstOffset</code> and <code>Offset</code> operands",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-viewType-07752",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> match the <code>Dim</code> operand of the <code>OpTypeImage</code> as described in <a href=\"#spirvenv-image-dimensions\">Compatibility Between SPIR-V Image Dimensions and Vulkan ImageView Types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-format-07753",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the <a href=\"#formats-numericformat\">numeric type</a> of the image view&#8217;s <code>format</code> and the <code>Sampled</code> <code>Type</code> operand of the <code>OpTypeImage</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-OpImageWrite-08795",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with a format other than <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-OpImageWrite-08796",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with the format <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have four components",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-OpImageWrite-04469",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the buffer view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-SampledType-04470",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-SampledType-04471",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-SampledType-04472",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-SampledType-04473",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-sparseImageInt64Atomics-04474",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-sparseImageInt64Atomics-04475",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-OpImageWeightedSampleQCOM-06971",
          "text": "If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-OpImageWeightedSampleQCOM-06972",
          "text": "If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image 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_2_WEIGHT_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-OpImageBoxFilterQCOM-06973",
          "text": "If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-OpImageBlockMatchSSDQCOM-06974",
          "text": "If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-OpImageBlockMatchSADQCOM-06975",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-OpImageBlockMatchSADQCOM-06976",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-OpImageWeightedSampleQCOM-06977",
          "text": "If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-OpImageWeightedSampleQCOM-06978",
          "text": "If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-OpImageBlockMatchWindow-09215",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-OpImageBlockMatchWindow-09216",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s format <strong class=\"purple\">must</strong> be a single-component format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-OpImageBlockMatchWindow-09217",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07288",
          "text": "Any shader invocation executed by this command <strong class=\"purple\">must</strong> <a href=\"#shaders-termination\">terminate</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-09600",
          "text": "If a descriptor with type equal to any of <code>VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> is accessed as a result of this command, the image subresource identified by that descriptor <strong class=\"purple\">must</strong> be in the image layout identified when the descriptor was written",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-renderPass-02684",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-subpass-02685",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07748",
          "text": "If any shader statically accesses an input attachment, a valid descriptor <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-OpTypeImage-07468",
          "text": "If any shader executed by this pipeline accesses an <code>OpTypeImage</code> variable with a <code>Dim</code> operand of <code>SubpassData</code>, it <strong class=\"purple\">must</strong> be decorated with an <code>InputAttachmentIndex</code> that corresponds to a valid input attachment in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07469",
          "text": "Input attachment views accessed in a subpass <strong class=\"purple\">must</strong> be created with the same <a href=\"#VkFormat\">VkFormat</a> as the corresponding subpass definition, and be created with a <a href=\"#VkImageView\">VkImageView</a> that is compatible with the attachment referenced by the subpass' <code>pInputAttachments</code>[<code>InputAttachmentIndex</code>] in the currently bound <a href=\"#VkFramebuffer\">VkFramebuffer</a> as specified by <a href=\"#compatibility-inputattachment\">Fragment Input Attachment Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-pDepthInputAttachmentIndex-09595",
          "text": "Input attachment views accessed in a dynamic render pass with a <code>InputAttachmentIndex</code> referenced by <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>, or no <code>InputAttachmentIndex</code> if <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pDepthInputAttachmentIndex</code> or <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pStencilInputAttachmentIndex</code> are <code>NULL</code>, <strong class=\"purple\">must</strong> be created with a <a href=\"#VkImageView\">VkImageView</a> that is compatible with the corresponding color, depth, or stencil attachment in <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-pDepthInputAttachmentIndex-09596",
          "text": "Input attachment views accessed in a dynamic render pass via a shader object <strong class=\"purple\">must</strong> have an <code>InputAttachmentIndex</code> if both <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pDepthInputAttachmentIndex</code> and <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pStencilInputAttachmentIndex</code> are non-<code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-InputAttachmentIndex-09597",
          "text": "If an input attachment view accessed in a dynamic render pass via a shader object has an <code>InputAttachmentIndex</code>, the <code>InputAttachmentIndex</code> <strong class=\"purple\">must</strong> match an index in <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-06537",
          "text": "Memory backing image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be written in any way other than as an attachment by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-09000",
          "text": "If a color attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe <code>VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code> is\nset on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_COLOR_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-09001",
          "text": "If a depth attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe\n<code>VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code>\nis set on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_DEPTH_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-09002",
          "text": "If a stencil attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe\n<code>VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code>\nis set on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_STENCIL_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-09003",
          "text": "If an attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment, storage image, or sampled image by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-06539",
          "text": "If any previously recorded command in the current subpass accessed an image subresource used as an attachment in this subpass in any way other than as an attachment, this command <strong class=\"purple\">must</strong> not write to that image subresource as an attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-06886",
          "text": "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, <a href=\"#fragops-depth-write\">depth writes</a> <strong class=\"purple\">must</strong> be disabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-06887",
          "text": "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back <code>writeMask</code> are not zero, and stencil test is enabled, <a href=\"#fragops-stencil\">all stencil ops</a> <strong class=\"purple\">must</strong> be <code>VK_STENCIL_OP_KEEP</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07831",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT</code> dynamic state enabled then <a href=\"#vkCmdSetViewport\">vkCmdSetViewport</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07832",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR</code> dynamic state enabled then <a href=\"#vkCmdSetScissor\">vkCmdSetScissor</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07833",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_WIDTH</code> dynamic state enabled then <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08617",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08618",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08619",
          "text": "If a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07834",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthBiasEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthBounds\">vkCmdSetDepthBounds</a> or <a href=\"#vkCmdSetDepthBias2EXT\">vkCmdSetDepthBias2EXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07835",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_BLEND_CONSTANTS</code> dynamic state enabled then <a href=\"#vkCmdSetBlendConstants\">vkCmdSetBlendConstants</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08621",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> in the current command buffer set any element of <code>pColorBlendEnables</code> to <code>VK_TRUE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> in the current command buffer set the same element of <code>pColorBlendEquations</code> to a <code>VkColorBlendEquationEXT</code> structure with any <a href=\"#VkBlendFactor\">VkBlendFactor</a> member with a value of <code>VK_BLEND_FACTOR_CONSTANT_COLOR</code>, <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR</code>, <code>VK_BLEND_FACTOR_CONSTANT_ALPHA</code>, or <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA</code>, <a href=\"#vkCmdSetBlendConstants\">vkCmdSetBlendConstants</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07836",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthBoundsTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthBounds\">vkCmdSetDepthBounds</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07837",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilCompareMask\">vkCmdSetStencilCompareMask</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07838",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilWriteMask\">vkCmdSetStencilWriteMask</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07839",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_REFERENCE</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of and <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilReference\">vkCmdSetStencilReference</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-maxMultiviewInstanceIndex-02688",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-02689",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-06666",
          "text": "If the <code><a href=\"#VK_EXT_sample_locations\">VK_EXT_sample_locations</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07840",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_CULL_MODE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCullMode\">vkCmdSetCullMode</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07841",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_FRONT_FACE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetFrontFace\">vkCmdSetFrontFace</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07843",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, <a href=\"#vkCmdSetDepthTestEnable\">vkCmdSetDepthTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07844",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthWriteEnable\">vkCmdSetDepthWriteEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07845",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_COMPARE_OP</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthCompareOp\">vkCmdSetDepthCompareOp</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07846",
          "text": "If the <a href=\"#features-depthBounds\"><code>depthBounds</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthBoundsTestEnable\">vkCmdSetDepthBoundsTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07847",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetStencilTestEnable\">vkCmdSetStencilTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07848",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_OP</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilOp\">vkCmdSetStencilOp</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-viewportCount-03417",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-scissorCount-03418",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, then <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-viewportCount-03419",
          "text": "If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> and <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08635",
          "text": "If a shader object is bound to any graphics stage, then both <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> and <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-viewportCount-04137",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-viewportCount-04138",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08636",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-viewportCount-04139",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-shadingRateImage-09233",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV</code> and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-shadingRateImage-09234",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08637",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-VkPipelineVieportCreateInfo-04141",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled and a <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> structure chained from <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-VkPipelineVieportCreateInfo-04142",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled and a <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> structure chained from <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07878",
          "text": "If the <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetExclusiveScissorEnableNV\">vkCmdSetExclusiveScissorEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07879",
          "text": "If the <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV</code> dynamic state enabled, and the most recent call to <a href=\"#vkCmdSetExclusiveScissorEnableNV\">vkCmdSetExclusiveScissorEnableNV</a> in the current command buffer set any element of <code>pExclusiveScissorEnables</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetExclusiveScissorNV\">vkCmdSetExclusiveScissorNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-04876",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-04877",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthBiasEnable\">vkCmdSetDepthBiasEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-logicOp-04878",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_LOGIC_OP_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>logicOpEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetLogicOpEXT\">vkCmdSetLogicOpEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-primitiveFragmentShadingRateWithMultipleViewports-04552",
          "text": "If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-primitiveFragmentShadingRateWithMultipleViewports-08642",
          "text": "If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, and any shader object bound to a graphics stage writes to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-blendEnable-04727",
          "text": "If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the <code>blendEnable</code> member of the corresponding element of the <code>pAttachments</code> member of <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08643",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then for each color attachment in the render pass, if the corresponding image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the corresponding member of <code>pColorBlendEnables</code> in the most recent call to <code>vkCmdSetColorBlendEnableEXT</code> in the current command buffer that affected that attachment index <strong class=\"purple\">must</strong> have been <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-multisampledRenderToSingleSampled-07284",
          "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then <code>rasterizationSamples</code> for the currently bound graphics pipeline\n<strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil\nattachments</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08644",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the\ncurrent command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the\nsame as the number of samples for the current render pass color and/or\ndepth/stencil attachments</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08876",
          "text": "If a shader object is bound to any graphics stage, the current render pass instance <strong class=\"purple\">must</strong> have been begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-imageView-06172",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-imageView-06173",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-imageView-06174",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-imageView-06175",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-imageView-06176",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-imageView-06177",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-viewMask-06178",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>viewMask</code> equal to <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>viewMask</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-colorAttachmentCount-06179",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>colorAttachmentCount</code> equal to <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08910",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08912",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08911",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-colorAttachmentCount-09362",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, there is no shader object bound to any graphics stage, and a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>resolveImageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with an image created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value equal to the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-09363",
          "text": "If there is no shader object bound to any graphics stage, the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, and a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with an image created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value equal to the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-09364",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have set the blend enable to <code>VK_FALSE</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-09365",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to <code>VK_SAMPLE_COUNT_1_BIT</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-09366",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have set blend enable to <code>VK_FALSE</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-rasterizationSamples-09367",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to <code>VK_SAMPLE_COUNT_1_BIT</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-09368",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;width</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-09369",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;height</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-pFragmentSize-09370",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;width</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-pFragmentSize-09371",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;height</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07749",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteEnableEXT\">vkCmdSetColorWriteEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08646",
          "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is enabled on the device, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorWriteEnableEXT\">vkCmdSetColorWriteEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-attachmentCount-07750",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code> dynamic state enabled then the <code>attachmentCount</code> parameter of <code>vkCmdSetColorWriteEnableEXT</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>VkPipelineColorBlendStateCreateInfo</code>::<code>attachmentCount</code> of the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08647",
          "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is enabled on the device, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then the <code>attachmentCount</code> parameter of most recent call to <code>vkCmdSetColorWriteEnableEXT</code> in the current command buffer <strong class=\"purple\">must</strong> be greater than or equal to the number of color attachments in the current render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07751",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleEXT\">vkCmdSetDiscardRectangleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command for each discard rectangle in <a href=\"#VkPipelineDiscardRectangleStateCreateInfoEXT\">VkPipelineDiscardRectangleStateCreateInfoEXT</a>::<code>discardRectangleCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07880",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-rasterizerDiscardEnable-09236",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> in the current command buffer set <code>discardRectangleEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDiscardRectangleEXT\">vkCmdSetDiscardRectangleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08648",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07881",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleModeEXT\">vkCmdSetDiscardRectangleModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08649",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> in the current command buffer set <code>discardRectangleEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDiscardRectangleModeEXT\">vkCmdSetDiscardRectangleModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08913",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08914",
          "text": "If current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08915",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline was not equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>, the value of the format <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08916",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08917",
          "text": "If current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-dynamicRenderingUnusedAttachments-08918",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline was not equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>, the value of the format <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-imageView-06183",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a>::<code>imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-imageView-06184",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingFragmentDensityMapAttachmentInfoEXT\">VkRenderingFragmentDensityMapAttachmentInfoEXT</a>::<code>imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-colorAttachmentCount-06185",
          "text": "If the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the corresponding element of the <code>pColorAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-pDepthAttachment-06186",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-pStencilAttachment-06187",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-multisampledRenderToSingleSampled-07285",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     the current render pass instance was begun with     <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than     <code>0</code>, then each element of the     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a     <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been     created with a sample count equal to the value of     <code>rasterizationSamples</code> for the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-multisampledRenderToSingleSampled-07286",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not     <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the     currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count     used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-multisampledRenderToSingleSampled-07287",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not     <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the     currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count     used to create     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-pNext-07935",
          "text": "If this command has been called inside a render pass instance started with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and the <code>pNext</code> chain of <a href=\"#VkRenderingInfo\">VkRenderingInfo</a> includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a>::<code>rasterizationSamples</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-renderPass-06198",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>renderPass</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-pColorAttachments-08963",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound with a fragment shader that statically writes to a color attachment, the color write mask is not zero, color writes are enabled, and the corresponding element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-pDepthAttachment-08964",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound, depth test is enabled, depth write is enabled, and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-pStencilAttachment-08965",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound, stencil test is enabled and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-primitivesGeneratedQueryWithRasterizerDiscard-06708",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithRasterizerDiscard\"><code>primitivesGeneratedQueryWithRasterizerDiscard</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, <a href=\"#primsrast-discard\">rasterization discard</a> <strong class=\"purple\">must</strong> not be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-primitivesGeneratedQueryWithNonZeroStreams-06709",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, the bound graphics pipeline <strong class=\"purple\">must</strong> not have been created with a non-zero value in <code>VkPipelineRasterizationStateStreamCreateInfoEXT</code>::<code>rasterizationStream</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07619",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetTessellationDomainOriginEXT\">vkCmdSetTessellationDomainOriginEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07620",
          "text": "If the <a href=\"#features-depthClamp\"><code>depthClamp</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthClampEnableEXT\">vkCmdSetDepthClampEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07621",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_POLYGON_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07622",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07623",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-alphaToCoverageEnable-08919",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic state enabled, and <code>alphaToCoverageEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-alphaToCoverageEnable-08920",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a> in the current command buffer set <code>alphaToCoverageEnable</code> to <code>VK_TRUE</code>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07624",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07625",
          "text": "If the <a href=\"#features-alphaToOne\"><code>alphaToOne</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAlphaToOneEnableEXT\">vkCmdSetAlphaToOneEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07626",
          "text": "If the <a href=\"#features-logicOp\"><code>logicOp</code></a> feature is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLogicOpEnableEXT\">vkCmdSetLogicOpEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07627",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08657",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07628",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08658",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> for any attachment set that attachment&#8217;s value in <code>pColorBlendEnables</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07629",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08659",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07630",
          "text": "If the <a href=\"#features-geometryStreams\"><code>geometryStreams</code></a> feature is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizationStreamEXT\">vkCmdSetRasterizationStreamEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07631",
          "text": "If the <code><a href=\"#VK_EXT_conservative_rasterization\">VK_EXT_conservative_rasterization</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetConservativeRasterizationModeEXT\">vkCmdSetConservativeRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07632",
          "text": "If the <code><a href=\"#VK_EXT_conservative_rasterization\">VK_EXT_conservative_rasterization</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>conservativeRasterizationMode</code> is <code>VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT</code>, then <a href=\"#vkCmdSetExtraPrimitiveOverestimationSizeEXT\">vkCmdSetExtraPrimitiveOverestimationSizeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07633",
          "text": "If the <a href=\"#features-depthClipEnable\"><code>depthClipEnable</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT</code> dynamic state, then <a href=\"#vkCmdSetDepthClipEnableEXT\">vkCmdSetDepthClipEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07634",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08664",
          "text": "If the <code><a href=\"#VK_EXT_sample_locations\">VK_EXT_sample_locations</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07635",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-rasterizerDiscardEnable-09416",
          "text": "If the <code><a href=\"#VK_EXT_blend_operation_advanced\">VK_EXT_blend_operation_advanced</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then at least one of <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> and <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07636",
          "text": "If the <code><a href=\"#VK_EXT_provoking_vertex\">VK_EXT_provoking_vertex</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetProvokingVertexModeEXT\">vkCmdSetProvokingVertexModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07637",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08666",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08667",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08668",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07638",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08669",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08670",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08671",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07849",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_KHR</code>     dynamic state enabled then <a href=\"#vkCmdSetLineStippleKHR\">vkCmdSetLineStippleKHR</a>     <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing     command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08672",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> in the current command buffer set <code>stippledLineEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetLineStippleEXT\">vkCmdSetLineStippleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07639",
          "text": "If the <a href=\"#features-depthClipControl\"><code>depthClipControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetDepthClipNegativeOneToOneEXT\">vkCmdSetDepthClipNegativeOneToOneEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-09650",
          "text": "If the <a href=\"#features-depthClampControl\"><code>depthClampControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthClampEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthClampRangeEXT\">vkCmdSetDepthClampRangeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07640",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07641",
          "text": "If the <code><a href=\"#VK_NV_viewport_swizzle\">VK_NV_viewport_swizzle</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07642",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07643",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageToColorEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07644",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageModulationModeNV\">vkCmdSetCoverageModulationModeNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07645",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageModulationMode</code> is any value other than <code>VK_COVERAGE_MODULATION_MODE_NONE_NV</code>, then <a href=\"#vkCmdSetCoverageModulationTableEnableNV\">vkCmdSetCoverageModulationTableEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07646",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageModulationTableEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetCoverageModulationTableNV\">vkCmdSetCoverageModulationTableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07647",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-pipelineFragmentShadingRate-09238",
          "text": "If the <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a> feature is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07648",
          "text": "If the <a href=\"#features-representativeFragmentTest\"><code>representativeFragmentTest</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetRepresentativeFragmentTestEnableNV\">vkCmdSetRepresentativeFragmentTestEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07649",
          "text": "If the <a href=\"#features-coverageReductionMode\"><code>coverageReductionMode</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageReductionModeNV\">vkCmdSetCoverageReductionModeNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-pColorBlendEnables-07470",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> state enabled and the last call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> set <code>pColorBlendEnables</code> for any attachment to <code>VK_TRUE</code>, then for those attachments in the subpass the corresponding 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_BLEND_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-rasterizationSamples-07471",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> follow the rules for a <a href=\"#renderpass-noattachments\">zero-attachment subpass</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-samples-07472",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, then the <code>samples</code> parameter in the last call to <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> be greater or equal to the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a>::<code>rasterizationSamples</code> parameter used to create the bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-samples-07473",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> state and <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> states enabled, then the <code>samples</code> parameter in the last call to <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> be greater or equal to the <code>rasterizationSamples</code> parameter in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-rasterizationSamples-07474",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and neither the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> nor the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extensions are enabled, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil attachments",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-09211",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, or a shader object is bound to any graphics stage, and the current render pass instance includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> be the same as the <code>rasterizationSamples</code> member of that structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-firstAttachment-07476",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEnableEXT</code> calls <strong class=\"purple\">must</strong> specify an enable for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-rasterizerDiscardEnable-09417",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEnableEXT</code> calls <strong class=\"purple\">must</strong> specify an enable for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-firstAttachment-07477",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEquationEXT</code> calls <strong class=\"purple\">must</strong> specify the blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-rasterizerDiscardEnable-09418",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEquationEXT</code> calls <strong class=\"purple\">must</strong> specify the blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-firstAttachment-07478",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorWriteMaskEXT</code> calls <strong class=\"purple\">must</strong> specify the color write mask for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-rasterizerDiscardEnable-09419",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorWriteMaskEXT</code> calls <strong class=\"purple\">must</strong> specify the color write mask for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-firstAttachment-07479",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendAdvancedEXT</code> calls <strong class=\"purple\">must</strong> specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-advancedBlendMaxColorAttachments-07480",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> and <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic states enabled and the last calls to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> and <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> have enabled advanced blending, then the number of active color attachments in the current subpass <strong class=\"purple\">must</strong> not exceed <a href=\"#limits-advancedBlendMaxColorAttachments\"><code>advancedBlendMaxColorAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-primitivesGeneratedQueryWithNonZeroStreams-07481",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, and the bound graphics pipeline was created with <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code> state enabled, the last call to <a href=\"#vkCmdSetRasterizationStreamEXT\">vkCmdSetRasterizationStreamEXT</a> <strong class=\"purple\">must</strong> have set the <code>rasterizationStream</code> to zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-sampleLocationsPerPixel-07482",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-sampleLocationsPerPixel-07483",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-07484",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-07485",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, then the <code>sampleLocationsInfo.sampleLocationGridSize.width</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-07486",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, then the <code>sampleLocationsInfo.sampleLocationGridSize.height</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-07487",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, the fragment shader code <strong class=\"purple\">must</strong> not statically use the extended instruction <code>InterpolateAtSample</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-07936",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <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 the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-07937",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <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 the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-07938",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-coverageModulationTableEnable-07488",
          "text": "If a shader object is bound to any graphics stage or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code> state enabled, and the last call to <a href=\"#vkCmdSetCoverageModulationTableEnableNV\">vkCmdSetCoverageModulationTableEnableNV</a> set <code>coverageModulationTableEnable</code> to <code>VK_TRUE</code>, then the <code>coverageModulationTableCount</code> parameter in the last call to <a href=\"#vkCmdSetCoverageModulationTableNV\">vkCmdSetCoverageModulationTableNV</a> <strong class=\"purple\">must</strong> equal the current <code>rasterizationSamples</code> divided by the number of color samples in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-rasterizationSamples-07489",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current <code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be the same as the sample count of the depth/stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-coverageToColorEnable-07490",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> state enabled and the last call to <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> set the <code>coverageToColorEnable</code> to <code>VK_TRUE</code>, then the current subpass <strong class=\"purple\">must</strong> have a color attachment at the location selected by the last call to <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-rasterizerDiscardEnable-09420",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the last call to <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> set the <code>coverageToColorEnable</code> to <code>VK_TRUE</code>, then the current subpass <strong class=\"purple\">must</strong> have a color attachment at the location selected by the last call to <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-coverageReductionMode-07491",
          "text": "If this <code><a href=\"#VK_NV_coverage_reduction_mode\">VK_NV_coverage_reduction_mode</a></code> extension is enabled, the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> and <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> states enabled, the current coverage reduction mode <code>coverageReductionMode</code>, then the current <code>rasterizationSamples</code>, and the sample counts for the color and depth/stencil attachments (if the subpass has them) <strong class=\"purple\">must</strong> be a valid combination returned by <a href=\"#vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV\">vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-viewportCount-07492",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-viewportCount-07493",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-viewportCount-09421",
          "text": "If the <code><a href=\"#VK_NV_viewport_swizzle\">VK_NV_viewport_swizzle</a></code> extension is enabled, and a shader object is bound to any graphics stage, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-rasterizationSamples-07494",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, and if the current subpass has any color attachments and <code>rasterizationSamples</code> of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> is greater than the number of color samples, then the pipeline <code>sampleShadingEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-stippledLineEnable-07495",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-stippledLineEnable-07496",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR</code>, then the <a href=\"#features-stippledBresenhamLines\"><code>stippledBresenhamLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-stippledLineEnable-07497",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR</code>, then the <a href=\"#features-stippledSmoothLines\"><code>stippledSmoothLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-stippledLineEnable-07498",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_DEFAULT_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled and <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>strictLines</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-conservativePointAndLineRasterization-07499",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code> dynamic state enabled, <a href=\"#limits-conservativePointAndLineRasterization\"><code>conservativePointAndLineRasterization</code></a> is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the <code>conservativeRasterizationMode</code> set by the last call to <a href=\"#vkCmdSetConservativeRasterizationModeEXT\">vkCmdSetConservativeRasterizationModeEXT</a> <strong class=\"purple\">must</strong> be <code>VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-stage-07073",
          "text": "If the currently bound pipeline was created with the <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a>::<code>stage</code> member of an element of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> set to <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>, then <a href=\"#queries-mesh-shader\">Mesh Shader Queries</a> <strong class=\"purple\">must</strong> not be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08877",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07850",
          "text": "If dynamic state was inherited from <a href=\"#VkCommandBufferInheritanceViewportScissorInfoNV\">VkCommandBufferInheritanceViewportScissorInfoNV</a>, it <strong class=\"purple\">must</strong> be set in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08684",
          "text": "If there is no bound graphics pipeline, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_VERTEX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08685",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08686",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08687",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08688",
          "text": "If there is no bound graphics pipeline, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08689",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TASK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08690",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08693",
          "text": "If there is no bound graphics pipeline, and at least one of the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features is enabled, one of the <code>VK_SHADER_STAGE_VERTEX_BIT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stages <strong class=\"purple\">must</strong> have a valid <code>VkShaderEXT</code> bound, and the other <strong class=\"purple\">must</strong> have no <code>VkShaderEXT</code> bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08694",
          "text": "If there is no bound graphics pipeline, and both the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features are enabled, and a valid <code>VkShaderEXT</code> is bound the to the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage, and that <code>VkShaderEXT</code> was created without the <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> flag, a valid <code>VkShaderEXT</code> <strong class=\"purple\">must</strong> be bound to the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08695",
          "text": "If there is no bound graphics pipeline, and both the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features are enabled, and a valid <code>VkShaderEXT</code> is bound the to the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage, and that <code>VkShaderEXT</code> was created with the <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> flag, there <strong class=\"purple\">must</strong> be no <code>VkShaderEXT</code> bound to the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08696",
          "text": "If there is no bound graphics pipeline, and a valid <code>VkShaderEXT</code> is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, there <strong class=\"purple\">must</strong> be no <code>VkShaderEXT</code> bound to either the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage or the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08698",
          "text": "If any graphics shader is bound which was created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag, then all shaders created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag in the same <a href=\"#vkCreateShadersEXT\">vkCreateShadersEXT</a> call <strong class=\"purple\">must</strong> also be bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08699",
          "text": "If any graphics shader is bound which was created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag, any stages in between stages whose shaders which did not create a shader with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag as part of the same <a href=\"#vkCreateShadersEXT\">vkCreateShadersEXT</a> call <strong class=\"purple\">must</strong> not have any <code>VkShaderEXT</code> bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08878",
          "text": "All bound graphics shader objects <strong class=\"purple\">must</strong> have been created with identical or identically defined push constant ranges",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08879",
          "text": "All bound graphics shader objects <strong class=\"purple\">must</strong> have been created with identical or identically defined arrays of descriptor set layouts",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-colorAttachmentCount-09372",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, and a fragment shader is bound, it <strong class=\"purple\">must</strong> not declare the <code>DepthReplacing</code> or <code>StencilRefReplacingEXT</code> execution modes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-pDynamicStates-08715",
          "text": "If the bound graphics pipeline state includes a fragment shader stage, was created with <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpDepthAttachmentReadEXT</code>, the <code>depthWriteEnable</code> parameter in the last call to <a href=\"#vkCmdSetDepthWriteEnable\">vkCmdSetDepthWriteEnable</a> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-pDynamicStates-08716",
          "text": "If the bound graphics pipeline state includes a fragment shader stage, was created with <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpStencilAttachmentReadEXT</code>, the <code>writeMask</code> parameter in the last call to <a href=\"#vkCmdSetStencilWriteMask\">vkCmdSetStencilWriteMask</a> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-09116",
          "text": "If     a shader object is bound to any graphics stage or     the currently bound graphics pipeline was created with     <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code>,     and the format of any color attachment is     <code>VK_FORMAT_E5B9G9R9_UFLOAT_PACK32</code>, the corresponding element of the     <code>pColorWriteMasks</code> parameter of <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a>     <strong class=\"purple\">must</strong> either include all of <code>VK_COLOR_COMPONENT_R_BIT</code>,     <code>VK_COLOR_COMPONENT_G_BIT</code>, and <code>VK_COLOR_COMPONENT_B_BIT</code>, or     none of them",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-maxFragmentDualSrcAttachments-09239",
          "text": "If <a href=\"#framebuffer-blending\">blending</a> is enabled for any attachment where either the source or destination blend factors for that attachment <a href=\"#framebuffer-dsb\">use the secondary color input</a>, the maximum value of <code>Location</code> for any output attachment <a href=\"#shaders-staticuse\">statically used</a> in the <code>Fragment</code> <code>Execution</code> <code>Model</code> executed by this command <strong class=\"purple\">must</strong> be less than <a href=\"#limits-maxFragmentDualSrcAttachments\"><code>maxFragmentDualSrcAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-09548",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and there is no shader object bound to any graphics stage, the value of each element of <a href=\"#VkRenderingAttachmentLocationInfoKHR\">VkRenderingAttachmentLocationInfoKHR</a>::<code>pColorAttachmentLocations</code> set by <a href=\"#vkCmdSetRenderingAttachmentLocationsKHR\">vkCmdSetRenderingAttachmentLocationsKHR</a> <strong class=\"purple\">must</strong> match the value set for the corresponding element in the currently bound pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-09549",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and there is no shader object bound to any graphics stage, input attachment index mappings in the currently bound pipeline <strong class=\"purple\">must</strong> match those set for the current render pass instance via <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-09642",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with the <code>VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT</code> flag, the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-09643",
          "text": "If the bound graphics pipeline was created with <code>VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT</code>, the current render pass <strong class=\"purple\">must</strong> have begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with the <code>VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT</code> flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-04007",
          "text": "All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> buffers bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-04008",
          "text": "If the <a href=\"#features-nullDescriptor\"><code>nullDescriptor</code></a> feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-02721",
          "text": "If <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> is not enabled, and that pipeline was created without enabling <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> for <code>vertexInputs</code>, then 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-07842",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY</code> dynamic state enabled     then <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> <strong class=\"purple\">must</strong> have been called and not     subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current     command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-dynamicPrimitiveTopologyUnrestricted-07500",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY</code> dynamic state enabled and the <a href=\"#limits-dynamicPrimitiveTopologyUnrestricted\"><code>dynamicPrimitiveTopologyUnrestricted</code></a> is <code>VK_FALSE</code>, then the <code>primitiveTopology</code> parameter of <code>vkCmdSetPrimitiveTopology</code> <strong class=\"purple\">must</strong> be of the same <a href=\"#drawing-primitive-topology-class\">topology class</a> as the pipeline <a href=\"#VkPipelineInputAssemblyStateCreateInfo\">VkPipelineInputAssemblyStateCreateInfo</a>::<code>topology</code> state",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-pStrides-04913",
          "text": "If the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE</code> dynamic state enabled, but without the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdBindVertexBuffers2\">vkCmdBindVertexBuffers2</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this draw command, and the <code>pStrides</code> parameter of <a href=\"#vkCmdBindVertexBuffers2\">vkCmdBindVertexBuffers2</a> <strong class=\"purple\">must</strong> not be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-04914",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     then <a href=\"#vkCmdSetVertexInputEXT\">vkCmdSetVertexInputEXT</a> <strong class=\"purple\">must</strong> have been called and not     subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current     command buffer prior to this draw command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-Input-07939",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     then all variables with the <code>Input</code> storage class decorated with     <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code>     <strong class=\"purple\">must</strong> contain a location in     <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>location</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-Input-08734",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     and either <a href=\"#features-legacyVertexAttributes\"><code>legacyVertexAttributes</code></a> is not enabled or the SPIR-V Type     associated with a given <code>Input</code> variable of the corresponding     <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code> is     64-bit,     then the numeric type associated with all <code>Input</code> variables of the     corresponding <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code>     <code>OpEntryPoint</code> <strong class=\"purple\">must</strong> be the same as     <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>format</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-format-08936",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     and <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>format</code> has a     64-bit component, then the scalar width associated with all <code>Input</code>     variables of the corresponding <code>Location</code> in the <code>Vertex</code>     <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code> <strong class=\"purple\">must</strong> be 64-bit",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-format-08937",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     and the scalar width associated with a <code>Location</code> decorated     <code>Input</code> variable in the <code>Vertex</code> <code>Execution</code> <code>Model</code>     <code>OpEntryPoint</code> is 64-bit, then the corresponding     <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>format</code> <strong class=\"purple\">must</strong> have a     64-bit component",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-09203",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     and <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>format</code> has a     64-bit component, then all <code>Input</code> variables at the corresponding     <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code>     <strong class=\"purple\">must</strong> not use components that are not present in the format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-04875",
          "text": "If     there is a shader object bound to the     <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT</code> dynamic state enabled,     and the <a href=\"#dynamic-state-current-value\">current value</a> of     <code>primitiveTopology</code> is <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, then     <a href=\"#vkCmdSetPatchControlPointsEXT\">vkCmdSetPatchControlPointsEXT</a> <strong class=\"purple\">must</strong> have been called and not     subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current     command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-04879",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE</code> dynamic state enabled     then <a href=\"#vkCmdSetPrimitiveRestartEnable\">vkCmdSetPrimitiveRestartEnable</a> <strong class=\"purple\">must</strong> have been called and not     subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current     command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-09637",
          "text": "If     the <a href=\"#features-primitiveTopologyListRestart\"><code>primitiveTopologyListRestart</code></a> feature is not enabled,     the topology 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>, or     <code>VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY</code>,     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE</code> dynamic state enabled     then <a href=\"#vkCmdSetPrimitiveRestartEnable\">vkCmdSetPrimitiveRestartEnable</a> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-stage-06481",
          "text": "The bound graphics pipeline <strong class=\"purple\">must</strong> not have been created with the <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a>::<code>stage</code> member of an element of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> set to <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-08885",
          "text": "There <strong class=\"purple\">must</strong> be no shader object bound to either of the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-buffer-02708",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-buffer-02709",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-offset-02710",
          "text": "<code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-commandBuffer-02711",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-countBuffer-02714",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-countBuffer-02715",
          "text": "<code>countBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-countBufferOffset-02716",
          "text": "<code>countBufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-countBuffer-02717",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-countBufferOffset-04129",
          "text": "<span class=\"eq\">(<code>countBufferOffset</code> +  <code>sizeof</code>(uint32_t))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>countBuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-None-04445",
          "text": "If <a href=\"#features-drawIndirectCount\"><code>drawIndirectCount</code></a> is not enabled this function <strong class=\"purple\">must</strong> not be used",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-stride-03110",
          "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>)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-maxDrawCount-03111",
          "text": "If <code>maxDrawCount</code> is greater than or equal to <code>1</code>, <span class=\"eq\">(<code>stride</code> × (<code>maxDrawCount</code> - 1) +  <code>offset</code> +  sizeof(<code>VkDrawIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-countBuffer-03121",
          "text": "If the count stored in <code>countBuffer</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> +  sizeof(<code>VkDrawIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-countBuffer-03122",
          "text": "If the count stored in <code>countBuffer</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> × (<code>drawCount</code> - 1) +  <code>offset</code> +  sizeof(<code>VkDrawIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-buffer-parameter",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-countBuffer-parameter",
          "text": "<code>countBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectCount-commonparent",
          "text": "Each of <code>buffer</code>, <code>commandBuffer</code>, and <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdDrawIndexedIndirect": {
      "core": [
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-magFilter-04553",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-magFilter-09598",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-mipmapMode-04770",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-mipmapMode-09599",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-unnormalizedCoordinates-09635",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>levelCount</code> and <code>layerCount</code> <strong class=\"purple\">must</strong> be 1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-unnormalizedCoordinates-09636",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_VIEW_TYPE_1D</code> or <code>VK_IMAGE_VIEW_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-06479",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is sampled with <a href=\"#textures-depth-compare-operation\">depth comparison</a>, 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_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02691",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed using atomic operations as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07888",
          "text": "If a <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> descriptor is accessed using atomic operations as a result of this command, then the storage texel buffer&#8217;s <a href=\"#resources-buffer-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02692",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02693",
          "text": "If the <a href=\"#VK_EXT_filter_cubic\">VK_EXT_filter_cubic</a> extension is not enabled and any <a href=\"#VkImageView\">VkImageView</a> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, it <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-filterCubic-02694",
          "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 <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubic</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-filterCubicMinmax-02695",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubicMinmax</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-cubicRangeClamp-09212",
          "text": "If the <a href=\"#features-filter-cubic-range-clamp\"><code>cubicRangeClamp</code></a> feature is not enabled, then 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=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-reductionMode-09213",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with a <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code> as a result of this command <strong class=\"purple\">must</strong> sample with <code>VK_FILTER_CUBIC_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-selectableCubicWeights-09214",
          "text": "If the <a href=\"#features-filter-cubic-weight-selection\"><code>selectableCubicWeights</code></a> feature is not enabled, then 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 href=\"#VkSamplerCubicWeightsCreateInfoQCOM\">VkSamplerCubicWeightsCreateInfoQCOM</a>::<code>cubicWeights</code> equal to <code>VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-flags-02696",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-OpTypeImage-07027",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being written as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-OpTypeImage-07028",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being read as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-OpTypeImage-07029",
          "text": "For any <a href=\"#VkBufferView\">VkBufferView</a> being written as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-OpTypeImage-07030",
          "text": "Any <a href=\"#VkBufferView\">VkBufferView</a> being read as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code> then the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08600",
          "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08601",
          "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-10068",
          "text": "For each array of resources that is used by <a href=\"#shaders-binding\">a bound shader</a>, the indices used to access members of the array <strong class=\"purple\">must</strong> be less than the descriptor count for the identified binding in the descriptor sets used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-maintenance4-08602",
          "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08114",
          "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08115",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created without <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08116",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08604",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08117",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08119",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkPipeline\">VkPipeline</a> created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08605",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkShaderEXT\">VkShaderEXT</a> created with a <code>VkDescriptorSetLayout</code> that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08606",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is not enabled, a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08608",
          "text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state specified statically in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08609",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <a href=\"#VkImage\">VkImage</a> with a <a href=\"#VkImageView\">VkImageView</a> 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08610",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08611",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08607",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-uniformBuffers-06935",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08612",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-storageBuffers-06936",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>storageBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08613",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-02707",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, any resource accessed by <a href=\"#shaders-binding\">bound shaders</a> <strong class=\"purple\">must</strong> not be a protected resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-06550",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> only be used with <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-ConstOffset-06551",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> not use the <code>ConstOffset</code> and <code>Offset</code> operands",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-viewType-07752",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> match the <code>Dim</code> operand of the <code>OpTypeImage</code> as described in <a href=\"#spirvenv-image-dimensions\">Compatibility Between SPIR-V Image Dimensions and Vulkan ImageView Types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-format-07753",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the <a href=\"#formats-numericformat\">numeric type</a> of the image view&#8217;s <code>format</code> and the <code>Sampled</code> <code>Type</code> operand of the <code>OpTypeImage</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-OpImageWrite-08795",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with a format other than <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-OpImageWrite-08796",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with the format <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have four components",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-OpImageWrite-04469",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the buffer view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-SampledType-04470",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-SampledType-04471",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-SampledType-04472",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-SampledType-04473",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-sparseImageInt64Atomics-04474",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-sparseImageInt64Atomics-04475",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-OpImageWeightedSampleQCOM-06971",
          "text": "If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-OpImageWeightedSampleQCOM-06972",
          "text": "If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image 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_2_WEIGHT_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-OpImageBoxFilterQCOM-06973",
          "text": "If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-OpImageBlockMatchSSDQCOM-06974",
          "text": "If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-OpImageBlockMatchSADQCOM-06975",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-OpImageBlockMatchSADQCOM-06976",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-OpImageWeightedSampleQCOM-06977",
          "text": "If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-OpImageWeightedSampleQCOM-06978",
          "text": "If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-OpImageBlockMatchWindow-09215",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-OpImageBlockMatchWindow-09216",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s format <strong class=\"purple\">must</strong> be a single-component format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-OpImageBlockMatchWindow-09217",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07288",
          "text": "Any shader invocation executed by this command <strong class=\"purple\">must</strong> <a href=\"#shaders-termination\">terminate</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-09600",
          "text": "If a descriptor with type equal to any of <code>VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> is accessed as a result of this command, the image subresource identified by that descriptor <strong class=\"purple\">must</strong> be in the image layout identified when the descriptor was written",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-renderPass-02684",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-subpass-02685",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07748",
          "text": "If any shader statically accesses an input attachment, a valid descriptor <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-OpTypeImage-07468",
          "text": "If any shader executed by this pipeline accesses an <code>OpTypeImage</code> variable with a <code>Dim</code> operand of <code>SubpassData</code>, it <strong class=\"purple\">must</strong> be decorated with an <code>InputAttachmentIndex</code> that corresponds to a valid input attachment in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07469",
          "text": "Input attachment views accessed in a subpass <strong class=\"purple\">must</strong> be created with the same <a href=\"#VkFormat\">VkFormat</a> as the corresponding subpass definition, and be created with a <a href=\"#VkImageView\">VkImageView</a> that is compatible with the attachment referenced by the subpass' <code>pInputAttachments</code>[<code>InputAttachmentIndex</code>] in the currently bound <a href=\"#VkFramebuffer\">VkFramebuffer</a> as specified by <a href=\"#compatibility-inputattachment\">Fragment Input Attachment Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-pDepthInputAttachmentIndex-09595",
          "text": "Input attachment views accessed in a dynamic render pass with a <code>InputAttachmentIndex</code> referenced by <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>, or no <code>InputAttachmentIndex</code> if <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pDepthInputAttachmentIndex</code> or <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pStencilInputAttachmentIndex</code> are <code>NULL</code>, <strong class=\"purple\">must</strong> be created with a <a href=\"#VkImageView\">VkImageView</a> that is compatible with the corresponding color, depth, or stencil attachment in <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-pDepthInputAttachmentIndex-09596",
          "text": "Input attachment views accessed in a dynamic render pass via a shader object <strong class=\"purple\">must</strong> have an <code>InputAttachmentIndex</code> if both <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pDepthInputAttachmentIndex</code> and <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pStencilInputAttachmentIndex</code> are non-<code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-InputAttachmentIndex-09597",
          "text": "If an input attachment view accessed in a dynamic render pass via a shader object has an <code>InputAttachmentIndex</code>, the <code>InputAttachmentIndex</code> <strong class=\"purple\">must</strong> match an index in <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-06537",
          "text": "Memory backing image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be written in any way other than as an attachment by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-09000",
          "text": "If a color attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe <code>VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code> is\nset on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_COLOR_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-09001",
          "text": "If a depth attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe\n<code>VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code>\nis set on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_DEPTH_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-09002",
          "text": "If a stencil attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe\n<code>VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code>\nis set on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_STENCIL_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-09003",
          "text": "If an attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment, storage image, or sampled image by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-06539",
          "text": "If any previously recorded command in the current subpass accessed an image subresource used as an attachment in this subpass in any way other than as an attachment, this command <strong class=\"purple\">must</strong> not write to that image subresource as an attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-06886",
          "text": "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, <a href=\"#fragops-depth-write\">depth writes</a> <strong class=\"purple\">must</strong> be disabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-06887",
          "text": "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back <code>writeMask</code> are not zero, and stencil test is enabled, <a href=\"#fragops-stencil\">all stencil ops</a> <strong class=\"purple\">must</strong> be <code>VK_STENCIL_OP_KEEP</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07831",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT</code> dynamic state enabled then <a href=\"#vkCmdSetViewport\">vkCmdSetViewport</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07832",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR</code> dynamic state enabled then <a href=\"#vkCmdSetScissor\">vkCmdSetScissor</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07833",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_WIDTH</code> dynamic state enabled then <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08617",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08618",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08619",
          "text": "If a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07834",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthBiasEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthBounds\">vkCmdSetDepthBounds</a> or <a href=\"#vkCmdSetDepthBias2EXT\">vkCmdSetDepthBias2EXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07835",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_BLEND_CONSTANTS</code> dynamic state enabled then <a href=\"#vkCmdSetBlendConstants\">vkCmdSetBlendConstants</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08621",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> in the current command buffer set any element of <code>pColorBlendEnables</code> to <code>VK_TRUE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> in the current command buffer set the same element of <code>pColorBlendEquations</code> to a <code>VkColorBlendEquationEXT</code> structure with any <a href=\"#VkBlendFactor\">VkBlendFactor</a> member with a value of <code>VK_BLEND_FACTOR_CONSTANT_COLOR</code>, <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR</code>, <code>VK_BLEND_FACTOR_CONSTANT_ALPHA</code>, or <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA</code>, <a href=\"#vkCmdSetBlendConstants\">vkCmdSetBlendConstants</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07836",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthBoundsTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthBounds\">vkCmdSetDepthBounds</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07837",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilCompareMask\">vkCmdSetStencilCompareMask</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07838",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilWriteMask\">vkCmdSetStencilWriteMask</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07839",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_REFERENCE</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of and <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilReference\">vkCmdSetStencilReference</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-maxMultiviewInstanceIndex-02688",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-02689",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-06666",
          "text": "If the <code><a href=\"#VK_EXT_sample_locations\">VK_EXT_sample_locations</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07840",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_CULL_MODE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCullMode\">vkCmdSetCullMode</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07841",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_FRONT_FACE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetFrontFace\">vkCmdSetFrontFace</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07843",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, <a href=\"#vkCmdSetDepthTestEnable\">vkCmdSetDepthTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07844",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthWriteEnable\">vkCmdSetDepthWriteEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07845",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_COMPARE_OP</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthCompareOp\">vkCmdSetDepthCompareOp</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07846",
          "text": "If the <a href=\"#features-depthBounds\"><code>depthBounds</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthBoundsTestEnable\">vkCmdSetDepthBoundsTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07847",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetStencilTestEnable\">vkCmdSetStencilTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07848",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_OP</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilOp\">vkCmdSetStencilOp</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-viewportCount-03417",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-scissorCount-03418",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, then <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-viewportCount-03419",
          "text": "If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> and <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08635",
          "text": "If a shader object is bound to any graphics stage, then both <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> and <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-viewportCount-04137",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-viewportCount-04138",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08636",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-viewportCount-04139",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-shadingRateImage-09233",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV</code> and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-shadingRateImage-09234",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08637",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-VkPipelineVieportCreateInfo-04141",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled and a <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> structure chained from <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-VkPipelineVieportCreateInfo-04142",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled and a <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> structure chained from <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07878",
          "text": "If the <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetExclusiveScissorEnableNV\">vkCmdSetExclusiveScissorEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07879",
          "text": "If the <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV</code> dynamic state enabled, and the most recent call to <a href=\"#vkCmdSetExclusiveScissorEnableNV\">vkCmdSetExclusiveScissorEnableNV</a> in the current command buffer set any element of <code>pExclusiveScissorEnables</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetExclusiveScissorNV\">vkCmdSetExclusiveScissorNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-04876",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-04877",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthBiasEnable\">vkCmdSetDepthBiasEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-logicOp-04878",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_LOGIC_OP_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>logicOpEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetLogicOpEXT\">vkCmdSetLogicOpEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-primitiveFragmentShadingRateWithMultipleViewports-04552",
          "text": "If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-primitiveFragmentShadingRateWithMultipleViewports-08642",
          "text": "If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, and any shader object bound to a graphics stage writes to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-blendEnable-04727",
          "text": "If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the <code>blendEnable</code> member of the corresponding element of the <code>pAttachments</code> member of <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08643",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then for each color attachment in the render pass, if the corresponding image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the corresponding member of <code>pColorBlendEnables</code> in the most recent call to <code>vkCmdSetColorBlendEnableEXT</code> in the current command buffer that affected that attachment index <strong class=\"purple\">must</strong> have been <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-multisampledRenderToSingleSampled-07284",
          "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then <code>rasterizationSamples</code> for the currently bound graphics pipeline\n<strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil\nattachments</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08644",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the\ncurrent command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the\nsame as the number of samples for the current render pass color and/or\ndepth/stencil attachments</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08876",
          "text": "If a shader object is bound to any graphics stage, the current render pass instance <strong class=\"purple\">must</strong> have been begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-imageView-06172",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-imageView-06173",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-imageView-06174",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-imageView-06175",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-imageView-06176",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-imageView-06177",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-viewMask-06178",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>viewMask</code> equal to <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>viewMask</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-colorAttachmentCount-06179",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>colorAttachmentCount</code> equal to <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-08910",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-08912",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-08911",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-colorAttachmentCount-09362",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, there is no shader object bound to any graphics stage, and a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>resolveImageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with an image created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value equal to the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-09363",
          "text": "If there is no shader object bound to any graphics stage, the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, and a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with an image created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value equal to the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-09364",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have set the blend enable to <code>VK_FALSE</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-09365",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to <code>VK_SAMPLE_COUNT_1_BIT</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-09366",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have set blend enable to <code>VK_FALSE</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-rasterizationSamples-09367",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to <code>VK_SAMPLE_COUNT_1_BIT</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-09368",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;width</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-09369",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;height</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-pFragmentSize-09370",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;width</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-pFragmentSize-09371",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;height</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07749",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteEnableEXT\">vkCmdSetColorWriteEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08646",
          "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is enabled on the device, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorWriteEnableEXT\">vkCmdSetColorWriteEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-attachmentCount-07750",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code> dynamic state enabled then the <code>attachmentCount</code> parameter of <code>vkCmdSetColorWriteEnableEXT</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>VkPipelineColorBlendStateCreateInfo</code>::<code>attachmentCount</code> of the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08647",
          "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is enabled on the device, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then the <code>attachmentCount</code> parameter of most recent call to <code>vkCmdSetColorWriteEnableEXT</code> in the current command buffer <strong class=\"purple\">must</strong> be greater than or equal to the number of color attachments in the current render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07751",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleEXT\">vkCmdSetDiscardRectangleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command for each discard rectangle in <a href=\"#VkPipelineDiscardRectangleStateCreateInfoEXT\">VkPipelineDiscardRectangleStateCreateInfoEXT</a>::<code>discardRectangleCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07880",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-rasterizerDiscardEnable-09236",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> in the current command buffer set <code>discardRectangleEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDiscardRectangleEXT\">vkCmdSetDiscardRectangleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08648",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07881",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleModeEXT\">vkCmdSetDiscardRectangleModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08649",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> in the current command buffer set <code>discardRectangleEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDiscardRectangleModeEXT\">vkCmdSetDiscardRectangleModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-08913",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-08914",
          "text": "If current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-08915",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline was not equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>, the value of the format <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-08916",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-08917",
          "text": "If current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-dynamicRenderingUnusedAttachments-08918",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline was not equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>, the value of the format <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-imageView-06183",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a>::<code>imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-imageView-06184",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingFragmentDensityMapAttachmentInfoEXT\">VkRenderingFragmentDensityMapAttachmentInfoEXT</a>::<code>imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-colorAttachmentCount-06185",
          "text": "If the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the corresponding element of the <code>pColorAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-pDepthAttachment-06186",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-pStencilAttachment-06187",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-multisampledRenderToSingleSampled-07285",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     the current render pass instance was begun with     <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than     <code>0</code>, then each element of the     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a     <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been     created with a sample count equal to the value of     <code>rasterizationSamples</code> for the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-multisampledRenderToSingleSampled-07286",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not     <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the     currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count     used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-multisampledRenderToSingleSampled-07287",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not     <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the     currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count     used to create     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-pNext-07935",
          "text": "If this command has been called inside a render pass instance started with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and the <code>pNext</code> chain of <a href=\"#VkRenderingInfo\">VkRenderingInfo</a> includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a>::<code>rasterizationSamples</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-renderPass-06198",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>renderPass</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-pColorAttachments-08963",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound with a fragment shader that statically writes to a color attachment, the color write mask is not zero, color writes are enabled, and the corresponding element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-pDepthAttachment-08964",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound, depth test is enabled, depth write is enabled, and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-pStencilAttachment-08965",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound, stencil test is enabled and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-primitivesGeneratedQueryWithRasterizerDiscard-06708",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithRasterizerDiscard\"><code>primitivesGeneratedQueryWithRasterizerDiscard</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, <a href=\"#primsrast-discard\">rasterization discard</a> <strong class=\"purple\">must</strong> not be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-primitivesGeneratedQueryWithNonZeroStreams-06709",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, the bound graphics pipeline <strong class=\"purple\">must</strong> not have been created with a non-zero value in <code>VkPipelineRasterizationStateStreamCreateInfoEXT</code>::<code>rasterizationStream</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07619",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetTessellationDomainOriginEXT\">vkCmdSetTessellationDomainOriginEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07620",
          "text": "If the <a href=\"#features-depthClamp\"><code>depthClamp</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthClampEnableEXT\">vkCmdSetDepthClampEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07621",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_POLYGON_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07622",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07623",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-alphaToCoverageEnable-08919",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic state enabled, and <code>alphaToCoverageEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-alphaToCoverageEnable-08920",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a> in the current command buffer set <code>alphaToCoverageEnable</code> to <code>VK_TRUE</code>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07624",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07625",
          "text": "If the <a href=\"#features-alphaToOne\"><code>alphaToOne</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAlphaToOneEnableEXT\">vkCmdSetAlphaToOneEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07626",
          "text": "If the <a href=\"#features-logicOp\"><code>logicOp</code></a> feature is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLogicOpEnableEXT\">vkCmdSetLogicOpEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07627",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08657",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07628",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08658",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> for any attachment set that attachment&#8217;s value in <code>pColorBlendEnables</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07629",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08659",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07630",
          "text": "If the <a href=\"#features-geometryStreams\"><code>geometryStreams</code></a> feature is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizationStreamEXT\">vkCmdSetRasterizationStreamEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07631",
          "text": "If the <code><a href=\"#VK_EXT_conservative_rasterization\">VK_EXT_conservative_rasterization</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetConservativeRasterizationModeEXT\">vkCmdSetConservativeRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07632",
          "text": "If the <code><a href=\"#VK_EXT_conservative_rasterization\">VK_EXT_conservative_rasterization</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>conservativeRasterizationMode</code> is <code>VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT</code>, then <a href=\"#vkCmdSetExtraPrimitiveOverestimationSizeEXT\">vkCmdSetExtraPrimitiveOverestimationSizeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07633",
          "text": "If the <a href=\"#features-depthClipEnable\"><code>depthClipEnable</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT</code> dynamic state, then <a href=\"#vkCmdSetDepthClipEnableEXT\">vkCmdSetDepthClipEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07634",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08664",
          "text": "If the <code><a href=\"#VK_EXT_sample_locations\">VK_EXT_sample_locations</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07635",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-rasterizerDiscardEnable-09416",
          "text": "If the <code><a href=\"#VK_EXT_blend_operation_advanced\">VK_EXT_blend_operation_advanced</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then at least one of <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> and <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07636",
          "text": "If the <code><a href=\"#VK_EXT_provoking_vertex\">VK_EXT_provoking_vertex</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetProvokingVertexModeEXT\">vkCmdSetProvokingVertexModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07637",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08666",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08667",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08668",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07638",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08669",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08670",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08671",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07849",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_KHR</code>     dynamic state enabled then <a href=\"#vkCmdSetLineStippleKHR\">vkCmdSetLineStippleKHR</a>     <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing     command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08672",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> in the current command buffer set <code>stippledLineEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetLineStippleEXT\">vkCmdSetLineStippleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07639",
          "text": "If the <a href=\"#features-depthClipControl\"><code>depthClipControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetDepthClipNegativeOneToOneEXT\">vkCmdSetDepthClipNegativeOneToOneEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-09650",
          "text": "If the <a href=\"#features-depthClampControl\"><code>depthClampControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthClampEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthClampRangeEXT\">vkCmdSetDepthClampRangeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07640",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07641",
          "text": "If the <code><a href=\"#VK_NV_viewport_swizzle\">VK_NV_viewport_swizzle</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07642",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07643",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageToColorEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07644",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageModulationModeNV\">vkCmdSetCoverageModulationModeNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07645",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageModulationMode</code> is any value other than <code>VK_COVERAGE_MODULATION_MODE_NONE_NV</code>, then <a href=\"#vkCmdSetCoverageModulationTableEnableNV\">vkCmdSetCoverageModulationTableEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07646",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageModulationTableEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetCoverageModulationTableNV\">vkCmdSetCoverageModulationTableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07647",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-pipelineFragmentShadingRate-09238",
          "text": "If the <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a> feature is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07648",
          "text": "If the <a href=\"#features-representativeFragmentTest\"><code>representativeFragmentTest</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetRepresentativeFragmentTestEnableNV\">vkCmdSetRepresentativeFragmentTestEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07649",
          "text": "If the <a href=\"#features-coverageReductionMode\"><code>coverageReductionMode</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageReductionModeNV\">vkCmdSetCoverageReductionModeNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-pColorBlendEnables-07470",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> state enabled and the last call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> set <code>pColorBlendEnables</code> for any attachment to <code>VK_TRUE</code>, then for those attachments in the subpass the corresponding 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_BLEND_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-rasterizationSamples-07471",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> follow the rules for a <a href=\"#renderpass-noattachments\">zero-attachment subpass</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-samples-07472",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, then the <code>samples</code> parameter in the last call to <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> be greater or equal to the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a>::<code>rasterizationSamples</code> parameter used to create the bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-samples-07473",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> state and <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> states enabled, then the <code>samples</code> parameter in the last call to <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> be greater or equal to the <code>rasterizationSamples</code> parameter in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-rasterizationSamples-07474",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and neither the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> nor the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extensions are enabled, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil attachments",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-09211",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, or a shader object is bound to any graphics stage, and the current render pass instance includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> be the same as the <code>rasterizationSamples</code> member of that structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-firstAttachment-07476",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEnableEXT</code> calls <strong class=\"purple\">must</strong> specify an enable for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-rasterizerDiscardEnable-09417",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEnableEXT</code> calls <strong class=\"purple\">must</strong> specify an enable for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-firstAttachment-07477",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEquationEXT</code> calls <strong class=\"purple\">must</strong> specify the blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-rasterizerDiscardEnable-09418",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEquationEXT</code> calls <strong class=\"purple\">must</strong> specify the blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-firstAttachment-07478",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorWriteMaskEXT</code> calls <strong class=\"purple\">must</strong> specify the color write mask for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-rasterizerDiscardEnable-09419",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorWriteMaskEXT</code> calls <strong class=\"purple\">must</strong> specify the color write mask for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-firstAttachment-07479",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendAdvancedEXT</code> calls <strong class=\"purple\">must</strong> specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-advancedBlendMaxColorAttachments-07480",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> and <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic states enabled and the last calls to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> and <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> have enabled advanced blending, then the number of active color attachments in the current subpass <strong class=\"purple\">must</strong> not exceed <a href=\"#limits-advancedBlendMaxColorAttachments\"><code>advancedBlendMaxColorAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-primitivesGeneratedQueryWithNonZeroStreams-07481",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, and the bound graphics pipeline was created with <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code> state enabled, the last call to <a href=\"#vkCmdSetRasterizationStreamEXT\">vkCmdSetRasterizationStreamEXT</a> <strong class=\"purple\">must</strong> have set the <code>rasterizationStream</code> to zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-sampleLocationsPerPixel-07482",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-sampleLocationsPerPixel-07483",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-07484",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-07485",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, then the <code>sampleLocationsInfo.sampleLocationGridSize.width</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-07486",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, then the <code>sampleLocationsInfo.sampleLocationGridSize.height</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-07487",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, the fragment shader code <strong class=\"purple\">must</strong> not statically use the extended instruction <code>InterpolateAtSample</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-07936",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <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 the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-07937",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <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 the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-07938",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-coverageModulationTableEnable-07488",
          "text": "If a shader object is bound to any graphics stage or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code> state enabled, and the last call to <a href=\"#vkCmdSetCoverageModulationTableEnableNV\">vkCmdSetCoverageModulationTableEnableNV</a> set <code>coverageModulationTableEnable</code> to <code>VK_TRUE</code>, then the <code>coverageModulationTableCount</code> parameter in the last call to <a href=\"#vkCmdSetCoverageModulationTableNV\">vkCmdSetCoverageModulationTableNV</a> <strong class=\"purple\">must</strong> equal the current <code>rasterizationSamples</code> divided by the number of color samples in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-rasterizationSamples-07489",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current <code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be the same as the sample count of the depth/stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-coverageToColorEnable-07490",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> state enabled and the last call to <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> set the <code>coverageToColorEnable</code> to <code>VK_TRUE</code>, then the current subpass <strong class=\"purple\">must</strong> have a color attachment at the location selected by the last call to <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-rasterizerDiscardEnable-09420",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the last call to <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> set the <code>coverageToColorEnable</code> to <code>VK_TRUE</code>, then the current subpass <strong class=\"purple\">must</strong> have a color attachment at the location selected by the last call to <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-coverageReductionMode-07491",
          "text": "If this <code><a href=\"#VK_NV_coverage_reduction_mode\">VK_NV_coverage_reduction_mode</a></code> extension is enabled, the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> and <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> states enabled, the current coverage reduction mode <code>coverageReductionMode</code>, then the current <code>rasterizationSamples</code>, and the sample counts for the color and depth/stencil attachments (if the subpass has them) <strong class=\"purple\">must</strong> be a valid combination returned by <a href=\"#vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV\">vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-viewportCount-07492",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-viewportCount-07493",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-viewportCount-09421",
          "text": "If the <code><a href=\"#VK_NV_viewport_swizzle\">VK_NV_viewport_swizzle</a></code> extension is enabled, and a shader object is bound to any graphics stage, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-rasterizationSamples-07494",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, and if the current subpass has any color attachments and <code>rasterizationSamples</code> of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> is greater than the number of color samples, then the pipeline <code>sampleShadingEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-stippledLineEnable-07495",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-stippledLineEnable-07496",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR</code>, then the <a href=\"#features-stippledBresenhamLines\"><code>stippledBresenhamLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-stippledLineEnable-07497",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR</code>, then the <a href=\"#features-stippledSmoothLines\"><code>stippledSmoothLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-stippledLineEnable-07498",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_DEFAULT_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled and <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>strictLines</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-conservativePointAndLineRasterization-07499",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code> dynamic state enabled, <a href=\"#limits-conservativePointAndLineRasterization\"><code>conservativePointAndLineRasterization</code></a> is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the <code>conservativeRasterizationMode</code> set by the last call to <a href=\"#vkCmdSetConservativeRasterizationModeEXT\">vkCmdSetConservativeRasterizationModeEXT</a> <strong class=\"purple\">must</strong> be <code>VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-stage-07073",
          "text": "If the currently bound pipeline was created with the <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a>::<code>stage</code> member of an element of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> set to <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>, then <a href=\"#queries-mesh-shader\">Mesh Shader Queries</a> <strong class=\"purple\">must</strong> not be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08877",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07850",
          "text": "If dynamic state was inherited from <a href=\"#VkCommandBufferInheritanceViewportScissorInfoNV\">VkCommandBufferInheritanceViewportScissorInfoNV</a>, it <strong class=\"purple\">must</strong> be set in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08684",
          "text": "If there is no bound graphics pipeline, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_VERTEX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08685",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08686",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08687",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08688",
          "text": "If there is no bound graphics pipeline, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08689",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TASK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08690",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08693",
          "text": "If there is no bound graphics pipeline, and at least one of the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features is enabled, one of the <code>VK_SHADER_STAGE_VERTEX_BIT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stages <strong class=\"purple\">must</strong> have a valid <code>VkShaderEXT</code> bound, and the other <strong class=\"purple\">must</strong> have no <code>VkShaderEXT</code> bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08694",
          "text": "If there is no bound graphics pipeline, and both the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features are enabled, and a valid <code>VkShaderEXT</code> is bound the to the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage, and that <code>VkShaderEXT</code> was created without the <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> flag, a valid <code>VkShaderEXT</code> <strong class=\"purple\">must</strong> be bound to the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08695",
          "text": "If there is no bound graphics pipeline, and both the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features are enabled, and a valid <code>VkShaderEXT</code> is bound the to the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage, and that <code>VkShaderEXT</code> was created with the <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> flag, there <strong class=\"purple\">must</strong> be no <code>VkShaderEXT</code> bound to the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08696",
          "text": "If there is no bound graphics pipeline, and a valid <code>VkShaderEXT</code> is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, there <strong class=\"purple\">must</strong> be no <code>VkShaderEXT</code> bound to either the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage or the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08698",
          "text": "If any graphics shader is bound which was created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag, then all shaders created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag in the same <a href=\"#vkCreateShadersEXT\">vkCreateShadersEXT</a> call <strong class=\"purple\">must</strong> also be bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08699",
          "text": "If any graphics shader is bound which was created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag, any stages in between stages whose shaders which did not create a shader with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag as part of the same <a href=\"#vkCreateShadersEXT\">vkCreateShadersEXT</a> call <strong class=\"purple\">must</strong> not have any <code>VkShaderEXT</code> bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08878",
          "text": "All bound graphics shader objects <strong class=\"purple\">must</strong> have been created with identical or identically defined push constant ranges",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08879",
          "text": "All bound graphics shader objects <strong class=\"purple\">must</strong> have been created with identical or identically defined arrays of descriptor set layouts",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-colorAttachmentCount-09372",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, and a fragment shader is bound, it <strong class=\"purple\">must</strong> not declare the <code>DepthReplacing</code> or <code>StencilRefReplacingEXT</code> execution modes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-pDynamicStates-08715",
          "text": "If the bound graphics pipeline state includes a fragment shader stage, was created with <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpDepthAttachmentReadEXT</code>, the <code>depthWriteEnable</code> parameter in the last call to <a href=\"#vkCmdSetDepthWriteEnable\">vkCmdSetDepthWriteEnable</a> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-pDynamicStates-08716",
          "text": "If the bound graphics pipeline state includes a fragment shader stage, was created with <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpStencilAttachmentReadEXT</code>, the <code>writeMask</code> parameter in the last call to <a href=\"#vkCmdSetStencilWriteMask\">vkCmdSetStencilWriteMask</a> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-09116",
          "text": "If     a shader object is bound to any graphics stage or     the currently bound graphics pipeline was created with     <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code>,     and the format of any color attachment is     <code>VK_FORMAT_E5B9G9R9_UFLOAT_PACK32</code>, the corresponding element of the     <code>pColorWriteMasks</code> parameter of <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a>     <strong class=\"purple\">must</strong> either include all of <code>VK_COLOR_COMPONENT_R_BIT</code>,     <code>VK_COLOR_COMPONENT_G_BIT</code>, and <code>VK_COLOR_COMPONENT_B_BIT</code>, or     none of them",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-maxFragmentDualSrcAttachments-09239",
          "text": "If <a href=\"#framebuffer-blending\">blending</a> is enabled for any attachment where either the source or destination blend factors for that attachment <a href=\"#framebuffer-dsb\">use the secondary color input</a>, the maximum value of <code>Location</code> for any output attachment <a href=\"#shaders-staticuse\">statically used</a> in the <code>Fragment</code> <code>Execution</code> <code>Model</code> executed by this command <strong class=\"purple\">must</strong> be less than <a href=\"#limits-maxFragmentDualSrcAttachments\"><code>maxFragmentDualSrcAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-09548",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and there is no shader object bound to any graphics stage, the value of each element of <a href=\"#VkRenderingAttachmentLocationInfoKHR\">VkRenderingAttachmentLocationInfoKHR</a>::<code>pColorAttachmentLocations</code> set by <a href=\"#vkCmdSetRenderingAttachmentLocationsKHR\">vkCmdSetRenderingAttachmentLocationsKHR</a> <strong class=\"purple\">must</strong> match the value set for the corresponding element in the currently bound pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-09549",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and there is no shader object bound to any graphics stage, input attachment index mappings in the currently bound pipeline <strong class=\"purple\">must</strong> match those set for the current render pass instance via <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-09642",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with the <code>VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT</code> flag, the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-09643",
          "text": "If the bound graphics pipeline was created with <code>VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT</code>, the current render pass <strong class=\"purple\">must</strong> have begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with the <code>VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT</code> flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-04007",
          "text": "All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> buffers bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-04008",
          "text": "If the <a href=\"#features-nullDescriptor\"><code>nullDescriptor</code></a> feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02721",
          "text": "If <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> is not enabled, and that pipeline was created without enabling <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> for <code>vertexInputs</code>, then 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07842",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY</code> dynamic state enabled     then <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> <strong class=\"purple\">must</strong> have been called and not     subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current     command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-dynamicPrimitiveTopologyUnrestricted-07500",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY</code> dynamic state enabled and the <a href=\"#limits-dynamicPrimitiveTopologyUnrestricted\"><code>dynamicPrimitiveTopologyUnrestricted</code></a> is <code>VK_FALSE</code>, then the <code>primitiveTopology</code> parameter of <code>vkCmdSetPrimitiveTopology</code> <strong class=\"purple\">must</strong> be of the same <a href=\"#drawing-primitive-topology-class\">topology class</a> as the pipeline <a href=\"#VkPipelineInputAssemblyStateCreateInfo\">VkPipelineInputAssemblyStateCreateInfo</a>::<code>topology</code> state",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-pStrides-04913",
          "text": "If the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE</code> dynamic state enabled, but without the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdBindVertexBuffers2\">vkCmdBindVertexBuffers2</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this draw command, and the <code>pStrides</code> parameter of <a href=\"#vkCmdBindVertexBuffers2\">vkCmdBindVertexBuffers2</a> <strong class=\"purple\">must</strong> not be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-04914",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     then <a href=\"#vkCmdSetVertexInputEXT\">vkCmdSetVertexInputEXT</a> <strong class=\"purple\">must</strong> have been called and not     subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current     command buffer prior to this draw command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-Input-07939",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     then all variables with the <code>Input</code> storage class decorated with     <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code>     <strong class=\"purple\">must</strong> contain a location in     <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>location</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-Input-08734",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     and either <a href=\"#features-legacyVertexAttributes\"><code>legacyVertexAttributes</code></a> is not enabled or the SPIR-V Type     associated with a given <code>Input</code> variable of the corresponding     <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code> is     64-bit,     then the numeric type associated with all <code>Input</code> variables of the     corresponding <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code>     <code>OpEntryPoint</code> <strong class=\"purple\">must</strong> be the same as     <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>format</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-format-08936",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     and <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>format</code> has a     64-bit component, then the scalar width associated with all <code>Input</code>     variables of the corresponding <code>Location</code> in the <code>Vertex</code>     <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code> <strong class=\"purple\">must</strong> be 64-bit",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-format-08937",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     and the scalar width associated with a <code>Location</code> decorated     <code>Input</code> variable in the <code>Vertex</code> <code>Execution</code> <code>Model</code>     <code>OpEntryPoint</code> is 64-bit, then the corresponding     <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>format</code> <strong class=\"purple\">must</strong> have a     64-bit component",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-09203",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     and <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>format</code> has a     64-bit component, then all <code>Input</code> variables at the corresponding     <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code>     <strong class=\"purple\">must</strong> not use components that are not present in the format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-04875",
          "text": "If     there is a shader object bound to the     <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT</code> dynamic state enabled,     and the <a href=\"#dynamic-state-current-value\">current value</a> of     <code>primitiveTopology</code> is <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, then     <a href=\"#vkCmdSetPatchControlPointsEXT\">vkCmdSetPatchControlPointsEXT</a> <strong class=\"purple\">must</strong> have been called and not     subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current     command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-04879",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE</code> dynamic state enabled     then <a href=\"#vkCmdSetPrimitiveRestartEnable\">vkCmdSetPrimitiveRestartEnable</a> <strong class=\"purple\">must</strong> have been called and not     subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current     command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-09637",
          "text": "If     the <a href=\"#features-primitiveTopologyListRestart\"><code>primitiveTopologyListRestart</code></a> feature is not enabled,     the topology 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>, or     <code>VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY</code>,     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE</code> dynamic state enabled     then <a href=\"#vkCmdSetPrimitiveRestartEnable\">vkCmdSetPrimitiveRestartEnable</a> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-stage-06481",
          "text": "The bound graphics pipeline <strong class=\"purple\">must</strong> not have been created with the <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a>::<code>stage</code> member of an element of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> set to <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08885",
          "text": "There <strong class=\"purple\">must</strong> be no shader object bound to either of the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-buffer-02708",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-buffer-02709",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-offset-02710",
          "text": "<code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-02711",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-02718",
          "text": "If the <a href=\"#features-multiDrawIndirect\"><code>multiDrawIndirect</code></a> feature is not enabled, <code>drawCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-02719",
          "text": "<code>drawCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07312",
          "text": "If <a href=\"#features-maintenance6\"><code>maintenance6</code></a> is not enabled, a valid index buffer <strong class=\"purple\">must</strong> be bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-00528",
          "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>)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-00539",
          "text": "If <code>drawCount</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> +  <code>sizeof</code>(<code>VkDrawIndexedIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-00540",
          "text": "If <code>drawCount</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> × (<code>drawCount</code> - 1) +  <code>offset</code> +  <code>sizeof</code>(<code>VkDrawIndexedIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-buffer-parameter",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirect-commonparent",
          "text": "Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkDrawIndexedIndirectCommand": {
      "core": [
        {
          "vuid": "VUID-VkDrawIndexedIndirectCommand-pNext-09461",
          "text": "If the bound graphics pipeline state was created with <a href=\"#VkPipelineVertexInputDivisorStateCreateInfoKHR\">VkPipelineVertexInputDivisorStateCreateInfoKHR</a> in the <code>pNext</code> chain of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pVertexInputState</code>, any member of <a href=\"#VkPipelineVertexInputDivisorStateCreateInfoKHR\">VkPipelineVertexInputDivisorStateCreateInfoKHR</a>::<code>pVertexBindingDivisors</code> has a value other than <code>1</code> in <code>divisor</code>, and <a href=\"#VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR\">VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR</a>::<code>supportsNonZeroFirstInstance</code> is <code>VK_FALSE</code>, then <code>firstInstance</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDrawIndexedIndirectCommand-None-09462",
          "text": "If <a href=\"#shaders-objects\">shader objects</a> are used for drawing or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled, any member of the <code>pVertexBindingDescriptions</code> parameter to the <a href=\"#vkCmdSetVertexInputEXT\">vkCmdSetVertexInputEXT</a> call that sets this dynamic state has a value other than <code>1</code> in <code>divisor</code>, and <a href=\"#VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR\">VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR</a>::<code>supportsNonZeroFirstInstance</code> is <code>VK_FALSE</code>, then <code>firstInstance</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDrawIndexedIndirectCommand-robustBufferAccess2-08798",
          "text": "If <a href=\"#features-robustBufferAccess2\"><code>robustBufferAccess2</code></a> is not enabled, <span class=\"eq\">(<code>indexSize</code> × (<code>firstIndex</code> +  <code>indexCount</code>) +  <code>offset</code>)</span> <strong class=\"purple\">must</strong> be less than or equal to the size of the bound index buffer, with <code>indexSize</code> being based on the type specified by <code>indexType</code>, where the index buffer, <code>indexType</code>, and <code>offset</code> are specified via <code>vkCmdBindIndexBuffer</code> or <code>vkCmdBindIndexBuffer2KHR</code>. If <code>vkCmdBindIndexBuffer2KHR</code> is used to bind the index buffer, the size of the bound index buffer is <a href=\"#vkCmdBindIndexBuffer2KHR\">vkCmdBindIndexBuffer2KHR</a>::<code>size</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDrawIndexedIndirectCommand-firstInstance-00554",
          "text": "If the <a href=\"#features-drawIndirectFirstInstance\"><code>drawIndirectFirstInstance</code></a> feature is not enabled, <code>firstInstance</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdDrawIndexedIndirectCount": {
      "core": [
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-magFilter-04553",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-magFilter-09598",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-mipmapMode-04770",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-mipmapMode-09599",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-unnormalizedCoordinates-09635",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>levelCount</code> and <code>layerCount</code> <strong class=\"purple\">must</strong> be 1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-unnormalizedCoordinates-09636",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_VIEW_TYPE_1D</code> or <code>VK_IMAGE_VIEW_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-06479",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is sampled with <a href=\"#textures-depth-compare-operation\">depth comparison</a>, 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_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02691",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed using atomic operations as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07888",
          "text": "If a <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> descriptor is accessed using atomic operations as a result of this command, then the storage texel buffer&#8217;s <a href=\"#resources-buffer-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02692",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02693",
          "text": "If the <a href=\"#VK_EXT_filter_cubic\">VK_EXT_filter_cubic</a> extension is not enabled and any <a href=\"#VkImageView\">VkImageView</a> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, it <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-filterCubic-02694",
          "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 <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubic</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-filterCubicMinmax-02695",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubicMinmax</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-cubicRangeClamp-09212",
          "text": "If the <a href=\"#features-filter-cubic-range-clamp\"><code>cubicRangeClamp</code></a> feature is not enabled, then 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=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-reductionMode-09213",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with a <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code> as a result of this command <strong class=\"purple\">must</strong> sample with <code>VK_FILTER_CUBIC_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-selectableCubicWeights-09214",
          "text": "If the <a href=\"#features-filter-cubic-weight-selection\"><code>selectableCubicWeights</code></a> feature is not enabled, then 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 href=\"#VkSamplerCubicWeightsCreateInfoQCOM\">VkSamplerCubicWeightsCreateInfoQCOM</a>::<code>cubicWeights</code> equal to <code>VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-flags-02696",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpTypeImage-07027",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being written as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpTypeImage-07028",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being read as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpTypeImage-07029",
          "text": "For any <a href=\"#VkBufferView\">VkBufferView</a> being written as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpTypeImage-07030",
          "text": "Any <a href=\"#VkBufferView\">VkBufferView</a> being read as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code> then the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08600",
          "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08601",
          "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-10068",
          "text": "For each array of resources that is used by <a href=\"#shaders-binding\">a bound shader</a>, the indices used to access members of the array <strong class=\"purple\">must</strong> be less than the descriptor count for the identified binding in the descriptor sets used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-maintenance4-08602",
          "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08114",
          "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08115",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created without <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08116",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08604",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08117",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08119",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkPipeline\">VkPipeline</a> created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08605",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkShaderEXT\">VkShaderEXT</a> created with a <code>VkDescriptorSetLayout</code> that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08606",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is not enabled, a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08608",
          "text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state specified statically in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08609",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <a href=\"#VkImage\">VkImage</a> with a <a href=\"#VkImageView\">VkImageView</a> 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08610",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08611",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08607",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-uniformBuffers-06935",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08612",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-storageBuffers-06936",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>storageBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08613",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-02707",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, any resource accessed by <a href=\"#shaders-binding\">bound shaders</a> <strong class=\"purple\">must</strong> not be a protected resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-06550",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> only be used with <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-ConstOffset-06551",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> not use the <code>ConstOffset</code> and <code>Offset</code> operands",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-viewType-07752",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> match the <code>Dim</code> operand of the <code>OpTypeImage</code> as described in <a href=\"#spirvenv-image-dimensions\">Compatibility Between SPIR-V Image Dimensions and Vulkan ImageView Types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-format-07753",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the <a href=\"#formats-numericformat\">numeric type</a> of the image view&#8217;s <code>format</code> and the <code>Sampled</code> <code>Type</code> operand of the <code>OpTypeImage</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpImageWrite-08795",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with a format other than <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpImageWrite-08796",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with the format <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have four components",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpImageWrite-04469",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the buffer view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-SampledType-04470",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-SampledType-04471",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-SampledType-04472",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-SampledType-04473",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-sparseImageInt64Atomics-04474",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-sparseImageInt64Atomics-04475",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpImageWeightedSampleQCOM-06971",
          "text": "If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpImageWeightedSampleQCOM-06972",
          "text": "If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image 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_2_WEIGHT_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpImageBoxFilterQCOM-06973",
          "text": "If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpImageBlockMatchSSDQCOM-06974",
          "text": "If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpImageBlockMatchSADQCOM-06975",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpImageBlockMatchSADQCOM-06976",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpImageWeightedSampleQCOM-06977",
          "text": "If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpImageWeightedSampleQCOM-06978",
          "text": "If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpImageBlockMatchWindow-09215",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpImageBlockMatchWindow-09216",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s format <strong class=\"purple\">must</strong> be a single-component format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpImageBlockMatchWindow-09217",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07288",
          "text": "Any shader invocation executed by this command <strong class=\"purple\">must</strong> <a href=\"#shaders-termination\">terminate</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-09600",
          "text": "If a descriptor with type equal to any of <code>VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> is accessed as a result of this command, the image subresource identified by that descriptor <strong class=\"purple\">must</strong> be in the image layout identified when the descriptor was written",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-renderPass-02684",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-subpass-02685",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07748",
          "text": "If any shader statically accesses an input attachment, a valid descriptor <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpTypeImage-07468",
          "text": "If any shader executed by this pipeline accesses an <code>OpTypeImage</code> variable with a <code>Dim</code> operand of <code>SubpassData</code>, it <strong class=\"purple\">must</strong> be decorated with an <code>InputAttachmentIndex</code> that corresponds to a valid input attachment in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07469",
          "text": "Input attachment views accessed in a subpass <strong class=\"purple\">must</strong> be created with the same <a href=\"#VkFormat\">VkFormat</a> as the corresponding subpass definition, and be created with a <a href=\"#VkImageView\">VkImageView</a> that is compatible with the attachment referenced by the subpass' <code>pInputAttachments</code>[<code>InputAttachmentIndex</code>] in the currently bound <a href=\"#VkFramebuffer\">VkFramebuffer</a> as specified by <a href=\"#compatibility-inputattachment\">Fragment Input Attachment Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-pDepthInputAttachmentIndex-09595",
          "text": "Input attachment views accessed in a dynamic render pass with a <code>InputAttachmentIndex</code> referenced by <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>, or no <code>InputAttachmentIndex</code> if <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pDepthInputAttachmentIndex</code> or <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pStencilInputAttachmentIndex</code> are <code>NULL</code>, <strong class=\"purple\">must</strong> be created with a <a href=\"#VkImageView\">VkImageView</a> that is compatible with the corresponding color, depth, or stencil attachment in <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-pDepthInputAttachmentIndex-09596",
          "text": "Input attachment views accessed in a dynamic render pass via a shader object <strong class=\"purple\">must</strong> have an <code>InputAttachmentIndex</code> if both <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pDepthInputAttachmentIndex</code> and <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pStencilInputAttachmentIndex</code> are non-<code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-InputAttachmentIndex-09597",
          "text": "If an input attachment view accessed in a dynamic render pass via a shader object has an <code>InputAttachmentIndex</code>, the <code>InputAttachmentIndex</code> <strong class=\"purple\">must</strong> match an index in <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-06537",
          "text": "Memory backing image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be written in any way other than as an attachment by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-09000",
          "text": "If a color attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe <code>VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code> is\nset on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_COLOR_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-09001",
          "text": "If a depth attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe\n<code>VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code>\nis set on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_DEPTH_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-09002",
          "text": "If a stencil attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe\n<code>VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code>\nis set on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_STENCIL_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-09003",
          "text": "If an attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment, storage image, or sampled image by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-06539",
          "text": "If any previously recorded command in the current subpass accessed an image subresource used as an attachment in this subpass in any way other than as an attachment, this command <strong class=\"purple\">must</strong> not write to that image subresource as an attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-06886",
          "text": "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, <a href=\"#fragops-depth-write\">depth writes</a> <strong class=\"purple\">must</strong> be disabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-06887",
          "text": "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back <code>writeMask</code> are not zero, and stencil test is enabled, <a href=\"#fragops-stencil\">all stencil ops</a> <strong class=\"purple\">must</strong> be <code>VK_STENCIL_OP_KEEP</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07831",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT</code> dynamic state enabled then <a href=\"#vkCmdSetViewport\">vkCmdSetViewport</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07832",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR</code> dynamic state enabled then <a href=\"#vkCmdSetScissor\">vkCmdSetScissor</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07833",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_WIDTH</code> dynamic state enabled then <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08617",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08618",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08619",
          "text": "If a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07834",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthBiasEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthBounds\">vkCmdSetDepthBounds</a> or <a href=\"#vkCmdSetDepthBias2EXT\">vkCmdSetDepthBias2EXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07835",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_BLEND_CONSTANTS</code> dynamic state enabled then <a href=\"#vkCmdSetBlendConstants\">vkCmdSetBlendConstants</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08621",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> in the current command buffer set any element of <code>pColorBlendEnables</code> to <code>VK_TRUE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> in the current command buffer set the same element of <code>pColorBlendEquations</code> to a <code>VkColorBlendEquationEXT</code> structure with any <a href=\"#VkBlendFactor\">VkBlendFactor</a> member with a value of <code>VK_BLEND_FACTOR_CONSTANT_COLOR</code>, <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR</code>, <code>VK_BLEND_FACTOR_CONSTANT_ALPHA</code>, or <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA</code>, <a href=\"#vkCmdSetBlendConstants\">vkCmdSetBlendConstants</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07836",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthBoundsTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthBounds\">vkCmdSetDepthBounds</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07837",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilCompareMask\">vkCmdSetStencilCompareMask</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07838",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilWriteMask\">vkCmdSetStencilWriteMask</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07839",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_REFERENCE</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of and <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilReference\">vkCmdSetStencilReference</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-maxMultiviewInstanceIndex-02688",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-02689",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-06666",
          "text": "If the <code><a href=\"#VK_EXT_sample_locations\">VK_EXT_sample_locations</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07840",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_CULL_MODE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCullMode\">vkCmdSetCullMode</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07841",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_FRONT_FACE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetFrontFace\">vkCmdSetFrontFace</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07843",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, <a href=\"#vkCmdSetDepthTestEnable\">vkCmdSetDepthTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07844",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthWriteEnable\">vkCmdSetDepthWriteEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07845",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_COMPARE_OP</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthCompareOp\">vkCmdSetDepthCompareOp</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07846",
          "text": "If the <a href=\"#features-depthBounds\"><code>depthBounds</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthBoundsTestEnable\">vkCmdSetDepthBoundsTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07847",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetStencilTestEnable\">vkCmdSetStencilTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07848",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_OP</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilOp\">vkCmdSetStencilOp</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-viewportCount-03417",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-scissorCount-03418",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, then <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-viewportCount-03419",
          "text": "If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> and <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08635",
          "text": "If a shader object is bound to any graphics stage, then both <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> and <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-viewportCount-04137",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-viewportCount-04138",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08636",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-viewportCount-04139",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-shadingRateImage-09233",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV</code> and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-shadingRateImage-09234",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08637",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-VkPipelineVieportCreateInfo-04141",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled and a <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> structure chained from <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-VkPipelineVieportCreateInfo-04142",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled and a <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> structure chained from <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07878",
          "text": "If the <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetExclusiveScissorEnableNV\">vkCmdSetExclusiveScissorEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07879",
          "text": "If the <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV</code> dynamic state enabled, and the most recent call to <a href=\"#vkCmdSetExclusiveScissorEnableNV\">vkCmdSetExclusiveScissorEnableNV</a> in the current command buffer set any element of <code>pExclusiveScissorEnables</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetExclusiveScissorNV\">vkCmdSetExclusiveScissorNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-04876",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-04877",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthBiasEnable\">vkCmdSetDepthBiasEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-logicOp-04878",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_LOGIC_OP_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>logicOpEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetLogicOpEXT\">vkCmdSetLogicOpEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-primitiveFragmentShadingRateWithMultipleViewports-04552",
          "text": "If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-primitiveFragmentShadingRateWithMultipleViewports-08642",
          "text": "If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, and any shader object bound to a graphics stage writes to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-blendEnable-04727",
          "text": "If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the <code>blendEnable</code> member of the corresponding element of the <code>pAttachments</code> member of <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08643",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then for each color attachment in the render pass, if the corresponding image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the corresponding member of <code>pColorBlendEnables</code> in the most recent call to <code>vkCmdSetColorBlendEnableEXT</code> in the current command buffer that affected that attachment index <strong class=\"purple\">must</strong> have been <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-multisampledRenderToSingleSampled-07284",
          "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then <code>rasterizationSamples</code> for the currently bound graphics pipeline\n<strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil\nattachments</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08644",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the\ncurrent command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the\nsame as the number of samples for the current render pass color and/or\ndepth/stencil attachments</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08876",
          "text": "If a shader object is bound to any graphics stage, the current render pass instance <strong class=\"purple\">must</strong> have been begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-imageView-06172",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-imageView-06173",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-imageView-06174",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-imageView-06175",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-imageView-06176",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-imageView-06177",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-viewMask-06178",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>viewMask</code> equal to <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>viewMask</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-colorAttachmentCount-06179",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>colorAttachmentCount</code> equal to <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08910",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08912",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08911",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-colorAttachmentCount-09362",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, there is no shader object bound to any graphics stage, and a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>resolveImageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with an image created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value equal to the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-09363",
          "text": "If there is no shader object bound to any graphics stage, the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, and a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with an image created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value equal to the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-09364",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have set the blend enable to <code>VK_FALSE</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-09365",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to <code>VK_SAMPLE_COUNT_1_BIT</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-09366",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have set blend enable to <code>VK_FALSE</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-rasterizationSamples-09367",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to <code>VK_SAMPLE_COUNT_1_BIT</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-09368",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;width</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-09369",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;height</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-pFragmentSize-09370",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;width</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-pFragmentSize-09371",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;height</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07749",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteEnableEXT\">vkCmdSetColorWriteEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08646",
          "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is enabled on the device, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorWriteEnableEXT\">vkCmdSetColorWriteEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-attachmentCount-07750",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code> dynamic state enabled then the <code>attachmentCount</code> parameter of <code>vkCmdSetColorWriteEnableEXT</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>VkPipelineColorBlendStateCreateInfo</code>::<code>attachmentCount</code> of the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08647",
          "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is enabled on the device, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then the <code>attachmentCount</code> parameter of most recent call to <code>vkCmdSetColorWriteEnableEXT</code> in the current command buffer <strong class=\"purple\">must</strong> be greater than or equal to the number of color attachments in the current render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07751",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleEXT\">vkCmdSetDiscardRectangleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command for each discard rectangle in <a href=\"#VkPipelineDiscardRectangleStateCreateInfoEXT\">VkPipelineDiscardRectangleStateCreateInfoEXT</a>::<code>discardRectangleCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07880",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-rasterizerDiscardEnable-09236",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> in the current command buffer set <code>discardRectangleEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDiscardRectangleEXT\">vkCmdSetDiscardRectangleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08648",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07881",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleModeEXT\">vkCmdSetDiscardRectangleModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08649",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> in the current command buffer set <code>discardRectangleEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDiscardRectangleModeEXT\">vkCmdSetDiscardRectangleModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08913",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08914",
          "text": "If current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08915",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline was not equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>, the value of the format <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08916",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08917",
          "text": "If current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-dynamicRenderingUnusedAttachments-08918",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline was not equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>, the value of the format <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-imageView-06183",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a>::<code>imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-imageView-06184",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingFragmentDensityMapAttachmentInfoEXT\">VkRenderingFragmentDensityMapAttachmentInfoEXT</a>::<code>imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-colorAttachmentCount-06185",
          "text": "If the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the corresponding element of the <code>pColorAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-pDepthAttachment-06186",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-pStencilAttachment-06187",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-multisampledRenderToSingleSampled-07285",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     the current render pass instance was begun with     <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than     <code>0</code>, then each element of the     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a     <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been     created with a sample count equal to the value of     <code>rasterizationSamples</code> for the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-multisampledRenderToSingleSampled-07286",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not     <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the     currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count     used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-multisampledRenderToSingleSampled-07287",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not     <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the     currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count     used to create     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-pNext-07935",
          "text": "If this command has been called inside a render pass instance started with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and the <code>pNext</code> chain of <a href=\"#VkRenderingInfo\">VkRenderingInfo</a> includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a>::<code>rasterizationSamples</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-renderPass-06198",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>renderPass</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-pColorAttachments-08963",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound with a fragment shader that statically writes to a color attachment, the color write mask is not zero, color writes are enabled, and the corresponding element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-pDepthAttachment-08964",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound, depth test is enabled, depth write is enabled, and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-pStencilAttachment-08965",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound, stencil test is enabled and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-primitivesGeneratedQueryWithRasterizerDiscard-06708",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithRasterizerDiscard\"><code>primitivesGeneratedQueryWithRasterizerDiscard</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, <a href=\"#primsrast-discard\">rasterization discard</a> <strong class=\"purple\">must</strong> not be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-primitivesGeneratedQueryWithNonZeroStreams-06709",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, the bound graphics pipeline <strong class=\"purple\">must</strong> not have been created with a non-zero value in <code>VkPipelineRasterizationStateStreamCreateInfoEXT</code>::<code>rasterizationStream</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07619",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetTessellationDomainOriginEXT\">vkCmdSetTessellationDomainOriginEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07620",
          "text": "If the <a href=\"#features-depthClamp\"><code>depthClamp</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthClampEnableEXT\">vkCmdSetDepthClampEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07621",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_POLYGON_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07622",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07623",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-alphaToCoverageEnable-08919",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic state enabled, and <code>alphaToCoverageEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-alphaToCoverageEnable-08920",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a> in the current command buffer set <code>alphaToCoverageEnable</code> to <code>VK_TRUE</code>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07624",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07625",
          "text": "If the <a href=\"#features-alphaToOne\"><code>alphaToOne</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAlphaToOneEnableEXT\">vkCmdSetAlphaToOneEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07626",
          "text": "If the <a href=\"#features-logicOp\"><code>logicOp</code></a> feature is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLogicOpEnableEXT\">vkCmdSetLogicOpEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07627",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08657",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07628",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08658",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> for any attachment set that attachment&#8217;s value in <code>pColorBlendEnables</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07629",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08659",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07630",
          "text": "If the <a href=\"#features-geometryStreams\"><code>geometryStreams</code></a> feature is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizationStreamEXT\">vkCmdSetRasterizationStreamEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07631",
          "text": "If the <code><a href=\"#VK_EXT_conservative_rasterization\">VK_EXT_conservative_rasterization</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetConservativeRasterizationModeEXT\">vkCmdSetConservativeRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07632",
          "text": "If the <code><a href=\"#VK_EXT_conservative_rasterization\">VK_EXT_conservative_rasterization</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>conservativeRasterizationMode</code> is <code>VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT</code>, then <a href=\"#vkCmdSetExtraPrimitiveOverestimationSizeEXT\">vkCmdSetExtraPrimitiveOverestimationSizeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07633",
          "text": "If the <a href=\"#features-depthClipEnable\"><code>depthClipEnable</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT</code> dynamic state, then <a href=\"#vkCmdSetDepthClipEnableEXT\">vkCmdSetDepthClipEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07634",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08664",
          "text": "If the <code><a href=\"#VK_EXT_sample_locations\">VK_EXT_sample_locations</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07635",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-rasterizerDiscardEnable-09416",
          "text": "If the <code><a href=\"#VK_EXT_blend_operation_advanced\">VK_EXT_blend_operation_advanced</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then at least one of <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> and <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07636",
          "text": "If the <code><a href=\"#VK_EXT_provoking_vertex\">VK_EXT_provoking_vertex</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetProvokingVertexModeEXT\">vkCmdSetProvokingVertexModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07637",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08666",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08667",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08668",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07638",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08669",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08670",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08671",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07849",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_KHR</code>     dynamic state enabled then <a href=\"#vkCmdSetLineStippleKHR\">vkCmdSetLineStippleKHR</a>     <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing     command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08672",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> in the current command buffer set <code>stippledLineEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetLineStippleEXT\">vkCmdSetLineStippleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07639",
          "text": "If the <a href=\"#features-depthClipControl\"><code>depthClipControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetDepthClipNegativeOneToOneEXT\">vkCmdSetDepthClipNegativeOneToOneEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-09650",
          "text": "If the <a href=\"#features-depthClampControl\"><code>depthClampControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthClampEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthClampRangeEXT\">vkCmdSetDepthClampRangeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07640",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07641",
          "text": "If the <code><a href=\"#VK_NV_viewport_swizzle\">VK_NV_viewport_swizzle</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07642",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07643",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageToColorEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07644",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageModulationModeNV\">vkCmdSetCoverageModulationModeNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07645",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageModulationMode</code> is any value other than <code>VK_COVERAGE_MODULATION_MODE_NONE_NV</code>, then <a href=\"#vkCmdSetCoverageModulationTableEnableNV\">vkCmdSetCoverageModulationTableEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07646",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageModulationTableEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetCoverageModulationTableNV\">vkCmdSetCoverageModulationTableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07647",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-pipelineFragmentShadingRate-09238",
          "text": "If the <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a> feature is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07648",
          "text": "If the <a href=\"#features-representativeFragmentTest\"><code>representativeFragmentTest</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetRepresentativeFragmentTestEnableNV\">vkCmdSetRepresentativeFragmentTestEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07649",
          "text": "If the <a href=\"#features-coverageReductionMode\"><code>coverageReductionMode</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageReductionModeNV\">vkCmdSetCoverageReductionModeNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-pColorBlendEnables-07470",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> state enabled and the last call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> set <code>pColorBlendEnables</code> for any attachment to <code>VK_TRUE</code>, then for those attachments in the subpass the corresponding 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_BLEND_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-rasterizationSamples-07471",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> follow the rules for a <a href=\"#renderpass-noattachments\">zero-attachment subpass</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-samples-07472",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, then the <code>samples</code> parameter in the last call to <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> be greater or equal to the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a>::<code>rasterizationSamples</code> parameter used to create the bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-samples-07473",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> state and <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> states enabled, then the <code>samples</code> parameter in the last call to <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> be greater or equal to the <code>rasterizationSamples</code> parameter in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-rasterizationSamples-07474",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and neither the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> nor the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extensions are enabled, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil attachments",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-09211",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, or a shader object is bound to any graphics stage, and the current render pass instance includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> be the same as the <code>rasterizationSamples</code> member of that structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-firstAttachment-07476",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEnableEXT</code> calls <strong class=\"purple\">must</strong> specify an enable for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-rasterizerDiscardEnable-09417",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEnableEXT</code> calls <strong class=\"purple\">must</strong> specify an enable for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-firstAttachment-07477",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEquationEXT</code> calls <strong class=\"purple\">must</strong> specify the blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-rasterizerDiscardEnable-09418",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEquationEXT</code> calls <strong class=\"purple\">must</strong> specify the blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-firstAttachment-07478",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorWriteMaskEXT</code> calls <strong class=\"purple\">must</strong> specify the color write mask for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-rasterizerDiscardEnable-09419",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorWriteMaskEXT</code> calls <strong class=\"purple\">must</strong> specify the color write mask for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-firstAttachment-07479",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendAdvancedEXT</code> calls <strong class=\"purple\">must</strong> specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-advancedBlendMaxColorAttachments-07480",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> and <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic states enabled and the last calls to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> and <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> have enabled advanced blending, then the number of active color attachments in the current subpass <strong class=\"purple\">must</strong> not exceed <a href=\"#limits-advancedBlendMaxColorAttachments\"><code>advancedBlendMaxColorAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-primitivesGeneratedQueryWithNonZeroStreams-07481",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, and the bound graphics pipeline was created with <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code> state enabled, the last call to <a href=\"#vkCmdSetRasterizationStreamEXT\">vkCmdSetRasterizationStreamEXT</a> <strong class=\"purple\">must</strong> have set the <code>rasterizationStream</code> to zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsPerPixel-07482",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsPerPixel-07483",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-07484",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-07485",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, then the <code>sampleLocationsInfo.sampleLocationGridSize.width</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-07486",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, then the <code>sampleLocationsInfo.sampleLocationGridSize.height</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-07487",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, the fragment shader code <strong class=\"purple\">must</strong> not statically use the extended instruction <code>InterpolateAtSample</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-07936",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <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 the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-07937",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <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 the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-07938",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-coverageModulationTableEnable-07488",
          "text": "If a shader object is bound to any graphics stage or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code> state enabled, and the last call to <a href=\"#vkCmdSetCoverageModulationTableEnableNV\">vkCmdSetCoverageModulationTableEnableNV</a> set <code>coverageModulationTableEnable</code> to <code>VK_TRUE</code>, then the <code>coverageModulationTableCount</code> parameter in the last call to <a href=\"#vkCmdSetCoverageModulationTableNV\">vkCmdSetCoverageModulationTableNV</a> <strong class=\"purple\">must</strong> equal the current <code>rasterizationSamples</code> divided by the number of color samples in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-rasterizationSamples-07489",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current <code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be the same as the sample count of the depth/stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-coverageToColorEnable-07490",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> state enabled and the last call to <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> set the <code>coverageToColorEnable</code> to <code>VK_TRUE</code>, then the current subpass <strong class=\"purple\">must</strong> have a color attachment at the location selected by the last call to <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-rasterizerDiscardEnable-09420",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the last call to <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> set the <code>coverageToColorEnable</code> to <code>VK_TRUE</code>, then the current subpass <strong class=\"purple\">must</strong> have a color attachment at the location selected by the last call to <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-coverageReductionMode-07491",
          "text": "If this <code><a href=\"#VK_NV_coverage_reduction_mode\">VK_NV_coverage_reduction_mode</a></code> extension is enabled, the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> and <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> states enabled, the current coverage reduction mode <code>coverageReductionMode</code>, then the current <code>rasterizationSamples</code>, and the sample counts for the color and depth/stencil attachments (if the subpass has them) <strong class=\"purple\">must</strong> be a valid combination returned by <a href=\"#vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV\">vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-viewportCount-07492",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-viewportCount-07493",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-viewportCount-09421",
          "text": "If the <code><a href=\"#VK_NV_viewport_swizzle\">VK_NV_viewport_swizzle</a></code> extension is enabled, and a shader object is bound to any graphics stage, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-rasterizationSamples-07494",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, and if the current subpass has any color attachments and <code>rasterizationSamples</code> of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> is greater than the number of color samples, then the pipeline <code>sampleShadingEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-stippledLineEnable-07495",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-stippledLineEnable-07496",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR</code>, then the <a href=\"#features-stippledBresenhamLines\"><code>stippledBresenhamLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-stippledLineEnable-07497",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR</code>, then the <a href=\"#features-stippledSmoothLines\"><code>stippledSmoothLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-stippledLineEnable-07498",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_DEFAULT_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled and <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>strictLines</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-conservativePointAndLineRasterization-07499",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code> dynamic state enabled, <a href=\"#limits-conservativePointAndLineRasterization\"><code>conservativePointAndLineRasterization</code></a> is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the <code>conservativeRasterizationMode</code> set by the last call to <a href=\"#vkCmdSetConservativeRasterizationModeEXT\">vkCmdSetConservativeRasterizationModeEXT</a> <strong class=\"purple\">must</strong> be <code>VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-stage-07073",
          "text": "If the currently bound pipeline was created with the <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a>::<code>stage</code> member of an element of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> set to <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>, then <a href=\"#queries-mesh-shader\">Mesh Shader Queries</a> <strong class=\"purple\">must</strong> not be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08877",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07850",
          "text": "If dynamic state was inherited from <a href=\"#VkCommandBufferInheritanceViewportScissorInfoNV\">VkCommandBufferInheritanceViewportScissorInfoNV</a>, it <strong class=\"purple\">must</strong> be set in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08684",
          "text": "If there is no bound graphics pipeline, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_VERTEX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08685",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08686",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08687",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08688",
          "text": "If there is no bound graphics pipeline, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08689",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TASK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08690",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08693",
          "text": "If there is no bound graphics pipeline, and at least one of the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features is enabled, one of the <code>VK_SHADER_STAGE_VERTEX_BIT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stages <strong class=\"purple\">must</strong> have a valid <code>VkShaderEXT</code> bound, and the other <strong class=\"purple\">must</strong> have no <code>VkShaderEXT</code> bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08694",
          "text": "If there is no bound graphics pipeline, and both the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features are enabled, and a valid <code>VkShaderEXT</code> is bound the to the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage, and that <code>VkShaderEXT</code> was created without the <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> flag, a valid <code>VkShaderEXT</code> <strong class=\"purple\">must</strong> be bound to the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08695",
          "text": "If there is no bound graphics pipeline, and both the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features are enabled, and a valid <code>VkShaderEXT</code> is bound the to the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage, and that <code>VkShaderEXT</code> was created with the <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> flag, there <strong class=\"purple\">must</strong> be no <code>VkShaderEXT</code> bound to the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08696",
          "text": "If there is no bound graphics pipeline, and a valid <code>VkShaderEXT</code> is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, there <strong class=\"purple\">must</strong> be no <code>VkShaderEXT</code> bound to either the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage or the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08698",
          "text": "If any graphics shader is bound which was created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag, then all shaders created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag in the same <a href=\"#vkCreateShadersEXT\">vkCreateShadersEXT</a> call <strong class=\"purple\">must</strong> also be bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08699",
          "text": "If any graphics shader is bound which was created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag, any stages in between stages whose shaders which did not create a shader with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag as part of the same <a href=\"#vkCreateShadersEXT\">vkCreateShadersEXT</a> call <strong class=\"purple\">must</strong> not have any <code>VkShaderEXT</code> bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08878",
          "text": "All bound graphics shader objects <strong class=\"purple\">must</strong> have been created with identical or identically defined push constant ranges",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08879",
          "text": "All bound graphics shader objects <strong class=\"purple\">must</strong> have been created with identical or identically defined arrays of descriptor set layouts",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-colorAttachmentCount-09372",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, and a fragment shader is bound, it <strong class=\"purple\">must</strong> not declare the <code>DepthReplacing</code> or <code>StencilRefReplacingEXT</code> execution modes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-pDynamicStates-08715",
          "text": "If the bound graphics pipeline state includes a fragment shader stage, was created with <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpDepthAttachmentReadEXT</code>, the <code>depthWriteEnable</code> parameter in the last call to <a href=\"#vkCmdSetDepthWriteEnable\">vkCmdSetDepthWriteEnable</a> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-pDynamicStates-08716",
          "text": "If the bound graphics pipeline state includes a fragment shader stage, was created with <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpStencilAttachmentReadEXT</code>, the <code>writeMask</code> parameter in the last call to <a href=\"#vkCmdSetStencilWriteMask\">vkCmdSetStencilWriteMask</a> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-09116",
          "text": "If     a shader object is bound to any graphics stage or     the currently bound graphics pipeline was created with     <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code>,     and the format of any color attachment is     <code>VK_FORMAT_E5B9G9R9_UFLOAT_PACK32</code>, the corresponding element of the     <code>pColorWriteMasks</code> parameter of <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a>     <strong class=\"purple\">must</strong> either include all of <code>VK_COLOR_COMPONENT_R_BIT</code>,     <code>VK_COLOR_COMPONENT_G_BIT</code>, and <code>VK_COLOR_COMPONENT_B_BIT</code>, or     none of them",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-maxFragmentDualSrcAttachments-09239",
          "text": "If <a href=\"#framebuffer-blending\">blending</a> is enabled for any attachment where either the source or destination blend factors for that attachment <a href=\"#framebuffer-dsb\">use the secondary color input</a>, the maximum value of <code>Location</code> for any output attachment <a href=\"#shaders-staticuse\">statically used</a> in the <code>Fragment</code> <code>Execution</code> <code>Model</code> executed by this command <strong class=\"purple\">must</strong> be less than <a href=\"#limits-maxFragmentDualSrcAttachments\"><code>maxFragmentDualSrcAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-09548",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and there is no shader object bound to any graphics stage, the value of each element of <a href=\"#VkRenderingAttachmentLocationInfoKHR\">VkRenderingAttachmentLocationInfoKHR</a>::<code>pColorAttachmentLocations</code> set by <a href=\"#vkCmdSetRenderingAttachmentLocationsKHR\">vkCmdSetRenderingAttachmentLocationsKHR</a> <strong class=\"purple\">must</strong> match the value set for the corresponding element in the currently bound pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-09549",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and there is no shader object bound to any graphics stage, input attachment index mappings in the currently bound pipeline <strong class=\"purple\">must</strong> match those set for the current render pass instance via <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-09642",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with the <code>VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT</code> flag, the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-09643",
          "text": "If the bound graphics pipeline was created with <code>VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT</code>, the current render pass <strong class=\"purple\">must</strong> have begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with the <code>VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT</code> flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-04007",
          "text": "All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> buffers bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-04008",
          "text": "If the <a href=\"#features-nullDescriptor\"><code>nullDescriptor</code></a> feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02721",
          "text": "If <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> is not enabled, and that pipeline was created without enabling <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> for <code>vertexInputs</code>, then 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07842",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY</code> dynamic state enabled     then <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> <strong class=\"purple\">must</strong> have been called and not     subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current     command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-dynamicPrimitiveTopologyUnrestricted-07500",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY</code> dynamic state enabled and the <a href=\"#limits-dynamicPrimitiveTopologyUnrestricted\"><code>dynamicPrimitiveTopologyUnrestricted</code></a> is <code>VK_FALSE</code>, then the <code>primitiveTopology</code> parameter of <code>vkCmdSetPrimitiveTopology</code> <strong class=\"purple\">must</strong> be of the same <a href=\"#drawing-primitive-topology-class\">topology class</a> as the pipeline <a href=\"#VkPipelineInputAssemblyStateCreateInfo\">VkPipelineInputAssemblyStateCreateInfo</a>::<code>topology</code> state",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-pStrides-04913",
          "text": "If the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE</code> dynamic state enabled, but without the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdBindVertexBuffers2\">vkCmdBindVertexBuffers2</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this draw command, and the <code>pStrides</code> parameter of <a href=\"#vkCmdBindVertexBuffers2\">vkCmdBindVertexBuffers2</a> <strong class=\"purple\">must</strong> not be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-04914",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     then <a href=\"#vkCmdSetVertexInputEXT\">vkCmdSetVertexInputEXT</a> <strong class=\"purple\">must</strong> have been called and not     subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current     command buffer prior to this draw command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-Input-07939",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     then all variables with the <code>Input</code> storage class decorated with     <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code>     <strong class=\"purple\">must</strong> contain a location in     <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>location</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-Input-08734",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     and either <a href=\"#features-legacyVertexAttributes\"><code>legacyVertexAttributes</code></a> is not enabled or the SPIR-V Type     associated with a given <code>Input</code> variable of the corresponding     <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code> is     64-bit,     then the numeric type associated with all <code>Input</code> variables of the     corresponding <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code>     <code>OpEntryPoint</code> <strong class=\"purple\">must</strong> be the same as     <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>format</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-format-08936",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     and <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>format</code> has a     64-bit component, then the scalar width associated with all <code>Input</code>     variables of the corresponding <code>Location</code> in the <code>Vertex</code>     <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code> <strong class=\"purple\">must</strong> be 64-bit",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-format-08937",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     and the scalar width associated with a <code>Location</code> decorated     <code>Input</code> variable in the <code>Vertex</code> <code>Execution</code> <code>Model</code>     <code>OpEntryPoint</code> is 64-bit, then the corresponding     <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>format</code> <strong class=\"purple\">must</strong> have a     64-bit component",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-09203",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     and <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>format</code> has a     64-bit component, then all <code>Input</code> variables at the corresponding     <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code>     <strong class=\"purple\">must</strong> not use components that are not present in the format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-04875",
          "text": "If     there is a shader object bound to the     <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT</code> dynamic state enabled,     and the <a href=\"#dynamic-state-current-value\">current value</a> of     <code>primitiveTopology</code> is <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, then     <a href=\"#vkCmdSetPatchControlPointsEXT\">vkCmdSetPatchControlPointsEXT</a> <strong class=\"purple\">must</strong> have been called and not     subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current     command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-04879",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE</code> dynamic state enabled     then <a href=\"#vkCmdSetPrimitiveRestartEnable\">vkCmdSetPrimitiveRestartEnable</a> <strong class=\"purple\">must</strong> have been called and not     subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current     command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-09637",
          "text": "If     the <a href=\"#features-primitiveTopologyListRestart\"><code>primitiveTopologyListRestart</code></a> feature is not enabled,     the topology 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>, or     <code>VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY</code>,     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE</code> dynamic state enabled     then <a href=\"#vkCmdSetPrimitiveRestartEnable\">vkCmdSetPrimitiveRestartEnable</a> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-stage-06481",
          "text": "The bound graphics pipeline <strong class=\"purple\">must</strong> not have been created with the <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a>::<code>stage</code> member of an element of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> set to <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08885",
          "text": "There <strong class=\"purple\">must</strong> be no shader object bound to either of the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-buffer-02708",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-buffer-02709",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-offset-02710",
          "text": "<code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-02711",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-countBuffer-02714",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-countBuffer-02715",
          "text": "<code>countBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-countBufferOffset-02716",
          "text": "<code>countBufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-countBuffer-02717",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-countBufferOffset-04129",
          "text": "<span class=\"eq\">(<code>countBufferOffset</code> +  <code>sizeof</code>(uint32_t))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>countBuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-04445",
          "text": "If <a href=\"#features-drawIndirectCount\"><code>drawIndirectCount</code></a> is not enabled this function <strong class=\"purple\">must</strong> not be used",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07312",
          "text": "If <a href=\"#features-maintenance6\"><code>maintenance6</code></a> is not enabled, a valid index buffer <strong class=\"purple\">must</strong> be bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-stride-03142",
          "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>)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-maxDrawCount-03143",
          "text": "If <code>maxDrawCount</code> is greater than or equal to <code>1</code>, <span class=\"eq\">(<code>stride</code> × (<code>maxDrawCount</code> - 1) +  <code>offset</code> +  sizeof(<code>VkDrawIndexedIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-countBuffer-03153",
          "text": "If count stored in <code>countBuffer</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> +  sizeof(<code>VkDrawIndexedIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-countBuffer-03154",
          "text": "If count stored in <code>countBuffer</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> × (<code>drawCount</code> - 1) +  <code>offset</code> +  sizeof(<code>VkDrawIndexedIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-buffer-parameter",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-countBuffer-parameter",
          "text": "<code>countBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-commonparent",
          "text": "Each of <code>buffer</code>, <code>commandBuffer</code>, and <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdDrawIndirectByteCountEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-magFilter-04553",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-magFilter-09598",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-mipmapMode-04770",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-mipmapMode-09599",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-unnormalizedCoordinates-09635",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>levelCount</code> and <code>layerCount</code> <strong class=\"purple\">must</strong> be 1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-unnormalizedCoordinates-09636",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_VIEW_TYPE_1D</code> or <code>VK_IMAGE_VIEW_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-06479",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is sampled with <a href=\"#textures-depth-compare-operation\">depth comparison</a>, 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_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02691",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed using atomic operations as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07888",
          "text": "If a <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> descriptor is accessed using atomic operations as a result of this command, then the storage texel buffer&#8217;s <a href=\"#resources-buffer-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02692",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02693",
          "text": "If the <a href=\"#VK_EXT_filter_cubic\">VK_EXT_filter_cubic</a> extension is not enabled and any <a href=\"#VkImageView\">VkImageView</a> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, it <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-filterCubic-02694",
          "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 <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubic</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-filterCubicMinmax-02695",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubicMinmax</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-cubicRangeClamp-09212",
          "text": "If the <a href=\"#features-filter-cubic-range-clamp\"><code>cubicRangeClamp</code></a> feature is not enabled, then 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=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-reductionMode-09213",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with a <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code> as a result of this command <strong class=\"purple\">must</strong> sample with <code>VK_FILTER_CUBIC_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-selectableCubicWeights-09214",
          "text": "If the <a href=\"#features-filter-cubic-weight-selection\"><code>selectableCubicWeights</code></a> feature is not enabled, then 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 href=\"#VkSamplerCubicWeightsCreateInfoQCOM\">VkSamplerCubicWeightsCreateInfoQCOM</a>::<code>cubicWeights</code> equal to <code>VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-flags-02696",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpTypeImage-07027",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being written as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpTypeImage-07028",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being read as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpTypeImage-07029",
          "text": "For any <a href=\"#VkBufferView\">VkBufferView</a> being written as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpTypeImage-07030",
          "text": "Any <a href=\"#VkBufferView\">VkBufferView</a> being read as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code> then the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08600",
          "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08601",
          "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-10068",
          "text": "For each array of resources that is used by <a href=\"#shaders-binding\">a bound shader</a>, the indices used to access members of the array <strong class=\"purple\">must</strong> be less than the descriptor count for the identified binding in the descriptor sets used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-maintenance4-08602",
          "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08114",
          "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08115",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created without <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08116",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08604",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08117",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08119",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkPipeline\">VkPipeline</a> created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08605",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkShaderEXT\">VkShaderEXT</a> created with a <code>VkDescriptorSetLayout</code> that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08606",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is not enabled, a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08608",
          "text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state specified statically in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08609",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <a href=\"#VkImage\">VkImage</a> with a <a href=\"#VkImageView\">VkImageView</a> 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08610",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08611",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08607",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-uniformBuffers-06935",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08612",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-storageBuffers-06936",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>storageBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08613",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02707",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, any resource accessed by <a href=\"#shaders-binding\">bound shaders</a> <strong class=\"purple\">must</strong> not be a protected resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-06550",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> only be used with <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-ConstOffset-06551",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> not use the <code>ConstOffset</code> and <code>Offset</code> operands",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-viewType-07752",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> match the <code>Dim</code> operand of the <code>OpTypeImage</code> as described in <a href=\"#spirvenv-image-dimensions\">Compatibility Between SPIR-V Image Dimensions and Vulkan ImageView Types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-format-07753",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the <a href=\"#formats-numericformat\">numeric type</a> of the image view&#8217;s <code>format</code> and the <code>Sampled</code> <code>Type</code> operand of the <code>OpTypeImage</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpImageWrite-08795",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with a format other than <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpImageWrite-08796",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with the format <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have four components",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpImageWrite-04469",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the buffer view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-SampledType-04470",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-SampledType-04471",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-SampledType-04472",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-SampledType-04473",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sparseImageInt64Atomics-04474",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sparseImageInt64Atomics-04475",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpImageWeightedSampleQCOM-06971",
          "text": "If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpImageWeightedSampleQCOM-06972",
          "text": "If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image 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_2_WEIGHT_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpImageBoxFilterQCOM-06973",
          "text": "If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpImageBlockMatchSSDQCOM-06974",
          "text": "If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpImageBlockMatchSADQCOM-06975",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpImageBlockMatchSADQCOM-06976",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpImageWeightedSampleQCOM-06977",
          "text": "If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpImageWeightedSampleQCOM-06978",
          "text": "If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpImageBlockMatchWindow-09215",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpImageBlockMatchWindow-09216",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s format <strong class=\"purple\">must</strong> be a single-component format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpImageBlockMatchWindow-09217",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07288",
          "text": "Any shader invocation executed by this command <strong class=\"purple\">must</strong> <a href=\"#shaders-termination\">terminate</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-09600",
          "text": "If a descriptor with type equal to any of <code>VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> is accessed as a result of this command, the image subresource identified by that descriptor <strong class=\"purple\">must</strong> be in the image layout identified when the descriptor was written",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-renderPass-02684",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-subpass-02685",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07748",
          "text": "If any shader statically accesses an input attachment, a valid descriptor <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpTypeImage-07468",
          "text": "If any shader executed by this pipeline accesses an <code>OpTypeImage</code> variable with a <code>Dim</code> operand of <code>SubpassData</code>, it <strong class=\"purple\">must</strong> be decorated with an <code>InputAttachmentIndex</code> that corresponds to a valid input attachment in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07469",
          "text": "Input attachment views accessed in a subpass <strong class=\"purple\">must</strong> be created with the same <a href=\"#VkFormat\">VkFormat</a> as the corresponding subpass definition, and be created with a <a href=\"#VkImageView\">VkImageView</a> that is compatible with the attachment referenced by the subpass' <code>pInputAttachments</code>[<code>InputAttachmentIndex</code>] in the currently bound <a href=\"#VkFramebuffer\">VkFramebuffer</a> as specified by <a href=\"#compatibility-inputattachment\">Fragment Input Attachment Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-pDepthInputAttachmentIndex-09595",
          "text": "Input attachment views accessed in a dynamic render pass with a <code>InputAttachmentIndex</code> referenced by <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>, or no <code>InputAttachmentIndex</code> if <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pDepthInputAttachmentIndex</code> or <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pStencilInputAttachmentIndex</code> are <code>NULL</code>, <strong class=\"purple\">must</strong> be created with a <a href=\"#VkImageView\">VkImageView</a> that is compatible with the corresponding color, depth, or stencil attachment in <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-pDepthInputAttachmentIndex-09596",
          "text": "Input attachment views accessed in a dynamic render pass via a shader object <strong class=\"purple\">must</strong> have an <code>InputAttachmentIndex</code> if both <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pDepthInputAttachmentIndex</code> and <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pStencilInputAttachmentIndex</code> are non-<code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-InputAttachmentIndex-09597",
          "text": "If an input attachment view accessed in a dynamic render pass via a shader object has an <code>InputAttachmentIndex</code>, the <code>InputAttachmentIndex</code> <strong class=\"purple\">must</strong> match an index in <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-06537",
          "text": "Memory backing image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be written in any way other than as an attachment by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-09000",
          "text": "If a color attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe <code>VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code> is\nset on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_COLOR_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-09001",
          "text": "If a depth attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe\n<code>VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code>\nis set on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_DEPTH_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-09002",
          "text": "If a stencil attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe\n<code>VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code>\nis set on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_STENCIL_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-09003",
          "text": "If an attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment, storage image, or sampled image by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-06539",
          "text": "If any previously recorded command in the current subpass accessed an image subresource used as an attachment in this subpass in any way other than as an attachment, this command <strong class=\"purple\">must</strong> not write to that image subresource as an attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-06886",
          "text": "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, <a href=\"#fragops-depth-write\">depth writes</a> <strong class=\"purple\">must</strong> be disabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-06887",
          "text": "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back <code>writeMask</code> are not zero, and stencil test is enabled, <a href=\"#fragops-stencil\">all stencil ops</a> <strong class=\"purple\">must</strong> be <code>VK_STENCIL_OP_KEEP</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07831",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT</code> dynamic state enabled then <a href=\"#vkCmdSetViewport\">vkCmdSetViewport</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07832",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR</code> dynamic state enabled then <a href=\"#vkCmdSetScissor\">vkCmdSetScissor</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07833",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_WIDTH</code> dynamic state enabled then <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08617",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08618",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08619",
          "text": "If a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07834",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthBiasEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthBounds\">vkCmdSetDepthBounds</a> or <a href=\"#vkCmdSetDepthBias2EXT\">vkCmdSetDepthBias2EXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07835",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_BLEND_CONSTANTS</code> dynamic state enabled then <a href=\"#vkCmdSetBlendConstants\">vkCmdSetBlendConstants</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08621",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> in the current command buffer set any element of <code>pColorBlendEnables</code> to <code>VK_TRUE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> in the current command buffer set the same element of <code>pColorBlendEquations</code> to a <code>VkColorBlendEquationEXT</code> structure with any <a href=\"#VkBlendFactor\">VkBlendFactor</a> member with a value of <code>VK_BLEND_FACTOR_CONSTANT_COLOR</code>, <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR</code>, <code>VK_BLEND_FACTOR_CONSTANT_ALPHA</code>, or <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA</code>, <a href=\"#vkCmdSetBlendConstants\">vkCmdSetBlendConstants</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07836",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthBoundsTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthBounds\">vkCmdSetDepthBounds</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07837",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilCompareMask\">vkCmdSetStencilCompareMask</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07838",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilWriteMask\">vkCmdSetStencilWriteMask</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07839",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_REFERENCE</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of and <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilReference\">vkCmdSetStencilReference</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-maxMultiviewInstanceIndex-02688",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-02689",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-06666",
          "text": "If the <code><a href=\"#VK_EXT_sample_locations\">VK_EXT_sample_locations</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07840",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_CULL_MODE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCullMode\">vkCmdSetCullMode</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07841",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_FRONT_FACE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetFrontFace\">vkCmdSetFrontFace</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07843",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, <a href=\"#vkCmdSetDepthTestEnable\">vkCmdSetDepthTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07844",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthWriteEnable\">vkCmdSetDepthWriteEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07845",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_COMPARE_OP</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthCompareOp\">vkCmdSetDepthCompareOp</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07846",
          "text": "If the <a href=\"#features-depthBounds\"><code>depthBounds</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthBoundsTestEnable\">vkCmdSetDepthBoundsTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07847",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetStencilTestEnable\">vkCmdSetStencilTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07848",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_OP</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilOp\">vkCmdSetStencilOp</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-03417",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-scissorCount-03418",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, then <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-03419",
          "text": "If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> and <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08635",
          "text": "If a shader object is bound to any graphics stage, then both <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> and <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-04137",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-04138",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08636",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-04139",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-shadingRateImage-09233",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV</code> and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-shadingRateImage-09234",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08637",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-VkPipelineVieportCreateInfo-04141",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled and a <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> structure chained from <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-VkPipelineVieportCreateInfo-04142",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled and a <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> structure chained from <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07878",
          "text": "If the <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetExclusiveScissorEnableNV\">vkCmdSetExclusiveScissorEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07879",
          "text": "If the <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV</code> dynamic state enabled, and the most recent call to <a href=\"#vkCmdSetExclusiveScissorEnableNV\">vkCmdSetExclusiveScissorEnableNV</a> in the current command buffer set any element of <code>pExclusiveScissorEnables</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetExclusiveScissorNV\">vkCmdSetExclusiveScissorNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-04876",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-04877",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthBiasEnable\">vkCmdSetDepthBiasEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-logicOp-04878",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_LOGIC_OP_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>logicOpEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetLogicOpEXT\">vkCmdSetLogicOpEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-primitiveFragmentShadingRateWithMultipleViewports-04552",
          "text": "If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-primitiveFragmentShadingRateWithMultipleViewports-08642",
          "text": "If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, and any shader object bound to a graphics stage writes to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-blendEnable-04727",
          "text": "If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the <code>blendEnable</code> member of the corresponding element of the <code>pAttachments</code> member of <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08643",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then for each color attachment in the render pass, if the corresponding image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the corresponding member of <code>pColorBlendEnables</code> in the most recent call to <code>vkCmdSetColorBlendEnableEXT</code> in the current command buffer that affected that attachment index <strong class=\"purple\">must</strong> have been <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-multisampledRenderToSingleSampled-07284",
          "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then <code>rasterizationSamples</code> for the currently bound graphics pipeline\n<strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil\nattachments</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08644",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the\ncurrent command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the\nsame as the number of samples for the current render pass color and/or\ndepth/stencil attachments</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08876",
          "text": "If a shader object is bound to any graphics stage, the current render pass instance <strong class=\"purple\">must</strong> have been begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-imageView-06172",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-imageView-06173",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-imageView-06174",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-imageView-06175",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-imageView-06176",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-imageView-06177",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-viewMask-06178",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>viewMask</code> equal to <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>viewMask</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-colorAttachmentCount-06179",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>colorAttachmentCount</code> equal to <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08910",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08912",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08911",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-colorAttachmentCount-09362",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, there is no shader object bound to any graphics stage, and a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>resolveImageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with an image created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value equal to the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-09363",
          "text": "If there is no shader object bound to any graphics stage, the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, and a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with an image created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value equal to the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-09364",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have set the blend enable to <code>VK_FALSE</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-09365",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to <code>VK_SAMPLE_COUNT_1_BIT</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-09366",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have set blend enable to <code>VK_FALSE</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-rasterizationSamples-09367",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to <code>VK_SAMPLE_COUNT_1_BIT</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-09368",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;width</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-09369",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;height</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-pFragmentSize-09370",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;width</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-pFragmentSize-09371",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;height</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07749",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteEnableEXT\">vkCmdSetColorWriteEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08646",
          "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is enabled on the device, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorWriteEnableEXT\">vkCmdSetColorWriteEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-attachmentCount-07750",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code> dynamic state enabled then the <code>attachmentCount</code> parameter of <code>vkCmdSetColorWriteEnableEXT</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>VkPipelineColorBlendStateCreateInfo</code>::<code>attachmentCount</code> of the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08647",
          "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is enabled on the device, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then the <code>attachmentCount</code> parameter of most recent call to <code>vkCmdSetColorWriteEnableEXT</code> in the current command buffer <strong class=\"purple\">must</strong> be greater than or equal to the number of color attachments in the current render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07751",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleEXT\">vkCmdSetDiscardRectangleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command for each discard rectangle in <a href=\"#VkPipelineDiscardRectangleStateCreateInfoEXT\">VkPipelineDiscardRectangleStateCreateInfoEXT</a>::<code>discardRectangleCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07880",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-rasterizerDiscardEnable-09236",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> in the current command buffer set <code>discardRectangleEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDiscardRectangleEXT\">vkCmdSetDiscardRectangleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08648",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07881",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleModeEXT\">vkCmdSetDiscardRectangleModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08649",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> in the current command buffer set <code>discardRectangleEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDiscardRectangleModeEXT\">vkCmdSetDiscardRectangleModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08913",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08914",
          "text": "If current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08915",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline was not equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>, the value of the format <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08916",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08917",
          "text": "If current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-dynamicRenderingUnusedAttachments-08918",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline was not equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>, the value of the format <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-imageView-06183",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a>::<code>imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-imageView-06184",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingFragmentDensityMapAttachmentInfoEXT\">VkRenderingFragmentDensityMapAttachmentInfoEXT</a>::<code>imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-colorAttachmentCount-06185",
          "text": "If the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the corresponding element of the <code>pColorAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-pDepthAttachment-06186",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-pStencilAttachment-06187",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-multisampledRenderToSingleSampled-07285",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     the current render pass instance was begun with     <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than     <code>0</code>, then each element of the     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a     <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been     created with a sample count equal to the value of     <code>rasterizationSamples</code> for the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-multisampledRenderToSingleSampled-07286",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not     <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the     currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count     used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-multisampledRenderToSingleSampled-07287",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not     <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the     currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count     used to create     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-pNext-07935",
          "text": "If this command has been called inside a render pass instance started with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and the <code>pNext</code> chain of <a href=\"#VkRenderingInfo\">VkRenderingInfo</a> includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a>::<code>rasterizationSamples</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-renderPass-06198",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>renderPass</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-pColorAttachments-08963",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound with a fragment shader that statically writes to a color attachment, the color write mask is not zero, color writes are enabled, and the corresponding element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-pDepthAttachment-08964",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound, depth test is enabled, depth write is enabled, and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-pStencilAttachment-08965",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound, stencil test is enabled and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-primitivesGeneratedQueryWithRasterizerDiscard-06708",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithRasterizerDiscard\"><code>primitivesGeneratedQueryWithRasterizerDiscard</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, <a href=\"#primsrast-discard\">rasterization discard</a> <strong class=\"purple\">must</strong> not be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-primitivesGeneratedQueryWithNonZeroStreams-06709",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, the bound graphics pipeline <strong class=\"purple\">must</strong> not have been created with a non-zero value in <code>VkPipelineRasterizationStateStreamCreateInfoEXT</code>::<code>rasterizationStream</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07619",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetTessellationDomainOriginEXT\">vkCmdSetTessellationDomainOriginEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07620",
          "text": "If the <a href=\"#features-depthClamp\"><code>depthClamp</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthClampEnableEXT\">vkCmdSetDepthClampEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07621",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_POLYGON_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07622",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07623",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-alphaToCoverageEnable-08919",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic state enabled, and <code>alphaToCoverageEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-alphaToCoverageEnable-08920",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a> in the current command buffer set <code>alphaToCoverageEnable</code> to <code>VK_TRUE</code>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07624",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07625",
          "text": "If the <a href=\"#features-alphaToOne\"><code>alphaToOne</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAlphaToOneEnableEXT\">vkCmdSetAlphaToOneEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07626",
          "text": "If the <a href=\"#features-logicOp\"><code>logicOp</code></a> feature is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLogicOpEnableEXT\">vkCmdSetLogicOpEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07627",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08657",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07628",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08658",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> for any attachment set that attachment&#8217;s value in <code>pColorBlendEnables</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07629",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08659",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07630",
          "text": "If the <a href=\"#features-geometryStreams\"><code>geometryStreams</code></a> feature is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizationStreamEXT\">vkCmdSetRasterizationStreamEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07631",
          "text": "If the <code><a href=\"#VK_EXT_conservative_rasterization\">VK_EXT_conservative_rasterization</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetConservativeRasterizationModeEXT\">vkCmdSetConservativeRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07632",
          "text": "If the <code><a href=\"#VK_EXT_conservative_rasterization\">VK_EXT_conservative_rasterization</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>conservativeRasterizationMode</code> is <code>VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT</code>, then <a href=\"#vkCmdSetExtraPrimitiveOverestimationSizeEXT\">vkCmdSetExtraPrimitiveOverestimationSizeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07633",
          "text": "If the <a href=\"#features-depthClipEnable\"><code>depthClipEnable</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT</code> dynamic state, then <a href=\"#vkCmdSetDepthClipEnableEXT\">vkCmdSetDepthClipEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07634",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08664",
          "text": "If the <code><a href=\"#VK_EXT_sample_locations\">VK_EXT_sample_locations</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07635",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-rasterizerDiscardEnable-09416",
          "text": "If the <code><a href=\"#VK_EXT_blend_operation_advanced\">VK_EXT_blend_operation_advanced</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then at least one of <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> and <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07636",
          "text": "If the <code><a href=\"#VK_EXT_provoking_vertex\">VK_EXT_provoking_vertex</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetProvokingVertexModeEXT\">vkCmdSetProvokingVertexModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07637",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08666",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08667",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08668",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07638",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08669",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08670",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08671",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07849",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_KHR</code>     dynamic state enabled then <a href=\"#vkCmdSetLineStippleKHR\">vkCmdSetLineStippleKHR</a>     <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing     command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08672",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> in the current command buffer set <code>stippledLineEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetLineStippleEXT\">vkCmdSetLineStippleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07639",
          "text": "If the <a href=\"#features-depthClipControl\"><code>depthClipControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetDepthClipNegativeOneToOneEXT\">vkCmdSetDepthClipNegativeOneToOneEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-09650",
          "text": "If the <a href=\"#features-depthClampControl\"><code>depthClampControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthClampEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthClampRangeEXT\">vkCmdSetDepthClampRangeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07640",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07641",
          "text": "If the <code><a href=\"#VK_NV_viewport_swizzle\">VK_NV_viewport_swizzle</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07642",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07643",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageToColorEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07644",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageModulationModeNV\">vkCmdSetCoverageModulationModeNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07645",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageModulationMode</code> is any value other than <code>VK_COVERAGE_MODULATION_MODE_NONE_NV</code>, then <a href=\"#vkCmdSetCoverageModulationTableEnableNV\">vkCmdSetCoverageModulationTableEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07646",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageModulationTableEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetCoverageModulationTableNV\">vkCmdSetCoverageModulationTableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07647",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-pipelineFragmentShadingRate-09238",
          "text": "If the <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a> feature is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07648",
          "text": "If the <a href=\"#features-representativeFragmentTest\"><code>representativeFragmentTest</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetRepresentativeFragmentTestEnableNV\">vkCmdSetRepresentativeFragmentTestEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07649",
          "text": "If the <a href=\"#features-coverageReductionMode\"><code>coverageReductionMode</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageReductionModeNV\">vkCmdSetCoverageReductionModeNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-pColorBlendEnables-07470",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> state enabled and the last call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> set <code>pColorBlendEnables</code> for any attachment to <code>VK_TRUE</code>, then for those attachments in the subpass the corresponding 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_BLEND_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-rasterizationSamples-07471",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> follow the rules for a <a href=\"#renderpass-noattachments\">zero-attachment subpass</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-samples-07472",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, then the <code>samples</code> parameter in the last call to <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> be greater or equal to the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a>::<code>rasterizationSamples</code> parameter used to create the bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-samples-07473",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> state and <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> states enabled, then the <code>samples</code> parameter in the last call to <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> be greater or equal to the <code>rasterizationSamples</code> parameter in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-rasterizationSamples-07474",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and neither the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> nor the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extensions are enabled, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil attachments",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-09211",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, or a shader object is bound to any graphics stage, and the current render pass instance includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> be the same as the <code>rasterizationSamples</code> member of that structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-firstAttachment-07476",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEnableEXT</code> calls <strong class=\"purple\">must</strong> specify an enable for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-rasterizerDiscardEnable-09417",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEnableEXT</code> calls <strong class=\"purple\">must</strong> specify an enable for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-firstAttachment-07477",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEquationEXT</code> calls <strong class=\"purple\">must</strong> specify the blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-rasterizerDiscardEnable-09418",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEquationEXT</code> calls <strong class=\"purple\">must</strong> specify the blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-firstAttachment-07478",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorWriteMaskEXT</code> calls <strong class=\"purple\">must</strong> specify the color write mask for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-rasterizerDiscardEnable-09419",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorWriteMaskEXT</code> calls <strong class=\"purple\">must</strong> specify the color write mask for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-firstAttachment-07479",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendAdvancedEXT</code> calls <strong class=\"purple\">must</strong> specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-advancedBlendMaxColorAttachments-07480",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> and <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic states enabled and the last calls to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> and <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> have enabled advanced blending, then the number of active color attachments in the current subpass <strong class=\"purple\">must</strong> not exceed <a href=\"#limits-advancedBlendMaxColorAttachments\"><code>advancedBlendMaxColorAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-primitivesGeneratedQueryWithNonZeroStreams-07481",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, and the bound graphics pipeline was created with <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code> state enabled, the last call to <a href=\"#vkCmdSetRasterizationStreamEXT\">vkCmdSetRasterizationStreamEXT</a> <strong class=\"purple\">must</strong> have set the <code>rasterizationStream</code> to zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsPerPixel-07482",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsPerPixel-07483",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-07484",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-07485",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, then the <code>sampleLocationsInfo.sampleLocationGridSize.width</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-07486",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, then the <code>sampleLocationsInfo.sampleLocationGridSize.height</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-07487",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, the fragment shader code <strong class=\"purple\">must</strong> not statically use the extended instruction <code>InterpolateAtSample</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-07936",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <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 the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-07937",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <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 the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-07938",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-coverageModulationTableEnable-07488",
          "text": "If a shader object is bound to any graphics stage or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code> state enabled, and the last call to <a href=\"#vkCmdSetCoverageModulationTableEnableNV\">vkCmdSetCoverageModulationTableEnableNV</a> set <code>coverageModulationTableEnable</code> to <code>VK_TRUE</code>, then the <code>coverageModulationTableCount</code> parameter in the last call to <a href=\"#vkCmdSetCoverageModulationTableNV\">vkCmdSetCoverageModulationTableNV</a> <strong class=\"purple\">must</strong> equal the current <code>rasterizationSamples</code> divided by the number of color samples in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-rasterizationSamples-07489",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current <code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be the same as the sample count of the depth/stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-coverageToColorEnable-07490",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> state enabled and the last call to <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> set the <code>coverageToColorEnable</code> to <code>VK_TRUE</code>, then the current subpass <strong class=\"purple\">must</strong> have a color attachment at the location selected by the last call to <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-rasterizerDiscardEnable-09420",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the last call to <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> set the <code>coverageToColorEnable</code> to <code>VK_TRUE</code>, then the current subpass <strong class=\"purple\">must</strong> have a color attachment at the location selected by the last call to <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-coverageReductionMode-07491",
          "text": "If this <code><a href=\"#VK_NV_coverage_reduction_mode\">VK_NV_coverage_reduction_mode</a></code> extension is enabled, the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> and <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> states enabled, the current coverage reduction mode <code>coverageReductionMode</code>, then the current <code>rasterizationSamples</code>, and the sample counts for the color and depth/stencil attachments (if the subpass has them) <strong class=\"purple\">must</strong> be a valid combination returned by <a href=\"#vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV\">vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-07492",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-07493",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-09421",
          "text": "If the <code><a href=\"#VK_NV_viewport_swizzle\">VK_NV_viewport_swizzle</a></code> extension is enabled, and a shader object is bound to any graphics stage, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-rasterizationSamples-07494",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, and if the current subpass has any color attachments and <code>rasterizationSamples</code> of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> is greater than the number of color samples, then the pipeline <code>sampleShadingEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-stippledLineEnable-07495",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-stippledLineEnable-07496",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR</code>, then the <a href=\"#features-stippledBresenhamLines\"><code>stippledBresenhamLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-stippledLineEnable-07497",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR</code>, then the <a href=\"#features-stippledSmoothLines\"><code>stippledSmoothLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-stippledLineEnable-07498",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_DEFAULT_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled and <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>strictLines</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-conservativePointAndLineRasterization-07499",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code> dynamic state enabled, <a href=\"#limits-conservativePointAndLineRasterization\"><code>conservativePointAndLineRasterization</code></a> is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the <code>conservativeRasterizationMode</code> set by the last call to <a href=\"#vkCmdSetConservativeRasterizationModeEXT\">vkCmdSetConservativeRasterizationModeEXT</a> <strong class=\"purple\">must</strong> be <code>VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-stage-07073",
          "text": "If the currently bound pipeline was created with the <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a>::<code>stage</code> member of an element of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> set to <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>, then <a href=\"#queries-mesh-shader\">Mesh Shader Queries</a> <strong class=\"purple\">must</strong> not be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08877",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07850",
          "text": "If dynamic state was inherited from <a href=\"#VkCommandBufferInheritanceViewportScissorInfoNV\">VkCommandBufferInheritanceViewportScissorInfoNV</a>, it <strong class=\"purple\">must</strong> be set in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08684",
          "text": "If there is no bound graphics pipeline, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_VERTEX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08685",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08686",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08687",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08688",
          "text": "If there is no bound graphics pipeline, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08689",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TASK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08690",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08693",
          "text": "If there is no bound graphics pipeline, and at least one of the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features is enabled, one of the <code>VK_SHADER_STAGE_VERTEX_BIT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stages <strong class=\"purple\">must</strong> have a valid <code>VkShaderEXT</code> bound, and the other <strong class=\"purple\">must</strong> have no <code>VkShaderEXT</code> bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08694",
          "text": "If there is no bound graphics pipeline, and both the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features are enabled, and a valid <code>VkShaderEXT</code> is bound the to the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage, and that <code>VkShaderEXT</code> was created without the <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> flag, a valid <code>VkShaderEXT</code> <strong class=\"purple\">must</strong> be bound to the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08695",
          "text": "If there is no bound graphics pipeline, and both the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features are enabled, and a valid <code>VkShaderEXT</code> is bound the to the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage, and that <code>VkShaderEXT</code> was created with the <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> flag, there <strong class=\"purple\">must</strong> be no <code>VkShaderEXT</code> bound to the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08696",
          "text": "If there is no bound graphics pipeline, and a valid <code>VkShaderEXT</code> is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, there <strong class=\"purple\">must</strong> be no <code>VkShaderEXT</code> bound to either the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage or the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08698",
          "text": "If any graphics shader is bound which was created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag, then all shaders created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag in the same <a href=\"#vkCreateShadersEXT\">vkCreateShadersEXT</a> call <strong class=\"purple\">must</strong> also be bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08699",
          "text": "If any graphics shader is bound which was created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag, any stages in between stages whose shaders which did not create a shader with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag as part of the same <a href=\"#vkCreateShadersEXT\">vkCreateShadersEXT</a> call <strong class=\"purple\">must</strong> not have any <code>VkShaderEXT</code> bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08878",
          "text": "All bound graphics shader objects <strong class=\"purple\">must</strong> have been created with identical or identically defined push constant ranges",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08879",
          "text": "All bound graphics shader objects <strong class=\"purple\">must</strong> have been created with identical or identically defined arrays of descriptor set layouts",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-colorAttachmentCount-09372",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, and a fragment shader is bound, it <strong class=\"purple\">must</strong> not declare the <code>DepthReplacing</code> or <code>StencilRefReplacingEXT</code> execution modes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-pDynamicStates-08715",
          "text": "If the bound graphics pipeline state includes a fragment shader stage, was created with <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpDepthAttachmentReadEXT</code>, the <code>depthWriteEnable</code> parameter in the last call to <a href=\"#vkCmdSetDepthWriteEnable\">vkCmdSetDepthWriteEnable</a> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-pDynamicStates-08716",
          "text": "If the bound graphics pipeline state includes a fragment shader stage, was created with <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpStencilAttachmentReadEXT</code>, the <code>writeMask</code> parameter in the last call to <a href=\"#vkCmdSetStencilWriteMask\">vkCmdSetStencilWriteMask</a> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-09116",
          "text": "If     a shader object is bound to any graphics stage or     the currently bound graphics pipeline was created with     <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code>,     and the format of any color attachment is     <code>VK_FORMAT_E5B9G9R9_UFLOAT_PACK32</code>, the corresponding element of the     <code>pColorWriteMasks</code> parameter of <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a>     <strong class=\"purple\">must</strong> either include all of <code>VK_COLOR_COMPONENT_R_BIT</code>,     <code>VK_COLOR_COMPONENT_G_BIT</code>, and <code>VK_COLOR_COMPONENT_B_BIT</code>, or     none of them",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-maxFragmentDualSrcAttachments-09239",
          "text": "If <a href=\"#framebuffer-blending\">blending</a> is enabled for any attachment where either the source or destination blend factors for that attachment <a href=\"#framebuffer-dsb\">use the secondary color input</a>, the maximum value of <code>Location</code> for any output attachment <a href=\"#shaders-staticuse\">statically used</a> in the <code>Fragment</code> <code>Execution</code> <code>Model</code> executed by this command <strong class=\"purple\">must</strong> be less than <a href=\"#limits-maxFragmentDualSrcAttachments\"><code>maxFragmentDualSrcAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-09548",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and there is no shader object bound to any graphics stage, the value of each element of <a href=\"#VkRenderingAttachmentLocationInfoKHR\">VkRenderingAttachmentLocationInfoKHR</a>::<code>pColorAttachmentLocations</code> set by <a href=\"#vkCmdSetRenderingAttachmentLocationsKHR\">vkCmdSetRenderingAttachmentLocationsKHR</a> <strong class=\"purple\">must</strong> match the value set for the corresponding element in the currently bound pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-09549",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and there is no shader object bound to any graphics stage, input attachment index mappings in the currently bound pipeline <strong class=\"purple\">must</strong> match those set for the current render pass instance via <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-09642",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with the <code>VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT</code> flag, the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-09643",
          "text": "If the bound graphics pipeline was created with <code>VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT</code>, the current render pass <strong class=\"purple\">must</strong> have begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with the <code>VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT</code> flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-04007",
          "text": "All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> buffers bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-04008",
          "text": "If the <a href=\"#features-nullDescriptor\"><code>nullDescriptor</code></a> feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02721",
          "text": "If <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> is not enabled, and that pipeline was created without enabling <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> for <code>vertexInputs</code>, then 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07842",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY</code> dynamic state enabled     then <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> <strong class=\"purple\">must</strong> have been called and not     subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current     command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-dynamicPrimitiveTopologyUnrestricted-07500",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY</code> dynamic state enabled and the <a href=\"#limits-dynamicPrimitiveTopologyUnrestricted\"><code>dynamicPrimitiveTopologyUnrestricted</code></a> is <code>VK_FALSE</code>, then the <code>primitiveTopology</code> parameter of <code>vkCmdSetPrimitiveTopology</code> <strong class=\"purple\">must</strong> be of the same <a href=\"#drawing-primitive-topology-class\">topology class</a> as the pipeline <a href=\"#VkPipelineInputAssemblyStateCreateInfo\">VkPipelineInputAssemblyStateCreateInfo</a>::<code>topology</code> state",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-pStrides-04913",
          "text": "If the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE</code> dynamic state enabled, but without the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdBindVertexBuffers2\">vkCmdBindVertexBuffers2</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this draw command, and the <code>pStrides</code> parameter of <a href=\"#vkCmdBindVertexBuffers2\">vkCmdBindVertexBuffers2</a> <strong class=\"purple\">must</strong> not be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-04914",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     then <a href=\"#vkCmdSetVertexInputEXT\">vkCmdSetVertexInputEXT</a> <strong class=\"purple\">must</strong> have been called and not     subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current     command buffer prior to this draw command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-Input-07939",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     then all variables with the <code>Input</code> storage class decorated with     <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code>     <strong class=\"purple\">must</strong> contain a location in     <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>location</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-Input-08734",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     and either <a href=\"#features-legacyVertexAttributes\"><code>legacyVertexAttributes</code></a> is not enabled or the SPIR-V Type     associated with a given <code>Input</code> variable of the corresponding     <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code> is     64-bit,     then the numeric type associated with all <code>Input</code> variables of the     corresponding <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code>     <code>OpEntryPoint</code> <strong class=\"purple\">must</strong> be the same as     <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>format</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-format-08936",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     and <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>format</code> has a     64-bit component, then the scalar width associated with all <code>Input</code>     variables of the corresponding <code>Location</code> in the <code>Vertex</code>     <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code> <strong class=\"purple\">must</strong> be 64-bit",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-format-08937",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     and the scalar width associated with a <code>Location</code> decorated     <code>Input</code> variable in the <code>Vertex</code> <code>Execution</code> <code>Model</code>     <code>OpEntryPoint</code> is 64-bit, then the corresponding     <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>format</code> <strong class=\"purple\">must</strong> have a     64-bit component",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-09203",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     and <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>format</code> has a     64-bit component, then all <code>Input</code> variables at the corresponding     <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code>     <strong class=\"purple\">must</strong> not use components that are not present in the format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-04875",
          "text": "If     there is a shader object bound to the     <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT</code> dynamic state enabled,     and the <a href=\"#dynamic-state-current-value\">current value</a> of     <code>primitiveTopology</code> is <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, then     <a href=\"#vkCmdSetPatchControlPointsEXT\">vkCmdSetPatchControlPointsEXT</a> <strong class=\"purple\">must</strong> have been called and not     subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current     command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-04879",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE</code> dynamic state enabled     then <a href=\"#vkCmdSetPrimitiveRestartEnable\">vkCmdSetPrimitiveRestartEnable</a> <strong class=\"purple\">must</strong> have been called and not     subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current     command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-09637",
          "text": "If     the <a href=\"#features-primitiveTopologyListRestart\"><code>primitiveTopologyListRestart</code></a> feature is not enabled,     the topology 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>, or     <code>VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY</code>,     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE</code> dynamic state enabled     then <a href=\"#vkCmdSetPrimitiveRestartEnable\">vkCmdSetPrimitiveRestartEnable</a> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-stage-06481",
          "text": "The bound graphics pipeline <strong class=\"purple\">must</strong> not have been created with the <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a>::<code>stage</code> member of an element of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> set to <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08885",
          "text": "There <strong class=\"purple\">must</strong> be no shader object bound to either of the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-pNext-09461",
          "text": "If the bound graphics pipeline state was created with <a href=\"#VkPipelineVertexInputDivisorStateCreateInfoKHR\">VkPipelineVertexInputDivisorStateCreateInfoKHR</a> in the <code>pNext</code> chain of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pVertexInputState</code>, any member of <a href=\"#VkPipelineVertexInputDivisorStateCreateInfoKHR\">VkPipelineVertexInputDivisorStateCreateInfoKHR</a>::<code>pVertexBindingDivisors</code> has a value other than <code>1</code> in <code>divisor</code>, and <a href=\"#VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR\">VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR</a>::<code>supportsNonZeroFirstInstance</code> is <code>VK_FALSE</code>, then <code>firstInstance</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-09462",
          "text": "If <a href=\"#shaders-objects\">shader objects</a> are used for drawing or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled, any member of the <code>pVertexBindingDescriptions</code> parameter to the <a href=\"#vkCmdSetVertexInputEXT\">vkCmdSetVertexInputEXT</a> call that sets this dynamic state has a value other than <code>1</code> in <code>divisor</code>, and <a href=\"#VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR\">VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR</a>::<code>supportsNonZeroFirstInstance</code> is <code>VK_FALSE</code>, then <code>firstInstance</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-transformFeedback-02287",
          "text": "<code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>transformFeedback</code> <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-transformFeedbackDraw-02288",
          "text": "The implementation <strong class=\"purple\">must</strong> support <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>transformFeedbackDraw</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-vertexStride-02289",
          "text": "<code>vertexStride</code> <strong class=\"purple\">must</strong> be greater than 0 and less than or equal to <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBufferDataStride</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-04567",
          "text": "If <code>counterBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-02290",
          "text": "<code>counterBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-counterBufferOffset-04568",
          "text": "<code>counterBufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-counterOffset-09474",
          "text": "<code>counterOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-vertexStride-09475",
          "text": "<code>vertexStride</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02646",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-parameter",
          "text": "<code>counterBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commonparent",
          "text": "Both of <code>commandBuffer</code>, and <code>counterBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdBeginConditionalRenderingEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-None-01980",
          "text": "Conditional rendering <strong class=\"purple\">must</strong> not already be <a href=\"#active-conditional-rendering\">active</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-pConditionalRenderingBegin-parameter",
          "text": "<code>pConditionalRenderingBegin</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkConditionalRenderingBeginInfoEXT\">VkConditionalRenderingBeginInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkConditionalRenderingBeginInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-buffer-01981",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-buffer-01982",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-offset-01983",
          "text": "<code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code> by at least 32 bits",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-offset-01984",
          "text": "<code>offset</code> <strong class=\"purple\">must</strong> be a multiple of 4",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-buffer-parameter",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkConditionalRenderingFlagBitsEXT\">VkConditionalRenderingFlagBitsEXT</a> values",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdEndConditionalRenderingEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdEndConditionalRenderingEXT-None-01985",
          "text": "Conditional rendering <strong class=\"purple\">must</strong> be <a href=\"#active-conditional-rendering\">active</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndConditionalRenderingEXT-None-01986",
          "text": "If conditional rendering was made <a href=\"#active-conditional-rendering\">active</a> outside of a render pass instance, it <strong class=\"purple\">must</strong> not be ended inside a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndConditionalRenderingEXT-None-01987",
          "text": "If conditional rendering was made <a href=\"#active-conditional-rendering\">active</a> within a subpass it <strong class=\"purple\">must</strong> be ended in the same subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndConditionalRenderingEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdDrawMeshTasksNV": {
      "core": [
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-magFilter-04553",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-magFilter-09598",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-mipmapMode-04770",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-mipmapMode-09599",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-unnormalizedCoordinates-09635",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>levelCount</code> and <code>layerCount</code> <strong class=\"purple\">must</strong> be 1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-unnormalizedCoordinates-09636",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_VIEW_TYPE_1D</code> or <code>VK_IMAGE_VIEW_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-06479",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is sampled with <a href=\"#textures-depth-compare-operation\">depth comparison</a>, 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_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02691",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed using atomic operations as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07888",
          "text": "If a <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> descriptor is accessed using atomic operations as a result of this command, then the storage texel buffer&#8217;s <a href=\"#resources-buffer-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02692",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02693",
          "text": "If the <a href=\"#VK_EXT_filter_cubic\">VK_EXT_filter_cubic</a> extension is not enabled and any <a href=\"#VkImageView\">VkImageView</a> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, it <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-filterCubic-02694",
          "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 <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubic</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-filterCubicMinmax-02695",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubicMinmax</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-cubicRangeClamp-09212",
          "text": "If the <a href=\"#features-filter-cubic-range-clamp\"><code>cubicRangeClamp</code></a> feature is not enabled, then 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=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-reductionMode-09213",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with a <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code> as a result of this command <strong class=\"purple\">must</strong> sample with <code>VK_FILTER_CUBIC_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-selectableCubicWeights-09214",
          "text": "If the <a href=\"#features-filter-cubic-weight-selection\"><code>selectableCubicWeights</code></a> feature is not enabled, then 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 href=\"#VkSamplerCubicWeightsCreateInfoQCOM\">VkSamplerCubicWeightsCreateInfoQCOM</a>::<code>cubicWeights</code> equal to <code>VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-flags-02696",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-OpTypeImage-07027",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being written as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-OpTypeImage-07028",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being read as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-OpTypeImage-07029",
          "text": "For any <a href=\"#VkBufferView\">VkBufferView</a> being written as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-OpTypeImage-07030",
          "text": "Any <a href=\"#VkBufferView\">VkBufferView</a> being read as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code> then the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08600",
          "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08601",
          "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-10068",
          "text": "For each array of resources that is used by <a href=\"#shaders-binding\">a bound shader</a>, the indices used to access members of the array <strong class=\"purple\">must</strong> be less than the descriptor count for the identified binding in the descriptor sets used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-maintenance4-08602",
          "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08114",
          "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08115",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created without <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08116",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08604",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08117",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08119",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkPipeline\">VkPipeline</a> created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08605",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkShaderEXT\">VkShaderEXT</a> created with a <code>VkDescriptorSetLayout</code> that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08606",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is not enabled, a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08608",
          "text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state specified statically in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08609",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <a href=\"#VkImage\">VkImage</a> with a <a href=\"#VkImageView\">VkImageView</a> 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08610",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08611",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08607",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-uniformBuffers-06935",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08612",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-storageBuffers-06936",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>storageBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08613",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-02707",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, any resource accessed by <a href=\"#shaders-binding\">bound shaders</a> <strong class=\"purple\">must</strong> not be a protected resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-06550",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> only be used with <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-ConstOffset-06551",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> not use the <code>ConstOffset</code> and <code>Offset</code> operands",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-viewType-07752",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> match the <code>Dim</code> operand of the <code>OpTypeImage</code> as described in <a href=\"#spirvenv-image-dimensions\">Compatibility Between SPIR-V Image Dimensions and Vulkan ImageView Types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-format-07753",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the <a href=\"#formats-numericformat\">numeric type</a> of the image view&#8217;s <code>format</code> and the <code>Sampled</code> <code>Type</code> operand of the <code>OpTypeImage</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-OpImageWrite-08795",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with a format other than <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-OpImageWrite-08796",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with the format <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have four components",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-OpImageWrite-04469",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the buffer view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-SampledType-04470",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-SampledType-04471",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-SampledType-04472",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-SampledType-04473",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-sparseImageInt64Atomics-04474",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-sparseImageInt64Atomics-04475",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-OpImageWeightedSampleQCOM-06971",
          "text": "If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-OpImageWeightedSampleQCOM-06972",
          "text": "If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image 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_2_WEIGHT_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-OpImageBoxFilterQCOM-06973",
          "text": "If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-OpImageBlockMatchSSDQCOM-06974",
          "text": "If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-OpImageBlockMatchSADQCOM-06975",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-OpImageBlockMatchSADQCOM-06976",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-OpImageWeightedSampleQCOM-06977",
          "text": "If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-OpImageWeightedSampleQCOM-06978",
          "text": "If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-OpImageBlockMatchWindow-09215",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-OpImageBlockMatchWindow-09216",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s format <strong class=\"purple\">must</strong> be a single-component format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-OpImageBlockMatchWindow-09217",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07288",
          "text": "Any shader invocation executed by this command <strong class=\"purple\">must</strong> <a href=\"#shaders-termination\">terminate</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-09600",
          "text": "If a descriptor with type equal to any of <code>VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> is accessed as a result of this command, the image subresource identified by that descriptor <strong class=\"purple\">must</strong> be in the image layout identified when the descriptor was written",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-renderPass-02684",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-subpass-02685",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07748",
          "text": "If any shader statically accesses an input attachment, a valid descriptor <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-OpTypeImage-07468",
          "text": "If any shader executed by this pipeline accesses an <code>OpTypeImage</code> variable with a <code>Dim</code> operand of <code>SubpassData</code>, it <strong class=\"purple\">must</strong> be decorated with an <code>InputAttachmentIndex</code> that corresponds to a valid input attachment in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07469",
          "text": "Input attachment views accessed in a subpass <strong class=\"purple\">must</strong> be created with the same <a href=\"#VkFormat\">VkFormat</a> as the corresponding subpass definition, and be created with a <a href=\"#VkImageView\">VkImageView</a> that is compatible with the attachment referenced by the subpass' <code>pInputAttachments</code>[<code>InputAttachmentIndex</code>] in the currently bound <a href=\"#VkFramebuffer\">VkFramebuffer</a> as specified by <a href=\"#compatibility-inputattachment\">Fragment Input Attachment Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-pDepthInputAttachmentIndex-09595",
          "text": "Input attachment views accessed in a dynamic render pass with a <code>InputAttachmentIndex</code> referenced by <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>, or no <code>InputAttachmentIndex</code> if <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pDepthInputAttachmentIndex</code> or <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pStencilInputAttachmentIndex</code> are <code>NULL</code>, <strong class=\"purple\">must</strong> be created with a <a href=\"#VkImageView\">VkImageView</a> that is compatible with the corresponding color, depth, or stencil attachment in <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-pDepthInputAttachmentIndex-09596",
          "text": "Input attachment views accessed in a dynamic render pass via a shader object <strong class=\"purple\">must</strong> have an <code>InputAttachmentIndex</code> if both <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pDepthInputAttachmentIndex</code> and <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pStencilInputAttachmentIndex</code> are non-<code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-InputAttachmentIndex-09597",
          "text": "If an input attachment view accessed in a dynamic render pass via a shader object has an <code>InputAttachmentIndex</code>, the <code>InputAttachmentIndex</code> <strong class=\"purple\">must</strong> match an index in <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-06537",
          "text": "Memory backing image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be written in any way other than as an attachment by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-09000",
          "text": "If a color attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe <code>VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code> is\nset on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_COLOR_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-09001",
          "text": "If a depth attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe\n<code>VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code>\nis set on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_DEPTH_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-09002",
          "text": "If a stencil attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe\n<code>VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code>\nis set on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_STENCIL_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-09003",
          "text": "If an attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment, storage image, or sampled image by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-06539",
          "text": "If any previously recorded command in the current subpass accessed an image subresource used as an attachment in this subpass in any way other than as an attachment, this command <strong class=\"purple\">must</strong> not write to that image subresource as an attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-06886",
          "text": "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, <a href=\"#fragops-depth-write\">depth writes</a> <strong class=\"purple\">must</strong> be disabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-06887",
          "text": "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back <code>writeMask</code> are not zero, and stencil test is enabled, <a href=\"#fragops-stencil\">all stencil ops</a> <strong class=\"purple\">must</strong> be <code>VK_STENCIL_OP_KEEP</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07831",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT</code> dynamic state enabled then <a href=\"#vkCmdSetViewport\">vkCmdSetViewport</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07832",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR</code> dynamic state enabled then <a href=\"#vkCmdSetScissor\">vkCmdSetScissor</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07833",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_WIDTH</code> dynamic state enabled then <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08617",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08618",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08619",
          "text": "If a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07834",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthBiasEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthBounds\">vkCmdSetDepthBounds</a> or <a href=\"#vkCmdSetDepthBias2EXT\">vkCmdSetDepthBias2EXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07835",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_BLEND_CONSTANTS</code> dynamic state enabled then <a href=\"#vkCmdSetBlendConstants\">vkCmdSetBlendConstants</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08621",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> in the current command buffer set any element of <code>pColorBlendEnables</code> to <code>VK_TRUE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> in the current command buffer set the same element of <code>pColorBlendEquations</code> to a <code>VkColorBlendEquationEXT</code> structure with any <a href=\"#VkBlendFactor\">VkBlendFactor</a> member with a value of <code>VK_BLEND_FACTOR_CONSTANT_COLOR</code>, <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR</code>, <code>VK_BLEND_FACTOR_CONSTANT_ALPHA</code>, or <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA</code>, <a href=\"#vkCmdSetBlendConstants\">vkCmdSetBlendConstants</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07836",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthBoundsTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthBounds\">vkCmdSetDepthBounds</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07837",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilCompareMask\">vkCmdSetStencilCompareMask</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07838",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilWriteMask\">vkCmdSetStencilWriteMask</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07839",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_REFERENCE</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of and <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilReference\">vkCmdSetStencilReference</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-maxMultiviewInstanceIndex-02688",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-02689",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-06666",
          "text": "If the <code><a href=\"#VK_EXT_sample_locations\">VK_EXT_sample_locations</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07840",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_CULL_MODE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCullMode\">vkCmdSetCullMode</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07841",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_FRONT_FACE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetFrontFace\">vkCmdSetFrontFace</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07843",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, <a href=\"#vkCmdSetDepthTestEnable\">vkCmdSetDepthTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07844",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthWriteEnable\">vkCmdSetDepthWriteEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07845",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_COMPARE_OP</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthCompareOp\">vkCmdSetDepthCompareOp</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07846",
          "text": "If the <a href=\"#features-depthBounds\"><code>depthBounds</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthBoundsTestEnable\">vkCmdSetDepthBoundsTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07847",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetStencilTestEnable\">vkCmdSetStencilTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07848",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_OP</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilOp\">vkCmdSetStencilOp</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-viewportCount-03417",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-scissorCount-03418",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, then <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-viewportCount-03419",
          "text": "If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> and <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08635",
          "text": "If a shader object is bound to any graphics stage, then both <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> and <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-viewportCount-04137",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-viewportCount-04138",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08636",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-viewportCount-04139",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-shadingRateImage-09233",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV</code> and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-shadingRateImage-09234",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08637",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-VkPipelineVieportCreateInfo-04141",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled and a <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> structure chained from <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-VkPipelineVieportCreateInfo-04142",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled and a <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> structure chained from <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07878",
          "text": "If the <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetExclusiveScissorEnableNV\">vkCmdSetExclusiveScissorEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07879",
          "text": "If the <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV</code> dynamic state enabled, and the most recent call to <a href=\"#vkCmdSetExclusiveScissorEnableNV\">vkCmdSetExclusiveScissorEnableNV</a> in the current command buffer set any element of <code>pExclusiveScissorEnables</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetExclusiveScissorNV\">vkCmdSetExclusiveScissorNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-04876",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-04877",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthBiasEnable\">vkCmdSetDepthBiasEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-logicOp-04878",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_LOGIC_OP_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>logicOpEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetLogicOpEXT\">vkCmdSetLogicOpEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-primitiveFragmentShadingRateWithMultipleViewports-04552",
          "text": "If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-primitiveFragmentShadingRateWithMultipleViewports-08642",
          "text": "If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, and any shader object bound to a graphics stage writes to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-blendEnable-04727",
          "text": "If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the <code>blendEnable</code> member of the corresponding element of the <code>pAttachments</code> member of <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08643",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then for each color attachment in the render pass, if the corresponding image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the corresponding member of <code>pColorBlendEnables</code> in the most recent call to <code>vkCmdSetColorBlendEnableEXT</code> in the current command buffer that affected that attachment index <strong class=\"purple\">must</strong> have been <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-multisampledRenderToSingleSampled-07284",
          "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then <code>rasterizationSamples</code> for the currently bound graphics pipeline\n<strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil\nattachments</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08644",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the\ncurrent command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the\nsame as the number of samples for the current render pass color and/or\ndepth/stencil attachments</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08876",
          "text": "If a shader object is bound to any graphics stage, the current render pass instance <strong class=\"purple\">must</strong> have been begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-imageView-06172",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-imageView-06173",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-imageView-06174",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-imageView-06175",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-imageView-06176",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-imageView-06177",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-viewMask-06178",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>viewMask</code> equal to <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>viewMask</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-colorAttachmentCount-06179",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>colorAttachmentCount</code> equal to <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-08910",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-08912",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-08911",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-colorAttachmentCount-09362",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, there is no shader object bound to any graphics stage, and a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>resolveImageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with an image created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value equal to the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-09363",
          "text": "If there is no shader object bound to any graphics stage, the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, and a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with an image created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value equal to the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-09364",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have set the blend enable to <code>VK_FALSE</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-09365",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to <code>VK_SAMPLE_COUNT_1_BIT</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-09366",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have set blend enable to <code>VK_FALSE</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-rasterizationSamples-09367",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to <code>VK_SAMPLE_COUNT_1_BIT</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-09368",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;width</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-09369",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;height</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-pFragmentSize-09370",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;width</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-pFragmentSize-09371",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;height</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07749",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteEnableEXT\">vkCmdSetColorWriteEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08646",
          "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is enabled on the device, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorWriteEnableEXT\">vkCmdSetColorWriteEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-attachmentCount-07750",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code> dynamic state enabled then the <code>attachmentCount</code> parameter of <code>vkCmdSetColorWriteEnableEXT</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>VkPipelineColorBlendStateCreateInfo</code>::<code>attachmentCount</code> of the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08647",
          "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is enabled on the device, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then the <code>attachmentCount</code> parameter of most recent call to <code>vkCmdSetColorWriteEnableEXT</code> in the current command buffer <strong class=\"purple\">must</strong> be greater than or equal to the number of color attachments in the current render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07751",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleEXT\">vkCmdSetDiscardRectangleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command for each discard rectangle in <a href=\"#VkPipelineDiscardRectangleStateCreateInfoEXT\">VkPipelineDiscardRectangleStateCreateInfoEXT</a>::<code>discardRectangleCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07880",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-rasterizerDiscardEnable-09236",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> in the current command buffer set <code>discardRectangleEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDiscardRectangleEXT\">vkCmdSetDiscardRectangleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08648",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07881",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleModeEXT\">vkCmdSetDiscardRectangleModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08649",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> in the current command buffer set <code>discardRectangleEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDiscardRectangleModeEXT\">vkCmdSetDiscardRectangleModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-08913",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-08914",
          "text": "If current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-08915",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline was not equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>, the value of the format <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-08916",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-08917",
          "text": "If current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-dynamicRenderingUnusedAttachments-08918",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline was not equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>, the value of the format <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-imageView-06183",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a>::<code>imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-imageView-06184",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingFragmentDensityMapAttachmentInfoEXT\">VkRenderingFragmentDensityMapAttachmentInfoEXT</a>::<code>imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-colorAttachmentCount-06185",
          "text": "If the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the corresponding element of the <code>pColorAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-pDepthAttachment-06186",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-pStencilAttachment-06187",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-multisampledRenderToSingleSampled-07285",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     the current render pass instance was begun with     <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than     <code>0</code>, then each element of the     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a     <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been     created with a sample count equal to the value of     <code>rasterizationSamples</code> for the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-multisampledRenderToSingleSampled-07286",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not     <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the     currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count     used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-multisampledRenderToSingleSampled-07287",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not     <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the     currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count     used to create     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-pNext-07935",
          "text": "If this command has been called inside a render pass instance started with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and the <code>pNext</code> chain of <a href=\"#VkRenderingInfo\">VkRenderingInfo</a> includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a>::<code>rasterizationSamples</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-renderPass-06198",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>renderPass</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-pColorAttachments-08963",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound with a fragment shader that statically writes to a color attachment, the color write mask is not zero, color writes are enabled, and the corresponding element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-pDepthAttachment-08964",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound, depth test is enabled, depth write is enabled, and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-pStencilAttachment-08965",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound, stencil test is enabled and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-primitivesGeneratedQueryWithRasterizerDiscard-06708",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithRasterizerDiscard\"><code>primitivesGeneratedQueryWithRasterizerDiscard</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, <a href=\"#primsrast-discard\">rasterization discard</a> <strong class=\"purple\">must</strong> not be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-primitivesGeneratedQueryWithNonZeroStreams-06709",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, the bound graphics pipeline <strong class=\"purple\">must</strong> not have been created with a non-zero value in <code>VkPipelineRasterizationStateStreamCreateInfoEXT</code>::<code>rasterizationStream</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07619",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetTessellationDomainOriginEXT\">vkCmdSetTessellationDomainOriginEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07620",
          "text": "If the <a href=\"#features-depthClamp\"><code>depthClamp</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthClampEnableEXT\">vkCmdSetDepthClampEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07621",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_POLYGON_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07622",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07623",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-alphaToCoverageEnable-08919",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic state enabled, and <code>alphaToCoverageEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-alphaToCoverageEnable-08920",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a> in the current command buffer set <code>alphaToCoverageEnable</code> to <code>VK_TRUE</code>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07624",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07625",
          "text": "If the <a href=\"#features-alphaToOne\"><code>alphaToOne</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAlphaToOneEnableEXT\">vkCmdSetAlphaToOneEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07626",
          "text": "If the <a href=\"#features-logicOp\"><code>logicOp</code></a> feature is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLogicOpEnableEXT\">vkCmdSetLogicOpEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07627",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08657",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07628",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08658",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> for any attachment set that attachment&#8217;s value in <code>pColorBlendEnables</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07629",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08659",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07630",
          "text": "If the <a href=\"#features-geometryStreams\"><code>geometryStreams</code></a> feature is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizationStreamEXT\">vkCmdSetRasterizationStreamEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07631",
          "text": "If the <code><a href=\"#VK_EXT_conservative_rasterization\">VK_EXT_conservative_rasterization</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetConservativeRasterizationModeEXT\">vkCmdSetConservativeRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07632",
          "text": "If the <code><a href=\"#VK_EXT_conservative_rasterization\">VK_EXT_conservative_rasterization</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>conservativeRasterizationMode</code> is <code>VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT</code>, then <a href=\"#vkCmdSetExtraPrimitiveOverestimationSizeEXT\">vkCmdSetExtraPrimitiveOverestimationSizeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07633",
          "text": "If the <a href=\"#features-depthClipEnable\"><code>depthClipEnable</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT</code> dynamic state, then <a href=\"#vkCmdSetDepthClipEnableEXT\">vkCmdSetDepthClipEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07634",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08664",
          "text": "If the <code><a href=\"#VK_EXT_sample_locations\">VK_EXT_sample_locations</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07635",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-rasterizerDiscardEnable-09416",
          "text": "If the <code><a href=\"#VK_EXT_blend_operation_advanced\">VK_EXT_blend_operation_advanced</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then at least one of <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> and <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07636",
          "text": "If the <code><a href=\"#VK_EXT_provoking_vertex\">VK_EXT_provoking_vertex</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetProvokingVertexModeEXT\">vkCmdSetProvokingVertexModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07637",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08666",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08667",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08668",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07638",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08669",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08670",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08671",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07849",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_KHR</code>     dynamic state enabled then <a href=\"#vkCmdSetLineStippleKHR\">vkCmdSetLineStippleKHR</a>     <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing     command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08672",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> in the current command buffer set <code>stippledLineEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetLineStippleEXT\">vkCmdSetLineStippleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07639",
          "text": "If the <a href=\"#features-depthClipControl\"><code>depthClipControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetDepthClipNegativeOneToOneEXT\">vkCmdSetDepthClipNegativeOneToOneEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-09650",
          "text": "If the <a href=\"#features-depthClampControl\"><code>depthClampControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthClampEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthClampRangeEXT\">vkCmdSetDepthClampRangeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07640",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07641",
          "text": "If the <code><a href=\"#VK_NV_viewport_swizzle\">VK_NV_viewport_swizzle</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07642",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07643",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageToColorEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07644",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageModulationModeNV\">vkCmdSetCoverageModulationModeNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07645",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageModulationMode</code> is any value other than <code>VK_COVERAGE_MODULATION_MODE_NONE_NV</code>, then <a href=\"#vkCmdSetCoverageModulationTableEnableNV\">vkCmdSetCoverageModulationTableEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07646",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageModulationTableEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetCoverageModulationTableNV\">vkCmdSetCoverageModulationTableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07647",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-pipelineFragmentShadingRate-09238",
          "text": "If the <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a> feature is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07648",
          "text": "If the <a href=\"#features-representativeFragmentTest\"><code>representativeFragmentTest</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetRepresentativeFragmentTestEnableNV\">vkCmdSetRepresentativeFragmentTestEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07649",
          "text": "If the <a href=\"#features-coverageReductionMode\"><code>coverageReductionMode</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageReductionModeNV\">vkCmdSetCoverageReductionModeNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-pColorBlendEnables-07470",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> state enabled and the last call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> set <code>pColorBlendEnables</code> for any attachment to <code>VK_TRUE</code>, then for those attachments in the subpass the corresponding 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_BLEND_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-rasterizationSamples-07471",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> follow the rules for a <a href=\"#renderpass-noattachments\">zero-attachment subpass</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-samples-07472",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, then the <code>samples</code> parameter in the last call to <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> be greater or equal to the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a>::<code>rasterizationSamples</code> parameter used to create the bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-samples-07473",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> state and <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> states enabled, then the <code>samples</code> parameter in the last call to <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> be greater or equal to the <code>rasterizationSamples</code> parameter in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-rasterizationSamples-07474",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and neither the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> nor the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extensions are enabled, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil attachments",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-09211",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, or a shader object is bound to any graphics stage, and the current render pass instance includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> be the same as the <code>rasterizationSamples</code> member of that structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-firstAttachment-07476",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEnableEXT</code> calls <strong class=\"purple\">must</strong> specify an enable for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-rasterizerDiscardEnable-09417",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEnableEXT</code> calls <strong class=\"purple\">must</strong> specify an enable for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-firstAttachment-07477",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEquationEXT</code> calls <strong class=\"purple\">must</strong> specify the blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-rasterizerDiscardEnable-09418",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEquationEXT</code> calls <strong class=\"purple\">must</strong> specify the blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-firstAttachment-07478",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorWriteMaskEXT</code> calls <strong class=\"purple\">must</strong> specify the color write mask for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-rasterizerDiscardEnable-09419",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorWriteMaskEXT</code> calls <strong class=\"purple\">must</strong> specify the color write mask for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-firstAttachment-07479",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendAdvancedEXT</code> calls <strong class=\"purple\">must</strong> specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-advancedBlendMaxColorAttachments-07480",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> and <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic states enabled and the last calls to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> and <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> have enabled advanced blending, then the number of active color attachments in the current subpass <strong class=\"purple\">must</strong> not exceed <a href=\"#limits-advancedBlendMaxColorAttachments\"><code>advancedBlendMaxColorAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-primitivesGeneratedQueryWithNonZeroStreams-07481",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, and the bound graphics pipeline was created with <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code> state enabled, the last call to <a href=\"#vkCmdSetRasterizationStreamEXT\">vkCmdSetRasterizationStreamEXT</a> <strong class=\"purple\">must</strong> have set the <code>rasterizationStream</code> to zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-sampleLocationsPerPixel-07482",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-sampleLocationsPerPixel-07483",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-07484",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-07485",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, then the <code>sampleLocationsInfo.sampleLocationGridSize.width</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-07486",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, then the <code>sampleLocationsInfo.sampleLocationGridSize.height</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-07487",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, the fragment shader code <strong class=\"purple\">must</strong> not statically use the extended instruction <code>InterpolateAtSample</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-07936",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <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 the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-07937",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <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 the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-07938",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-coverageModulationTableEnable-07488",
          "text": "If a shader object is bound to any graphics stage or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code> state enabled, and the last call to <a href=\"#vkCmdSetCoverageModulationTableEnableNV\">vkCmdSetCoverageModulationTableEnableNV</a> set <code>coverageModulationTableEnable</code> to <code>VK_TRUE</code>, then the <code>coverageModulationTableCount</code> parameter in the last call to <a href=\"#vkCmdSetCoverageModulationTableNV\">vkCmdSetCoverageModulationTableNV</a> <strong class=\"purple\">must</strong> equal the current <code>rasterizationSamples</code> divided by the number of color samples in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-rasterizationSamples-07489",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current <code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be the same as the sample count of the depth/stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-coverageToColorEnable-07490",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> state enabled and the last call to <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> set the <code>coverageToColorEnable</code> to <code>VK_TRUE</code>, then the current subpass <strong class=\"purple\">must</strong> have a color attachment at the location selected by the last call to <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-rasterizerDiscardEnable-09420",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the last call to <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> set the <code>coverageToColorEnable</code> to <code>VK_TRUE</code>, then the current subpass <strong class=\"purple\">must</strong> have a color attachment at the location selected by the last call to <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-coverageReductionMode-07491",
          "text": "If this <code><a href=\"#VK_NV_coverage_reduction_mode\">VK_NV_coverage_reduction_mode</a></code> extension is enabled, the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> and <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> states enabled, the current coverage reduction mode <code>coverageReductionMode</code>, then the current <code>rasterizationSamples</code>, and the sample counts for the color and depth/stencil attachments (if the subpass has them) <strong class=\"purple\">must</strong> be a valid combination returned by <a href=\"#vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV\">vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-viewportCount-07492",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-viewportCount-07493",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-viewportCount-09421",
          "text": "If the <code><a href=\"#VK_NV_viewport_swizzle\">VK_NV_viewport_swizzle</a></code> extension is enabled, and a shader object is bound to any graphics stage, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-rasterizationSamples-07494",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, and if the current subpass has any color attachments and <code>rasterizationSamples</code> of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> is greater than the number of color samples, then the pipeline <code>sampleShadingEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-stippledLineEnable-07495",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-stippledLineEnable-07496",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR</code>, then the <a href=\"#features-stippledBresenhamLines\"><code>stippledBresenhamLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-stippledLineEnable-07497",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR</code>, then the <a href=\"#features-stippledSmoothLines\"><code>stippledSmoothLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-stippledLineEnable-07498",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_DEFAULT_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled and <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>strictLines</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-conservativePointAndLineRasterization-07499",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code> dynamic state enabled, <a href=\"#limits-conservativePointAndLineRasterization\"><code>conservativePointAndLineRasterization</code></a> is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the <code>conservativeRasterizationMode</code> set by the last call to <a href=\"#vkCmdSetConservativeRasterizationModeEXT\">vkCmdSetConservativeRasterizationModeEXT</a> <strong class=\"purple\">must</strong> be <code>VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-stage-07073",
          "text": "If the currently bound pipeline was created with the <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a>::<code>stage</code> member of an element of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> set to <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>, then <a href=\"#queries-mesh-shader\">Mesh Shader Queries</a> <strong class=\"purple\">must</strong> not be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08877",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07850",
          "text": "If dynamic state was inherited from <a href=\"#VkCommandBufferInheritanceViewportScissorInfoNV\">VkCommandBufferInheritanceViewportScissorInfoNV</a>, it <strong class=\"purple\">must</strong> be set in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08684",
          "text": "If there is no bound graphics pipeline, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_VERTEX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08685",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08686",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08687",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08688",
          "text": "If there is no bound graphics pipeline, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08689",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TASK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08690",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08693",
          "text": "If there is no bound graphics pipeline, and at least one of the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features is enabled, one of the <code>VK_SHADER_STAGE_VERTEX_BIT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stages <strong class=\"purple\">must</strong> have a valid <code>VkShaderEXT</code> bound, and the other <strong class=\"purple\">must</strong> have no <code>VkShaderEXT</code> bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08694",
          "text": "If there is no bound graphics pipeline, and both the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features are enabled, and a valid <code>VkShaderEXT</code> is bound the to the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage, and that <code>VkShaderEXT</code> was created without the <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> flag, a valid <code>VkShaderEXT</code> <strong class=\"purple\">must</strong> be bound to the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08695",
          "text": "If there is no bound graphics pipeline, and both the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features are enabled, and a valid <code>VkShaderEXT</code> is bound the to the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage, and that <code>VkShaderEXT</code> was created with the <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> flag, there <strong class=\"purple\">must</strong> be no <code>VkShaderEXT</code> bound to the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08696",
          "text": "If there is no bound graphics pipeline, and a valid <code>VkShaderEXT</code> is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, there <strong class=\"purple\">must</strong> be no <code>VkShaderEXT</code> bound to either the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage or the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08698",
          "text": "If any graphics shader is bound which was created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag, then all shaders created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag in the same <a href=\"#vkCreateShadersEXT\">vkCreateShadersEXT</a> call <strong class=\"purple\">must</strong> also be bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08699",
          "text": "If any graphics shader is bound which was created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag, any stages in between stages whose shaders which did not create a shader with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag as part of the same <a href=\"#vkCreateShadersEXT\">vkCreateShadersEXT</a> call <strong class=\"purple\">must</strong> not have any <code>VkShaderEXT</code> bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08878",
          "text": "All bound graphics shader objects <strong class=\"purple\">must</strong> have been created with identical or identically defined push constant ranges",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08879",
          "text": "All bound graphics shader objects <strong class=\"purple\">must</strong> have been created with identical or identically defined arrays of descriptor set layouts",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-colorAttachmentCount-09372",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, and a fragment shader is bound, it <strong class=\"purple\">must</strong> not declare the <code>DepthReplacing</code> or <code>StencilRefReplacingEXT</code> execution modes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-pDynamicStates-08715",
          "text": "If the bound graphics pipeline state includes a fragment shader stage, was created with <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpDepthAttachmentReadEXT</code>, the <code>depthWriteEnable</code> parameter in the last call to <a href=\"#vkCmdSetDepthWriteEnable\">vkCmdSetDepthWriteEnable</a> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-pDynamicStates-08716",
          "text": "If the bound graphics pipeline state includes a fragment shader stage, was created with <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpStencilAttachmentReadEXT</code>, the <code>writeMask</code> parameter in the last call to <a href=\"#vkCmdSetStencilWriteMask\">vkCmdSetStencilWriteMask</a> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-09116",
          "text": "If     a shader object is bound to any graphics stage or     the currently bound graphics pipeline was created with     <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code>,     and the format of any color attachment is     <code>VK_FORMAT_E5B9G9R9_UFLOAT_PACK32</code>, the corresponding element of the     <code>pColorWriteMasks</code> parameter of <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a>     <strong class=\"purple\">must</strong> either include all of <code>VK_COLOR_COMPONENT_R_BIT</code>,     <code>VK_COLOR_COMPONENT_G_BIT</code>, and <code>VK_COLOR_COMPONENT_B_BIT</code>, or     none of them",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-maxFragmentDualSrcAttachments-09239",
          "text": "If <a href=\"#framebuffer-blending\">blending</a> is enabled for any attachment where either the source or destination blend factors for that attachment <a href=\"#framebuffer-dsb\">use the secondary color input</a>, the maximum value of <code>Location</code> for any output attachment <a href=\"#shaders-staticuse\">statically used</a> in the <code>Fragment</code> <code>Execution</code> <code>Model</code> executed by this command <strong class=\"purple\">must</strong> be less than <a href=\"#limits-maxFragmentDualSrcAttachments\"><code>maxFragmentDualSrcAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-09548",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and there is no shader object bound to any graphics stage, the value of each element of <a href=\"#VkRenderingAttachmentLocationInfoKHR\">VkRenderingAttachmentLocationInfoKHR</a>::<code>pColorAttachmentLocations</code> set by <a href=\"#vkCmdSetRenderingAttachmentLocationsKHR\">vkCmdSetRenderingAttachmentLocationsKHR</a> <strong class=\"purple\">must</strong> match the value set for the corresponding element in the currently bound pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-09549",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and there is no shader object bound to any graphics stage, input attachment index mappings in the currently bound pipeline <strong class=\"purple\">must</strong> match those set for the current render pass instance via <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-09642",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with the <code>VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT</code> flag, the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-09643",
          "text": "If the bound graphics pipeline was created with <code>VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT</code>, the current render pass <strong class=\"purple\">must</strong> have begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with the <code>VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT</code> flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-stage-06480",
          "text": "The bound graphics pipeline <strong class=\"purple\">must</strong> not have been created with the <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a>::<code>stage</code> member of an element of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> set to <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07074",
          "text": "<a href=\"#queries-transform-feedback\">Transform Feedback Queries</a> <strong class=\"purple\">must</strong> not be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07075",
          "text": "<a href=\"#queries-primitives-generated\">Primitives Generated Queries</a> <strong class=\"purple\">must</strong> not be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-pipelineStatistics-07076",
          "text": "The <code>pipelineStatistics</code> member used to create any active <a href=\"#queries-pipestats\">Pipeline Statistics Query</a> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT</code>, or <code>VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-taskCount-02119",
          "text": "<code>taskCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesNV</code>::<code>maxDrawMeshTasksCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-MeshNV-07080",
          "text": "The current pipeline bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> <strong class=\"purple\">must</strong> contain a shader stage using the <code>MeshNV</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksNV-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdDrawMeshTasksIndirectNV": {
      "core": [
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-magFilter-04553",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-magFilter-09598",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-mipmapMode-04770",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-mipmapMode-09599",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-unnormalizedCoordinates-09635",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>levelCount</code> and <code>layerCount</code> <strong class=\"purple\">must</strong> be 1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-unnormalizedCoordinates-09636",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_VIEW_TYPE_1D</code> or <code>VK_IMAGE_VIEW_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-06479",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is sampled with <a href=\"#textures-depth-compare-operation\">depth comparison</a>, 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_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02691",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed using atomic operations as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07888",
          "text": "If a <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> descriptor is accessed using atomic operations as a result of this command, then the storage texel buffer&#8217;s <a href=\"#resources-buffer-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02692",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02693",
          "text": "If the <a href=\"#VK_EXT_filter_cubic\">VK_EXT_filter_cubic</a> extension is not enabled and any <a href=\"#VkImageView\">VkImageView</a> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, it <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-filterCubic-02694",
          "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 <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubic</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-filterCubicMinmax-02695",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubicMinmax</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-cubicRangeClamp-09212",
          "text": "If the <a href=\"#features-filter-cubic-range-clamp\"><code>cubicRangeClamp</code></a> feature is not enabled, then 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=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-reductionMode-09213",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with a <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code> as a result of this command <strong class=\"purple\">must</strong> sample with <code>VK_FILTER_CUBIC_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-selectableCubicWeights-09214",
          "text": "If the <a href=\"#features-filter-cubic-weight-selection\"><code>selectableCubicWeights</code></a> feature is not enabled, then 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 href=\"#VkSamplerCubicWeightsCreateInfoQCOM\">VkSamplerCubicWeightsCreateInfoQCOM</a>::<code>cubicWeights</code> equal to <code>VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-flags-02696",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpTypeImage-07027",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being written as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpTypeImage-07028",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being read as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpTypeImage-07029",
          "text": "For any <a href=\"#VkBufferView\">VkBufferView</a> being written as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpTypeImage-07030",
          "text": "Any <a href=\"#VkBufferView\">VkBufferView</a> being read as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code> then the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08600",
          "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08601",
          "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-10068",
          "text": "For each array of resources that is used by <a href=\"#shaders-binding\">a bound shader</a>, the indices used to access members of the array <strong class=\"purple\">must</strong> be less than the descriptor count for the identified binding in the descriptor sets used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-maintenance4-08602",
          "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08114",
          "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08115",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created without <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08116",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08604",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08117",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08119",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkPipeline\">VkPipeline</a> created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08605",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkShaderEXT\">VkShaderEXT</a> created with a <code>VkDescriptorSetLayout</code> that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08606",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is not enabled, a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08608",
          "text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state specified statically in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08609",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <a href=\"#VkImage\">VkImage</a> with a <a href=\"#VkImageView\">VkImageView</a> 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08610",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08611",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08607",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-uniformBuffers-06935",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08612",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-storageBuffers-06936",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>storageBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08613",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02707",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, any resource accessed by <a href=\"#shaders-binding\">bound shaders</a> <strong class=\"purple\">must</strong> not be a protected resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-06550",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> only be used with <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-ConstOffset-06551",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> not use the <code>ConstOffset</code> and <code>Offset</code> operands",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-viewType-07752",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> match the <code>Dim</code> operand of the <code>OpTypeImage</code> as described in <a href=\"#spirvenv-image-dimensions\">Compatibility Between SPIR-V Image Dimensions and Vulkan ImageView Types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-format-07753",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the <a href=\"#formats-numericformat\">numeric type</a> of the image view&#8217;s <code>format</code> and the <code>Sampled</code> <code>Type</code> operand of the <code>OpTypeImage</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpImageWrite-08795",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with a format other than <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpImageWrite-08796",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with the format <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have four components",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpImageWrite-04469",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the buffer view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-SampledType-04470",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-SampledType-04471",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-SampledType-04472",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-SampledType-04473",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sparseImageInt64Atomics-04474",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sparseImageInt64Atomics-04475",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpImageWeightedSampleQCOM-06971",
          "text": "If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpImageWeightedSampleQCOM-06972",
          "text": "If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image 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_2_WEIGHT_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpImageBoxFilterQCOM-06973",
          "text": "If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpImageBlockMatchSSDQCOM-06974",
          "text": "If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpImageBlockMatchSADQCOM-06975",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpImageBlockMatchSADQCOM-06976",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpImageWeightedSampleQCOM-06977",
          "text": "If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpImageWeightedSampleQCOM-06978",
          "text": "If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpImageBlockMatchWindow-09215",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpImageBlockMatchWindow-09216",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s format <strong class=\"purple\">must</strong> be a single-component format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpImageBlockMatchWindow-09217",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07288",
          "text": "Any shader invocation executed by this command <strong class=\"purple\">must</strong> <a href=\"#shaders-termination\">terminate</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-09600",
          "text": "If a descriptor with type equal to any of <code>VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> is accessed as a result of this command, the image subresource identified by that descriptor <strong class=\"purple\">must</strong> be in the image layout identified when the descriptor was written",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-renderPass-02684",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-subpass-02685",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07748",
          "text": "If any shader statically accesses an input attachment, a valid descriptor <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpTypeImage-07468",
          "text": "If any shader executed by this pipeline accesses an <code>OpTypeImage</code> variable with a <code>Dim</code> operand of <code>SubpassData</code>, it <strong class=\"purple\">must</strong> be decorated with an <code>InputAttachmentIndex</code> that corresponds to a valid input attachment in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07469",
          "text": "Input attachment views accessed in a subpass <strong class=\"purple\">must</strong> be created with the same <a href=\"#VkFormat\">VkFormat</a> as the corresponding subpass definition, and be created with a <a href=\"#VkImageView\">VkImageView</a> that is compatible with the attachment referenced by the subpass' <code>pInputAttachments</code>[<code>InputAttachmentIndex</code>] in the currently bound <a href=\"#VkFramebuffer\">VkFramebuffer</a> as specified by <a href=\"#compatibility-inputattachment\">Fragment Input Attachment Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-pDepthInputAttachmentIndex-09595",
          "text": "Input attachment views accessed in a dynamic render pass with a <code>InputAttachmentIndex</code> referenced by <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>, or no <code>InputAttachmentIndex</code> if <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pDepthInputAttachmentIndex</code> or <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pStencilInputAttachmentIndex</code> are <code>NULL</code>, <strong class=\"purple\">must</strong> be created with a <a href=\"#VkImageView\">VkImageView</a> that is compatible with the corresponding color, depth, or stencil attachment in <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-pDepthInputAttachmentIndex-09596",
          "text": "Input attachment views accessed in a dynamic render pass via a shader object <strong class=\"purple\">must</strong> have an <code>InputAttachmentIndex</code> if both <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pDepthInputAttachmentIndex</code> and <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pStencilInputAttachmentIndex</code> are non-<code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-InputAttachmentIndex-09597",
          "text": "If an input attachment view accessed in a dynamic render pass via a shader object has an <code>InputAttachmentIndex</code>, the <code>InputAttachmentIndex</code> <strong class=\"purple\">must</strong> match an index in <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-06537",
          "text": "Memory backing image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be written in any way other than as an attachment by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-09000",
          "text": "If a color attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe <code>VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code> is\nset on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_COLOR_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-09001",
          "text": "If a depth attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe\n<code>VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code>\nis set on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_DEPTH_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-09002",
          "text": "If a stencil attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe\n<code>VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code>\nis set on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_STENCIL_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-09003",
          "text": "If an attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment, storage image, or sampled image by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-06539",
          "text": "If any previously recorded command in the current subpass accessed an image subresource used as an attachment in this subpass in any way other than as an attachment, this command <strong class=\"purple\">must</strong> not write to that image subresource as an attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-06886",
          "text": "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, <a href=\"#fragops-depth-write\">depth writes</a> <strong class=\"purple\">must</strong> be disabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-06887",
          "text": "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back <code>writeMask</code> are not zero, and stencil test is enabled, <a href=\"#fragops-stencil\">all stencil ops</a> <strong class=\"purple\">must</strong> be <code>VK_STENCIL_OP_KEEP</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07831",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT</code> dynamic state enabled then <a href=\"#vkCmdSetViewport\">vkCmdSetViewport</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07832",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR</code> dynamic state enabled then <a href=\"#vkCmdSetScissor\">vkCmdSetScissor</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07833",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_WIDTH</code> dynamic state enabled then <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08617",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08618",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08619",
          "text": "If a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07834",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthBiasEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthBounds\">vkCmdSetDepthBounds</a> or <a href=\"#vkCmdSetDepthBias2EXT\">vkCmdSetDepthBias2EXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07835",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_BLEND_CONSTANTS</code> dynamic state enabled then <a href=\"#vkCmdSetBlendConstants\">vkCmdSetBlendConstants</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08621",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> in the current command buffer set any element of <code>pColorBlendEnables</code> to <code>VK_TRUE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> in the current command buffer set the same element of <code>pColorBlendEquations</code> to a <code>VkColorBlendEquationEXT</code> structure with any <a href=\"#VkBlendFactor\">VkBlendFactor</a> member with a value of <code>VK_BLEND_FACTOR_CONSTANT_COLOR</code>, <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR</code>, <code>VK_BLEND_FACTOR_CONSTANT_ALPHA</code>, or <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA</code>, <a href=\"#vkCmdSetBlendConstants\">vkCmdSetBlendConstants</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07836",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthBoundsTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthBounds\">vkCmdSetDepthBounds</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07837",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilCompareMask\">vkCmdSetStencilCompareMask</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07838",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilWriteMask\">vkCmdSetStencilWriteMask</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07839",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_REFERENCE</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of and <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilReference\">vkCmdSetStencilReference</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-maxMultiviewInstanceIndex-02688",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-02689",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-06666",
          "text": "If the <code><a href=\"#VK_EXT_sample_locations\">VK_EXT_sample_locations</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07840",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_CULL_MODE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCullMode\">vkCmdSetCullMode</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07841",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_FRONT_FACE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetFrontFace\">vkCmdSetFrontFace</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07843",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, <a href=\"#vkCmdSetDepthTestEnable\">vkCmdSetDepthTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07844",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthWriteEnable\">vkCmdSetDepthWriteEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07845",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_COMPARE_OP</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthCompareOp\">vkCmdSetDepthCompareOp</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07846",
          "text": "If the <a href=\"#features-depthBounds\"><code>depthBounds</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthBoundsTestEnable\">vkCmdSetDepthBoundsTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07847",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetStencilTestEnable\">vkCmdSetStencilTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07848",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_OP</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilOp\">vkCmdSetStencilOp</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-03417",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-scissorCount-03418",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, then <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-03419",
          "text": "If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> and <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08635",
          "text": "If a shader object is bound to any graphics stage, then both <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> and <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-04137",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-04138",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08636",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-04139",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-shadingRateImage-09233",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV</code> and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-shadingRateImage-09234",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08637",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-VkPipelineVieportCreateInfo-04141",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled and a <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> structure chained from <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-VkPipelineVieportCreateInfo-04142",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled and a <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> structure chained from <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07878",
          "text": "If the <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetExclusiveScissorEnableNV\">vkCmdSetExclusiveScissorEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07879",
          "text": "If the <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV</code> dynamic state enabled, and the most recent call to <a href=\"#vkCmdSetExclusiveScissorEnableNV\">vkCmdSetExclusiveScissorEnableNV</a> in the current command buffer set any element of <code>pExclusiveScissorEnables</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetExclusiveScissorNV\">vkCmdSetExclusiveScissorNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-04876",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-04877",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthBiasEnable\">vkCmdSetDepthBiasEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-logicOp-04878",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_LOGIC_OP_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>logicOpEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetLogicOpEXT\">vkCmdSetLogicOpEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-primitiveFragmentShadingRateWithMultipleViewports-04552",
          "text": "If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-primitiveFragmentShadingRateWithMultipleViewports-08642",
          "text": "If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, and any shader object bound to a graphics stage writes to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-blendEnable-04727",
          "text": "If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the <code>blendEnable</code> member of the corresponding element of the <code>pAttachments</code> member of <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08643",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then for each color attachment in the render pass, if the corresponding image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the corresponding member of <code>pColorBlendEnables</code> in the most recent call to <code>vkCmdSetColorBlendEnableEXT</code> in the current command buffer that affected that attachment index <strong class=\"purple\">must</strong> have been <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-multisampledRenderToSingleSampled-07284",
          "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then <code>rasterizationSamples</code> for the currently bound graphics pipeline\n<strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil\nattachments</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08644",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the\ncurrent command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the\nsame as the number of samples for the current render pass color and/or\ndepth/stencil attachments</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08876",
          "text": "If a shader object is bound to any graphics stage, the current render pass instance <strong class=\"purple\">must</strong> have been begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06172",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06173",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06174",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06175",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06176",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06177",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-viewMask-06178",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>viewMask</code> equal to <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>viewMask</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-colorAttachmentCount-06179",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>colorAttachmentCount</code> equal to <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-08910",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-08912",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-08911",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-colorAttachmentCount-09362",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, there is no shader object bound to any graphics stage, and a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>resolveImageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with an image created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value equal to the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-09363",
          "text": "If there is no shader object bound to any graphics stage, the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, and a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with an image created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value equal to the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-09364",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have set the blend enable to <code>VK_FALSE</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-09365",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to <code>VK_SAMPLE_COUNT_1_BIT</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-09366",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have set blend enable to <code>VK_FALSE</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-rasterizationSamples-09367",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to <code>VK_SAMPLE_COUNT_1_BIT</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-09368",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;width</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-09369",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;height</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-pFragmentSize-09370",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;width</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-pFragmentSize-09371",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;height</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07749",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteEnableEXT\">vkCmdSetColorWriteEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08646",
          "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is enabled on the device, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorWriteEnableEXT\">vkCmdSetColorWriteEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-attachmentCount-07750",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code> dynamic state enabled then the <code>attachmentCount</code> parameter of <code>vkCmdSetColorWriteEnableEXT</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>VkPipelineColorBlendStateCreateInfo</code>::<code>attachmentCount</code> of the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08647",
          "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is enabled on the device, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then the <code>attachmentCount</code> parameter of most recent call to <code>vkCmdSetColorWriteEnableEXT</code> in the current command buffer <strong class=\"purple\">must</strong> be greater than or equal to the number of color attachments in the current render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07751",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleEXT\">vkCmdSetDiscardRectangleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command for each discard rectangle in <a href=\"#VkPipelineDiscardRectangleStateCreateInfoEXT\">VkPipelineDiscardRectangleStateCreateInfoEXT</a>::<code>discardRectangleCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07880",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-rasterizerDiscardEnable-09236",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> in the current command buffer set <code>discardRectangleEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDiscardRectangleEXT\">vkCmdSetDiscardRectangleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08648",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07881",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleModeEXT\">vkCmdSetDiscardRectangleModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08649",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> in the current command buffer set <code>discardRectangleEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDiscardRectangleModeEXT\">vkCmdSetDiscardRectangleModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-08913",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-08914",
          "text": "If current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-08915",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline was not equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>, the value of the format <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-08916",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-08917",
          "text": "If current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-dynamicRenderingUnusedAttachments-08918",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline was not equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>, the value of the format <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06183",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a>::<code>imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06184",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingFragmentDensityMapAttachmentInfoEXT\">VkRenderingFragmentDensityMapAttachmentInfoEXT</a>::<code>imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-colorAttachmentCount-06185",
          "text": "If the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the corresponding element of the <code>pColorAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-pDepthAttachment-06186",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-pStencilAttachment-06187",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-multisampledRenderToSingleSampled-07285",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     the current render pass instance was begun with     <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than     <code>0</code>, then each element of the     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a     <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been     created with a sample count equal to the value of     <code>rasterizationSamples</code> for the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-multisampledRenderToSingleSampled-07286",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not     <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the     currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count     used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-multisampledRenderToSingleSampled-07287",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not     <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the     currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count     used to create     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-pNext-07935",
          "text": "If this command has been called inside a render pass instance started with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and the <code>pNext</code> chain of <a href=\"#VkRenderingInfo\">VkRenderingInfo</a> includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a>::<code>rasterizationSamples</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-renderPass-06198",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>renderPass</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-pColorAttachments-08963",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound with a fragment shader that statically writes to a color attachment, the color write mask is not zero, color writes are enabled, and the corresponding element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-pDepthAttachment-08964",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound, depth test is enabled, depth write is enabled, and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-pStencilAttachment-08965",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound, stencil test is enabled and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-primitivesGeneratedQueryWithRasterizerDiscard-06708",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithRasterizerDiscard\"><code>primitivesGeneratedQueryWithRasterizerDiscard</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, <a href=\"#primsrast-discard\">rasterization discard</a> <strong class=\"purple\">must</strong> not be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-primitivesGeneratedQueryWithNonZeroStreams-06709",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, the bound graphics pipeline <strong class=\"purple\">must</strong> not have been created with a non-zero value in <code>VkPipelineRasterizationStateStreamCreateInfoEXT</code>::<code>rasterizationStream</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07619",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetTessellationDomainOriginEXT\">vkCmdSetTessellationDomainOriginEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07620",
          "text": "If the <a href=\"#features-depthClamp\"><code>depthClamp</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthClampEnableEXT\">vkCmdSetDepthClampEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07621",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_POLYGON_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07622",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07623",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-alphaToCoverageEnable-08919",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic state enabled, and <code>alphaToCoverageEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-alphaToCoverageEnable-08920",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a> in the current command buffer set <code>alphaToCoverageEnable</code> to <code>VK_TRUE</code>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07624",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07625",
          "text": "If the <a href=\"#features-alphaToOne\"><code>alphaToOne</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAlphaToOneEnableEXT\">vkCmdSetAlphaToOneEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07626",
          "text": "If the <a href=\"#features-logicOp\"><code>logicOp</code></a> feature is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLogicOpEnableEXT\">vkCmdSetLogicOpEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07627",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08657",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07628",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08658",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> for any attachment set that attachment&#8217;s value in <code>pColorBlendEnables</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07629",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08659",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07630",
          "text": "If the <a href=\"#features-geometryStreams\"><code>geometryStreams</code></a> feature is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizationStreamEXT\">vkCmdSetRasterizationStreamEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07631",
          "text": "If the <code><a href=\"#VK_EXT_conservative_rasterization\">VK_EXT_conservative_rasterization</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetConservativeRasterizationModeEXT\">vkCmdSetConservativeRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07632",
          "text": "If the <code><a href=\"#VK_EXT_conservative_rasterization\">VK_EXT_conservative_rasterization</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>conservativeRasterizationMode</code> is <code>VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT</code>, then <a href=\"#vkCmdSetExtraPrimitiveOverestimationSizeEXT\">vkCmdSetExtraPrimitiveOverestimationSizeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07633",
          "text": "If the <a href=\"#features-depthClipEnable\"><code>depthClipEnable</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT</code> dynamic state, then <a href=\"#vkCmdSetDepthClipEnableEXT\">vkCmdSetDepthClipEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07634",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08664",
          "text": "If the <code><a href=\"#VK_EXT_sample_locations\">VK_EXT_sample_locations</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07635",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-rasterizerDiscardEnable-09416",
          "text": "If the <code><a href=\"#VK_EXT_blend_operation_advanced\">VK_EXT_blend_operation_advanced</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then at least one of <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> and <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07636",
          "text": "If the <code><a href=\"#VK_EXT_provoking_vertex\">VK_EXT_provoking_vertex</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetProvokingVertexModeEXT\">vkCmdSetProvokingVertexModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07637",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08666",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08667",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08668",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07638",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08669",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08670",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08671",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07849",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_KHR</code>     dynamic state enabled then <a href=\"#vkCmdSetLineStippleKHR\">vkCmdSetLineStippleKHR</a>     <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing     command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08672",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> in the current command buffer set <code>stippledLineEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetLineStippleEXT\">vkCmdSetLineStippleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07639",
          "text": "If the <a href=\"#features-depthClipControl\"><code>depthClipControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetDepthClipNegativeOneToOneEXT\">vkCmdSetDepthClipNegativeOneToOneEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-09650",
          "text": "If the <a href=\"#features-depthClampControl\"><code>depthClampControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthClampEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthClampRangeEXT\">vkCmdSetDepthClampRangeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07640",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07641",
          "text": "If the <code><a href=\"#VK_NV_viewport_swizzle\">VK_NV_viewport_swizzle</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07642",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07643",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageToColorEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07644",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageModulationModeNV\">vkCmdSetCoverageModulationModeNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07645",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageModulationMode</code> is any value other than <code>VK_COVERAGE_MODULATION_MODE_NONE_NV</code>, then <a href=\"#vkCmdSetCoverageModulationTableEnableNV\">vkCmdSetCoverageModulationTableEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07646",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageModulationTableEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetCoverageModulationTableNV\">vkCmdSetCoverageModulationTableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07647",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-pipelineFragmentShadingRate-09238",
          "text": "If the <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a> feature is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07648",
          "text": "If the <a href=\"#features-representativeFragmentTest\"><code>representativeFragmentTest</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetRepresentativeFragmentTestEnableNV\">vkCmdSetRepresentativeFragmentTestEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07649",
          "text": "If the <a href=\"#features-coverageReductionMode\"><code>coverageReductionMode</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageReductionModeNV\">vkCmdSetCoverageReductionModeNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-pColorBlendEnables-07470",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> state enabled and the last call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> set <code>pColorBlendEnables</code> for any attachment to <code>VK_TRUE</code>, then for those attachments in the subpass the corresponding 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_BLEND_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-rasterizationSamples-07471",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> follow the rules for a <a href=\"#renderpass-noattachments\">zero-attachment subpass</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-samples-07472",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, then the <code>samples</code> parameter in the last call to <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> be greater or equal to the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a>::<code>rasterizationSamples</code> parameter used to create the bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-samples-07473",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> state and <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> states enabled, then the <code>samples</code> parameter in the last call to <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> be greater or equal to the <code>rasterizationSamples</code> parameter in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-rasterizationSamples-07474",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and neither the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> nor the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extensions are enabled, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil attachments",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-09211",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, or a shader object is bound to any graphics stage, and the current render pass instance includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> be the same as the <code>rasterizationSamples</code> member of that structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-firstAttachment-07476",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEnableEXT</code> calls <strong class=\"purple\">must</strong> specify an enable for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-rasterizerDiscardEnable-09417",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEnableEXT</code> calls <strong class=\"purple\">must</strong> specify an enable for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-firstAttachment-07477",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEquationEXT</code> calls <strong class=\"purple\">must</strong> specify the blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-rasterizerDiscardEnable-09418",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEquationEXT</code> calls <strong class=\"purple\">must</strong> specify the blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-firstAttachment-07478",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorWriteMaskEXT</code> calls <strong class=\"purple\">must</strong> specify the color write mask for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-rasterizerDiscardEnable-09419",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorWriteMaskEXT</code> calls <strong class=\"purple\">must</strong> specify the color write mask for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-firstAttachment-07479",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendAdvancedEXT</code> calls <strong class=\"purple\">must</strong> specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-advancedBlendMaxColorAttachments-07480",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> and <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic states enabled and the last calls to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> and <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> have enabled advanced blending, then the number of active color attachments in the current subpass <strong class=\"purple\">must</strong> not exceed <a href=\"#limits-advancedBlendMaxColorAttachments\"><code>advancedBlendMaxColorAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-primitivesGeneratedQueryWithNonZeroStreams-07481",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, and the bound graphics pipeline was created with <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code> state enabled, the last call to <a href=\"#vkCmdSetRasterizationStreamEXT\">vkCmdSetRasterizationStreamEXT</a> <strong class=\"purple\">must</strong> have set the <code>rasterizationStream</code> to zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsPerPixel-07482",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsPerPixel-07483",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-07484",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-07485",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, then the <code>sampleLocationsInfo.sampleLocationGridSize.width</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-07486",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, then the <code>sampleLocationsInfo.sampleLocationGridSize.height</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-07487",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, the fragment shader code <strong class=\"purple\">must</strong> not statically use the extended instruction <code>InterpolateAtSample</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-07936",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <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 the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-07937",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <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 the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-07938",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-coverageModulationTableEnable-07488",
          "text": "If a shader object is bound to any graphics stage or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code> state enabled, and the last call to <a href=\"#vkCmdSetCoverageModulationTableEnableNV\">vkCmdSetCoverageModulationTableEnableNV</a> set <code>coverageModulationTableEnable</code> to <code>VK_TRUE</code>, then the <code>coverageModulationTableCount</code> parameter in the last call to <a href=\"#vkCmdSetCoverageModulationTableNV\">vkCmdSetCoverageModulationTableNV</a> <strong class=\"purple\">must</strong> equal the current <code>rasterizationSamples</code> divided by the number of color samples in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-rasterizationSamples-07489",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current <code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be the same as the sample count of the depth/stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-coverageToColorEnable-07490",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> state enabled and the last call to <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> set the <code>coverageToColorEnable</code> to <code>VK_TRUE</code>, then the current subpass <strong class=\"purple\">must</strong> have a color attachment at the location selected by the last call to <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-rasterizerDiscardEnable-09420",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the last call to <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> set the <code>coverageToColorEnable</code> to <code>VK_TRUE</code>, then the current subpass <strong class=\"purple\">must</strong> have a color attachment at the location selected by the last call to <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-coverageReductionMode-07491",
          "text": "If this <code><a href=\"#VK_NV_coverage_reduction_mode\">VK_NV_coverage_reduction_mode</a></code> extension is enabled, the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> and <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> states enabled, the current coverage reduction mode <code>coverageReductionMode</code>, then the current <code>rasterizationSamples</code>, and the sample counts for the color and depth/stencil attachments (if the subpass has them) <strong class=\"purple\">must</strong> be a valid combination returned by <a href=\"#vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV\">vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-07492",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-07493",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-09421",
          "text": "If the <code><a href=\"#VK_NV_viewport_swizzle\">VK_NV_viewport_swizzle</a></code> extension is enabled, and a shader object is bound to any graphics stage, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-rasterizationSamples-07494",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, and if the current subpass has any color attachments and <code>rasterizationSamples</code> of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> is greater than the number of color samples, then the pipeline <code>sampleShadingEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-stippledLineEnable-07495",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-stippledLineEnable-07496",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR</code>, then the <a href=\"#features-stippledBresenhamLines\"><code>stippledBresenhamLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-stippledLineEnable-07497",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR</code>, then the <a href=\"#features-stippledSmoothLines\"><code>stippledSmoothLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-stippledLineEnable-07498",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_DEFAULT_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled and <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>strictLines</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-conservativePointAndLineRasterization-07499",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code> dynamic state enabled, <a href=\"#limits-conservativePointAndLineRasterization\"><code>conservativePointAndLineRasterization</code></a> is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the <code>conservativeRasterizationMode</code> set by the last call to <a href=\"#vkCmdSetConservativeRasterizationModeEXT\">vkCmdSetConservativeRasterizationModeEXT</a> <strong class=\"purple\">must</strong> be <code>VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-stage-07073",
          "text": "If the currently bound pipeline was created with the <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a>::<code>stage</code> member of an element of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> set to <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>, then <a href=\"#queries-mesh-shader\">Mesh Shader Queries</a> <strong class=\"purple\">must</strong> not be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08877",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07850",
          "text": "If dynamic state was inherited from <a href=\"#VkCommandBufferInheritanceViewportScissorInfoNV\">VkCommandBufferInheritanceViewportScissorInfoNV</a>, it <strong class=\"purple\">must</strong> be set in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08684",
          "text": "If there is no bound graphics pipeline, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_VERTEX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08685",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08686",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08687",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08688",
          "text": "If there is no bound graphics pipeline, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08689",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TASK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08690",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08693",
          "text": "If there is no bound graphics pipeline, and at least one of the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features is enabled, one of the <code>VK_SHADER_STAGE_VERTEX_BIT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stages <strong class=\"purple\">must</strong> have a valid <code>VkShaderEXT</code> bound, and the other <strong class=\"purple\">must</strong> have no <code>VkShaderEXT</code> bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08694",
          "text": "If there is no bound graphics pipeline, and both the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features are enabled, and a valid <code>VkShaderEXT</code> is bound the to the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage, and that <code>VkShaderEXT</code> was created without the <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> flag, a valid <code>VkShaderEXT</code> <strong class=\"purple\">must</strong> be bound to the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08695",
          "text": "If there is no bound graphics pipeline, and both the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features are enabled, and a valid <code>VkShaderEXT</code> is bound the to the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage, and that <code>VkShaderEXT</code> was created with the <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> flag, there <strong class=\"purple\">must</strong> be no <code>VkShaderEXT</code> bound to the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08696",
          "text": "If there is no bound graphics pipeline, and a valid <code>VkShaderEXT</code> is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, there <strong class=\"purple\">must</strong> be no <code>VkShaderEXT</code> bound to either the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage or the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08698",
          "text": "If any graphics shader is bound which was created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag, then all shaders created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag in the same <a href=\"#vkCreateShadersEXT\">vkCreateShadersEXT</a> call <strong class=\"purple\">must</strong> also be bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08699",
          "text": "If any graphics shader is bound which was created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag, any stages in between stages whose shaders which did not create a shader with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag as part of the same <a href=\"#vkCreateShadersEXT\">vkCreateShadersEXT</a> call <strong class=\"purple\">must</strong> not have any <code>VkShaderEXT</code> bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08878",
          "text": "All bound graphics shader objects <strong class=\"purple\">must</strong> have been created with identical or identically defined push constant ranges",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08879",
          "text": "All bound graphics shader objects <strong class=\"purple\">must</strong> have been created with identical or identically defined arrays of descriptor set layouts",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-colorAttachmentCount-09372",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, and a fragment shader is bound, it <strong class=\"purple\">must</strong> not declare the <code>DepthReplacing</code> or <code>StencilRefReplacingEXT</code> execution modes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-pDynamicStates-08715",
          "text": "If the bound graphics pipeline state includes a fragment shader stage, was created with <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpDepthAttachmentReadEXT</code>, the <code>depthWriteEnable</code> parameter in the last call to <a href=\"#vkCmdSetDepthWriteEnable\">vkCmdSetDepthWriteEnable</a> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-pDynamicStates-08716",
          "text": "If the bound graphics pipeline state includes a fragment shader stage, was created with <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpStencilAttachmentReadEXT</code>, the <code>writeMask</code> parameter in the last call to <a href=\"#vkCmdSetStencilWriteMask\">vkCmdSetStencilWriteMask</a> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-09116",
          "text": "If     a shader object is bound to any graphics stage or     the currently bound graphics pipeline was created with     <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code>,     and the format of any color attachment is     <code>VK_FORMAT_E5B9G9R9_UFLOAT_PACK32</code>, the corresponding element of the     <code>pColorWriteMasks</code> parameter of <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a>     <strong class=\"purple\">must</strong> either include all of <code>VK_COLOR_COMPONENT_R_BIT</code>,     <code>VK_COLOR_COMPONENT_G_BIT</code>, and <code>VK_COLOR_COMPONENT_B_BIT</code>, or     none of them",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-maxFragmentDualSrcAttachments-09239",
          "text": "If <a href=\"#framebuffer-blending\">blending</a> is enabled for any attachment where either the source or destination blend factors for that attachment <a href=\"#framebuffer-dsb\">use the secondary color input</a>, the maximum value of <code>Location</code> for any output attachment <a href=\"#shaders-staticuse\">statically used</a> in the <code>Fragment</code> <code>Execution</code> <code>Model</code> executed by this command <strong class=\"purple\">must</strong> be less than <a href=\"#limits-maxFragmentDualSrcAttachments\"><code>maxFragmentDualSrcAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-09548",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and there is no shader object bound to any graphics stage, the value of each element of <a href=\"#VkRenderingAttachmentLocationInfoKHR\">VkRenderingAttachmentLocationInfoKHR</a>::<code>pColorAttachmentLocations</code> set by <a href=\"#vkCmdSetRenderingAttachmentLocationsKHR\">vkCmdSetRenderingAttachmentLocationsKHR</a> <strong class=\"purple\">must</strong> match the value set for the corresponding element in the currently bound pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-09549",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and there is no shader object bound to any graphics stage, input attachment index mappings in the currently bound pipeline <strong class=\"purple\">must</strong> match those set for the current render pass instance via <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-09642",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with the <code>VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT</code> flag, the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-09643",
          "text": "If the bound graphics pipeline was created with <code>VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT</code>, the current render pass <strong class=\"purple\">must</strong> have begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with the <code>VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT</code> flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-stage-06480",
          "text": "The bound graphics pipeline <strong class=\"purple\">must</strong> not have been created with the <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a>::<code>stage</code> member of an element of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> set to <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07074",
          "text": "<a href=\"#queries-transform-feedback\">Transform Feedback Queries</a> <strong class=\"purple\">must</strong> not be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07075",
          "text": "<a href=\"#queries-primitives-generated\">Primitives Generated Queries</a> <strong class=\"purple\">must</strong> not be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-pipelineStatistics-07076",
          "text": "The <code>pipelineStatistics</code> member used to create any active <a href=\"#queries-pipestats\">Pipeline Statistics Query</a> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT</code>, or <code>VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-buffer-02708",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-buffer-02709",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-offset-02710",
          "text": "<code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02711",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02718",
          "text": "If the <a href=\"#features-multiDrawIndirect\"><code>multiDrawIndirect</code></a> feature is not enabled, <code>drawCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02719",
          "text": "<code>drawCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02146",
          "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>)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02156",
          "text": "If <code>drawCount</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> +  <code>sizeof</code>(<a href=\"#VkDrawMeshTasksIndirectCommandNV\">VkDrawMeshTasksIndirectCommandNV</a>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02157",
          "text": "If <code>drawCount</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> × (<code>drawCount</code> - 1) +  <code>offset</code> +  <code>sizeof</code>(<a href=\"#VkDrawMeshTasksIndirectCommandNV\">VkDrawMeshTasksIndirectCommandNV</a>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-MeshNV-07081",
          "text": "The current pipeline bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> <strong class=\"purple\">must</strong> contain a shader stage using the <code>MeshNV</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-buffer-parameter",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commonparent",
          "text": "Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkDrawMeshTasksIndirectCommandNV": {
      "core": [
        {
          "vuid": "VUID-VkDrawMeshTasksIndirectCommandNV-taskCount-02175",
          "text": "<code>taskCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesNV</code>::<code>maxDrawMeshTasksCount</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdDrawMeshTasksIndirectCountNV": {
      "core": [
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-magFilter-04553",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-magFilter-09598",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-mipmapMode-04770",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-mipmapMode-09599",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-unnormalizedCoordinates-09635",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>levelCount</code> and <code>layerCount</code> <strong class=\"purple\">must</strong> be 1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-unnormalizedCoordinates-09636",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_VIEW_TYPE_1D</code> or <code>VK_IMAGE_VIEW_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-06479",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is sampled with <a href=\"#textures-depth-compare-operation\">depth comparison</a>, 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_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02691",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed using atomic operations as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07888",
          "text": "If a <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> descriptor is accessed using atomic operations as a result of this command, then the storage texel buffer&#8217;s <a href=\"#resources-buffer-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02692",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02693",
          "text": "If the <a href=\"#VK_EXT_filter_cubic\">VK_EXT_filter_cubic</a> extension is not enabled and any <a href=\"#VkImageView\">VkImageView</a> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, it <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-filterCubic-02694",
          "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 <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubic</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-filterCubicMinmax-02695",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubicMinmax</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-cubicRangeClamp-09212",
          "text": "If the <a href=\"#features-filter-cubic-range-clamp\"><code>cubicRangeClamp</code></a> feature is not enabled, then 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=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-reductionMode-09213",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with a <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code> as a result of this command <strong class=\"purple\">must</strong> sample with <code>VK_FILTER_CUBIC_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-selectableCubicWeights-09214",
          "text": "If the <a href=\"#features-filter-cubic-weight-selection\"><code>selectableCubicWeights</code></a> feature is not enabled, then 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 href=\"#VkSamplerCubicWeightsCreateInfoQCOM\">VkSamplerCubicWeightsCreateInfoQCOM</a>::<code>cubicWeights</code> equal to <code>VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-flags-02696",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpTypeImage-07027",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being written as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpTypeImage-07028",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being read as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpTypeImage-07029",
          "text": "For any <a href=\"#VkBufferView\">VkBufferView</a> being written as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpTypeImage-07030",
          "text": "Any <a href=\"#VkBufferView\">VkBufferView</a> being read as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code> then the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08600",
          "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08601",
          "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-10068",
          "text": "For each array of resources that is used by <a href=\"#shaders-binding\">a bound shader</a>, the indices used to access members of the array <strong class=\"purple\">must</strong> be less than the descriptor count for the identified binding in the descriptor sets used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-maintenance4-08602",
          "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08114",
          "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08115",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created without <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08116",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08604",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08117",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08119",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkPipeline\">VkPipeline</a> created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08605",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkShaderEXT\">VkShaderEXT</a> created with a <code>VkDescriptorSetLayout</code> that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08606",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is not enabled, a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08608",
          "text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state specified statically in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08609",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <a href=\"#VkImage\">VkImage</a> with a <a href=\"#VkImageView\">VkImageView</a> 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08610",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08611",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08607",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-uniformBuffers-06935",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08612",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-storageBuffers-06936",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>storageBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08613",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02707",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, any resource accessed by <a href=\"#shaders-binding\">bound shaders</a> <strong class=\"purple\">must</strong> not be a protected resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-06550",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> only be used with <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-ConstOffset-06551",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> not use the <code>ConstOffset</code> and <code>Offset</code> operands",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewType-07752",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> match the <code>Dim</code> operand of the <code>OpTypeImage</code> as described in <a href=\"#spirvenv-image-dimensions\">Compatibility Between SPIR-V Image Dimensions and Vulkan ImageView Types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-format-07753",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the <a href=\"#formats-numericformat\">numeric type</a> of the image view&#8217;s <code>format</code> and the <code>Sampled</code> <code>Type</code> operand of the <code>OpTypeImage</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageWrite-08795",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with a format other than <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageWrite-08796",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with the format <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have four components",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageWrite-04469",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the buffer view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-SampledType-04470",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-SampledType-04471",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-SampledType-04472",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-SampledType-04473",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sparseImageInt64Atomics-04474",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sparseImageInt64Atomics-04475",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageWeightedSampleQCOM-06971",
          "text": "If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageWeightedSampleQCOM-06972",
          "text": "If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image 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_2_WEIGHT_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageBoxFilterQCOM-06973",
          "text": "If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageBlockMatchSSDQCOM-06974",
          "text": "If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageBlockMatchSADQCOM-06975",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageBlockMatchSADQCOM-06976",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageWeightedSampleQCOM-06977",
          "text": "If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageWeightedSampleQCOM-06978",
          "text": "If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageBlockMatchWindow-09215",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageBlockMatchWindow-09216",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s format <strong class=\"purple\">must</strong> be a single-component format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageBlockMatchWindow-09217",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07288",
          "text": "Any shader invocation executed by this command <strong class=\"purple\">must</strong> <a href=\"#shaders-termination\">terminate</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09600",
          "text": "If a descriptor with type equal to any of <code>VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> is accessed as a result of this command, the image subresource identified by that descriptor <strong class=\"purple\">must</strong> be in the image layout identified when the descriptor was written",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-renderPass-02684",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-subpass-02685",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07748",
          "text": "If any shader statically accesses an input attachment, a valid descriptor <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpTypeImage-07468",
          "text": "If any shader executed by this pipeline accesses an <code>OpTypeImage</code> variable with a <code>Dim</code> operand of <code>SubpassData</code>, it <strong class=\"purple\">must</strong> be decorated with an <code>InputAttachmentIndex</code> that corresponds to a valid input attachment in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07469",
          "text": "Input attachment views accessed in a subpass <strong class=\"purple\">must</strong> be created with the same <a href=\"#VkFormat\">VkFormat</a> as the corresponding subpass definition, and be created with a <a href=\"#VkImageView\">VkImageView</a> that is compatible with the attachment referenced by the subpass' <code>pInputAttachments</code>[<code>InputAttachmentIndex</code>] in the currently bound <a href=\"#VkFramebuffer\">VkFramebuffer</a> as specified by <a href=\"#compatibility-inputattachment\">Fragment Input Attachment Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-pDepthInputAttachmentIndex-09595",
          "text": "Input attachment views accessed in a dynamic render pass with a <code>InputAttachmentIndex</code> referenced by <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>, or no <code>InputAttachmentIndex</code> if <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pDepthInputAttachmentIndex</code> or <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pStencilInputAttachmentIndex</code> are <code>NULL</code>, <strong class=\"purple\">must</strong> be created with a <a href=\"#VkImageView\">VkImageView</a> that is compatible with the corresponding color, depth, or stencil attachment in <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-pDepthInputAttachmentIndex-09596",
          "text": "Input attachment views accessed in a dynamic render pass via a shader object <strong class=\"purple\">must</strong> have an <code>InputAttachmentIndex</code> if both <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pDepthInputAttachmentIndex</code> and <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pStencilInputAttachmentIndex</code> are non-<code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-InputAttachmentIndex-09597",
          "text": "If an input attachment view accessed in a dynamic render pass via a shader object has an <code>InputAttachmentIndex</code>, the <code>InputAttachmentIndex</code> <strong class=\"purple\">must</strong> match an index in <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-06537",
          "text": "Memory backing image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be written in any way other than as an attachment by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09000",
          "text": "If a color attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe <code>VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code> is\nset on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_COLOR_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09001",
          "text": "If a depth attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe\n<code>VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code>\nis set on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_DEPTH_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09002",
          "text": "If a stencil attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe\n<code>VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code>\nis set on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_STENCIL_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09003",
          "text": "If an attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment, storage image, or sampled image by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-06539",
          "text": "If any previously recorded command in the current subpass accessed an image subresource used as an attachment in this subpass in any way other than as an attachment, this command <strong class=\"purple\">must</strong> not write to that image subresource as an attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-06886",
          "text": "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, <a href=\"#fragops-depth-write\">depth writes</a> <strong class=\"purple\">must</strong> be disabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-06887",
          "text": "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back <code>writeMask</code> are not zero, and stencil test is enabled, <a href=\"#fragops-stencil\">all stencil ops</a> <strong class=\"purple\">must</strong> be <code>VK_STENCIL_OP_KEEP</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07831",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT</code> dynamic state enabled then <a href=\"#vkCmdSetViewport\">vkCmdSetViewport</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07832",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR</code> dynamic state enabled then <a href=\"#vkCmdSetScissor\">vkCmdSetScissor</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07833",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_WIDTH</code> dynamic state enabled then <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08617",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08618",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08619",
          "text": "If a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07834",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthBiasEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthBounds\">vkCmdSetDepthBounds</a> or <a href=\"#vkCmdSetDepthBias2EXT\">vkCmdSetDepthBias2EXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07835",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_BLEND_CONSTANTS</code> dynamic state enabled then <a href=\"#vkCmdSetBlendConstants\">vkCmdSetBlendConstants</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08621",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> in the current command buffer set any element of <code>pColorBlendEnables</code> to <code>VK_TRUE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> in the current command buffer set the same element of <code>pColorBlendEquations</code> to a <code>VkColorBlendEquationEXT</code> structure with any <a href=\"#VkBlendFactor\">VkBlendFactor</a> member with a value of <code>VK_BLEND_FACTOR_CONSTANT_COLOR</code>, <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR</code>, <code>VK_BLEND_FACTOR_CONSTANT_ALPHA</code>, or <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA</code>, <a href=\"#vkCmdSetBlendConstants\">vkCmdSetBlendConstants</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07836",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthBoundsTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthBounds\">vkCmdSetDepthBounds</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07837",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilCompareMask\">vkCmdSetStencilCompareMask</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07838",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilWriteMask\">vkCmdSetStencilWriteMask</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07839",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_REFERENCE</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of and <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilReference\">vkCmdSetStencilReference</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-maxMultiviewInstanceIndex-02688",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-02689",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-06666",
          "text": "If the <code><a href=\"#VK_EXT_sample_locations\">VK_EXT_sample_locations</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07840",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_CULL_MODE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCullMode\">vkCmdSetCullMode</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07841",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_FRONT_FACE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetFrontFace\">vkCmdSetFrontFace</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07843",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, <a href=\"#vkCmdSetDepthTestEnable\">vkCmdSetDepthTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07844",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthWriteEnable\">vkCmdSetDepthWriteEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07845",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_COMPARE_OP</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthCompareOp\">vkCmdSetDepthCompareOp</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07846",
          "text": "If the <a href=\"#features-depthBounds\"><code>depthBounds</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthBoundsTestEnable\">vkCmdSetDepthBoundsTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07847",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetStencilTestEnable\">vkCmdSetStencilTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07848",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_OP</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilOp\">vkCmdSetStencilOp</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-03417",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-scissorCount-03418",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, then <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-03419",
          "text": "If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> and <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08635",
          "text": "If a shader object is bound to any graphics stage, then both <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> and <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-04137",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-04138",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08636",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-04139",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-shadingRateImage-09233",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV</code> and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-shadingRateImage-09234",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08637",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-VkPipelineVieportCreateInfo-04141",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled and a <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> structure chained from <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-VkPipelineVieportCreateInfo-04142",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled and a <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> structure chained from <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07878",
          "text": "If the <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetExclusiveScissorEnableNV\">vkCmdSetExclusiveScissorEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07879",
          "text": "If the <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV</code> dynamic state enabled, and the most recent call to <a href=\"#vkCmdSetExclusiveScissorEnableNV\">vkCmdSetExclusiveScissorEnableNV</a> in the current command buffer set any element of <code>pExclusiveScissorEnables</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetExclusiveScissorNV\">vkCmdSetExclusiveScissorNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04876",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04877",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthBiasEnable\">vkCmdSetDepthBiasEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-logicOp-04878",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_LOGIC_OP_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>logicOpEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetLogicOpEXT\">vkCmdSetLogicOpEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-primitiveFragmentShadingRateWithMultipleViewports-04552",
          "text": "If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-primitiveFragmentShadingRateWithMultipleViewports-08642",
          "text": "If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, and any shader object bound to a graphics stage writes to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-blendEnable-04727",
          "text": "If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the <code>blendEnable</code> member of the corresponding element of the <code>pAttachments</code> member of <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08643",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then for each color attachment in the render pass, if the corresponding image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the corresponding member of <code>pColorBlendEnables</code> in the most recent call to <code>vkCmdSetColorBlendEnableEXT</code> in the current command buffer that affected that attachment index <strong class=\"purple\">must</strong> have been <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-multisampledRenderToSingleSampled-07284",
          "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then <code>rasterizationSamples</code> for the currently bound graphics pipeline\n<strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil\nattachments</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08644",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the\ncurrent command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the\nsame as the number of samples for the current render pass color and/or\ndepth/stencil attachments</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08876",
          "text": "If a shader object is bound to any graphics stage, the current render pass instance <strong class=\"purple\">must</strong> have been begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06172",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06173",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06174",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06175",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06176",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06177",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewMask-06178",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>viewMask</code> equal to <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>viewMask</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-colorAttachmentCount-06179",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>colorAttachmentCount</code> equal to <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-08910",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-08912",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-08911",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-colorAttachmentCount-09362",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, there is no shader object bound to any graphics stage, and a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>resolveImageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with an image created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value equal to the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09363",
          "text": "If there is no shader object bound to any graphics stage, the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, and a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with an image created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value equal to the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09364",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have set the blend enable to <code>VK_FALSE</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09365",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to <code>VK_SAMPLE_COUNT_1_BIT</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09366",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have set blend enable to <code>VK_FALSE</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizationSamples-09367",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to <code>VK_SAMPLE_COUNT_1_BIT</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09368",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;width</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09369",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;height</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-pFragmentSize-09370",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;width</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-pFragmentSize-09371",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;height</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07749",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteEnableEXT\">vkCmdSetColorWriteEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08646",
          "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is enabled on the device, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorWriteEnableEXT\">vkCmdSetColorWriteEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-attachmentCount-07750",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code> dynamic state enabled then the <code>attachmentCount</code> parameter of <code>vkCmdSetColorWriteEnableEXT</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>VkPipelineColorBlendStateCreateInfo</code>::<code>attachmentCount</code> of the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08647",
          "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is enabled on the device, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then the <code>attachmentCount</code> parameter of most recent call to <code>vkCmdSetColorWriteEnableEXT</code> in the current command buffer <strong class=\"purple\">must</strong> be greater than or equal to the number of color attachments in the current render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07751",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleEXT\">vkCmdSetDiscardRectangleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command for each discard rectangle in <a href=\"#VkPipelineDiscardRectangleStateCreateInfoEXT\">VkPipelineDiscardRectangleStateCreateInfoEXT</a>::<code>discardRectangleCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07880",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizerDiscardEnable-09236",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> in the current command buffer set <code>discardRectangleEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDiscardRectangleEXT\">vkCmdSetDiscardRectangleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08648",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07881",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleModeEXT\">vkCmdSetDiscardRectangleModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08649",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> in the current command buffer set <code>discardRectangleEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDiscardRectangleModeEXT\">vkCmdSetDiscardRectangleModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-08913",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-08914",
          "text": "If current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-08915",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline was not equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>, the value of the format <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-08916",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-08917",
          "text": "If current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-dynamicRenderingUnusedAttachments-08918",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline was not equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>, the value of the format <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06183",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a>::<code>imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06184",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingFragmentDensityMapAttachmentInfoEXT\">VkRenderingFragmentDensityMapAttachmentInfoEXT</a>::<code>imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-colorAttachmentCount-06185",
          "text": "If the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the corresponding element of the <code>pColorAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-pDepthAttachment-06186",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-pStencilAttachment-06187",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-multisampledRenderToSingleSampled-07285",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     the current render pass instance was begun with     <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than     <code>0</code>, then each element of the     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a     <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been     created with a sample count equal to the value of     <code>rasterizationSamples</code> for the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-multisampledRenderToSingleSampled-07286",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not     <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the     currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count     used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-multisampledRenderToSingleSampled-07287",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not     <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the     currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count     used to create     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-pNext-07935",
          "text": "If this command has been called inside a render pass instance started with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and the <code>pNext</code> chain of <a href=\"#VkRenderingInfo\">VkRenderingInfo</a> includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a>::<code>rasterizationSamples</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-renderPass-06198",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>renderPass</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-pColorAttachments-08963",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound with a fragment shader that statically writes to a color attachment, the color write mask is not zero, color writes are enabled, and the corresponding element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-pDepthAttachment-08964",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound, depth test is enabled, depth write is enabled, and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-pStencilAttachment-08965",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound, stencil test is enabled and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-primitivesGeneratedQueryWithRasterizerDiscard-06708",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithRasterizerDiscard\"><code>primitivesGeneratedQueryWithRasterizerDiscard</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, <a href=\"#primsrast-discard\">rasterization discard</a> <strong class=\"purple\">must</strong> not be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-primitivesGeneratedQueryWithNonZeroStreams-06709",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, the bound graphics pipeline <strong class=\"purple\">must</strong> not have been created with a non-zero value in <code>VkPipelineRasterizationStateStreamCreateInfoEXT</code>::<code>rasterizationStream</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07619",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetTessellationDomainOriginEXT\">vkCmdSetTessellationDomainOriginEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07620",
          "text": "If the <a href=\"#features-depthClamp\"><code>depthClamp</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthClampEnableEXT\">vkCmdSetDepthClampEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07621",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_POLYGON_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07622",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07623",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-alphaToCoverageEnable-08919",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic state enabled, and <code>alphaToCoverageEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-alphaToCoverageEnable-08920",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a> in the current command buffer set <code>alphaToCoverageEnable</code> to <code>VK_TRUE</code>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07624",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07625",
          "text": "If the <a href=\"#features-alphaToOne\"><code>alphaToOne</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAlphaToOneEnableEXT\">vkCmdSetAlphaToOneEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07626",
          "text": "If the <a href=\"#features-logicOp\"><code>logicOp</code></a> feature is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLogicOpEnableEXT\">vkCmdSetLogicOpEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07627",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08657",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07628",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08658",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> for any attachment set that attachment&#8217;s value in <code>pColorBlendEnables</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07629",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08659",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07630",
          "text": "If the <a href=\"#features-geometryStreams\"><code>geometryStreams</code></a> feature is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizationStreamEXT\">vkCmdSetRasterizationStreamEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07631",
          "text": "If the <code><a href=\"#VK_EXT_conservative_rasterization\">VK_EXT_conservative_rasterization</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetConservativeRasterizationModeEXT\">vkCmdSetConservativeRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07632",
          "text": "If the <code><a href=\"#VK_EXT_conservative_rasterization\">VK_EXT_conservative_rasterization</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>conservativeRasterizationMode</code> is <code>VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT</code>, then <a href=\"#vkCmdSetExtraPrimitiveOverestimationSizeEXT\">vkCmdSetExtraPrimitiveOverestimationSizeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07633",
          "text": "If the <a href=\"#features-depthClipEnable\"><code>depthClipEnable</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT</code> dynamic state, then <a href=\"#vkCmdSetDepthClipEnableEXT\">vkCmdSetDepthClipEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07634",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08664",
          "text": "If the <code><a href=\"#VK_EXT_sample_locations\">VK_EXT_sample_locations</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07635",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizerDiscardEnable-09416",
          "text": "If the <code><a href=\"#VK_EXT_blend_operation_advanced\">VK_EXT_blend_operation_advanced</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then at least one of <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> and <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07636",
          "text": "If the <code><a href=\"#VK_EXT_provoking_vertex\">VK_EXT_provoking_vertex</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetProvokingVertexModeEXT\">vkCmdSetProvokingVertexModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07637",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08666",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08667",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08668",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07638",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08669",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08670",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08671",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07849",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_KHR</code>     dynamic state enabled then <a href=\"#vkCmdSetLineStippleKHR\">vkCmdSetLineStippleKHR</a>     <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing     command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08672",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> in the current command buffer set <code>stippledLineEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetLineStippleEXT\">vkCmdSetLineStippleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07639",
          "text": "If the <a href=\"#features-depthClipControl\"><code>depthClipControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetDepthClipNegativeOneToOneEXT\">vkCmdSetDepthClipNegativeOneToOneEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09650",
          "text": "If the <a href=\"#features-depthClampControl\"><code>depthClampControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthClampEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthClampRangeEXT\">vkCmdSetDepthClampRangeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07640",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07641",
          "text": "If the <code><a href=\"#VK_NV_viewport_swizzle\">VK_NV_viewport_swizzle</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07642",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07643",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageToColorEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07644",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageModulationModeNV\">vkCmdSetCoverageModulationModeNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07645",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageModulationMode</code> is any value other than <code>VK_COVERAGE_MODULATION_MODE_NONE_NV</code>, then <a href=\"#vkCmdSetCoverageModulationTableEnableNV\">vkCmdSetCoverageModulationTableEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07646",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageModulationTableEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetCoverageModulationTableNV\">vkCmdSetCoverageModulationTableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07647",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-pipelineFragmentShadingRate-09238",
          "text": "If the <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a> feature is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07648",
          "text": "If the <a href=\"#features-representativeFragmentTest\"><code>representativeFragmentTest</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetRepresentativeFragmentTestEnableNV\">vkCmdSetRepresentativeFragmentTestEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07649",
          "text": "If the <a href=\"#features-coverageReductionMode\"><code>coverageReductionMode</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageReductionModeNV\">vkCmdSetCoverageReductionModeNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-pColorBlendEnables-07470",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> state enabled and the last call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> set <code>pColorBlendEnables</code> for any attachment to <code>VK_TRUE</code>, then for those attachments in the subpass the corresponding 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_BLEND_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizationSamples-07471",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> follow the rules for a <a href=\"#renderpass-noattachments\">zero-attachment subpass</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-samples-07472",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, then the <code>samples</code> parameter in the last call to <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> be greater or equal to the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a>::<code>rasterizationSamples</code> parameter used to create the bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-samples-07473",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> state and <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> states enabled, then the <code>samples</code> parameter in the last call to <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> be greater or equal to the <code>rasterizationSamples</code> parameter in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizationSamples-07474",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and neither the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> nor the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extensions are enabled, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil attachments",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09211",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, or a shader object is bound to any graphics stage, and the current render pass instance includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> be the same as the <code>rasterizationSamples</code> member of that structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-firstAttachment-07476",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEnableEXT</code> calls <strong class=\"purple\">must</strong> specify an enable for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizerDiscardEnable-09417",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEnableEXT</code> calls <strong class=\"purple\">must</strong> specify an enable for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-firstAttachment-07477",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEquationEXT</code> calls <strong class=\"purple\">must</strong> specify the blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizerDiscardEnable-09418",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEquationEXT</code> calls <strong class=\"purple\">must</strong> specify the blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-firstAttachment-07478",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorWriteMaskEXT</code> calls <strong class=\"purple\">must</strong> specify the color write mask for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizerDiscardEnable-09419",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorWriteMaskEXT</code> calls <strong class=\"purple\">must</strong> specify the color write mask for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-firstAttachment-07479",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendAdvancedEXT</code> calls <strong class=\"purple\">must</strong> specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-advancedBlendMaxColorAttachments-07480",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> and <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic states enabled and the last calls to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> and <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> have enabled advanced blending, then the number of active color attachments in the current subpass <strong class=\"purple\">must</strong> not exceed <a href=\"#limits-advancedBlendMaxColorAttachments\"><code>advancedBlendMaxColorAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-primitivesGeneratedQueryWithNonZeroStreams-07481",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, and the bound graphics pipeline was created with <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code> state enabled, the last call to <a href=\"#vkCmdSetRasterizationStreamEXT\">vkCmdSetRasterizationStreamEXT</a> <strong class=\"purple\">must</strong> have set the <code>rasterizationStream</code> to zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsPerPixel-07482",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsPerPixel-07483",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-07484",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-07485",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, then the <code>sampleLocationsInfo.sampleLocationGridSize.width</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-07486",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, then the <code>sampleLocationsInfo.sampleLocationGridSize.height</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-07487",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, the fragment shader code <strong class=\"purple\">must</strong> not statically use the extended instruction <code>InterpolateAtSample</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-07936",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <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 the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-07937",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <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 the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-07938",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-coverageModulationTableEnable-07488",
          "text": "If a shader object is bound to any graphics stage or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code> state enabled, and the last call to <a href=\"#vkCmdSetCoverageModulationTableEnableNV\">vkCmdSetCoverageModulationTableEnableNV</a> set <code>coverageModulationTableEnable</code> to <code>VK_TRUE</code>, then the <code>coverageModulationTableCount</code> parameter in the last call to <a href=\"#vkCmdSetCoverageModulationTableNV\">vkCmdSetCoverageModulationTableNV</a> <strong class=\"purple\">must</strong> equal the current <code>rasterizationSamples</code> divided by the number of color samples in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizationSamples-07489",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current <code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be the same as the sample count of the depth/stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-coverageToColorEnable-07490",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> state enabled and the last call to <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> set the <code>coverageToColorEnable</code> to <code>VK_TRUE</code>, then the current subpass <strong class=\"purple\">must</strong> have a color attachment at the location selected by the last call to <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizerDiscardEnable-09420",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the last call to <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> set the <code>coverageToColorEnable</code> to <code>VK_TRUE</code>, then the current subpass <strong class=\"purple\">must</strong> have a color attachment at the location selected by the last call to <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-coverageReductionMode-07491",
          "text": "If this <code><a href=\"#VK_NV_coverage_reduction_mode\">VK_NV_coverage_reduction_mode</a></code> extension is enabled, the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> and <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> states enabled, the current coverage reduction mode <code>coverageReductionMode</code>, then the current <code>rasterizationSamples</code>, and the sample counts for the color and depth/stencil attachments (if the subpass has them) <strong class=\"purple\">must</strong> be a valid combination returned by <a href=\"#vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV\">vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-07492",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-07493",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-09421",
          "text": "If the <code><a href=\"#VK_NV_viewport_swizzle\">VK_NV_viewport_swizzle</a></code> extension is enabled, and a shader object is bound to any graphics stage, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizationSamples-07494",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, and if the current subpass has any color attachments and <code>rasterizationSamples</code> of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> is greater than the number of color samples, then the pipeline <code>sampleShadingEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-stippledLineEnable-07495",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-stippledLineEnable-07496",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR</code>, then the <a href=\"#features-stippledBresenhamLines\"><code>stippledBresenhamLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-stippledLineEnable-07497",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR</code>, then the <a href=\"#features-stippledSmoothLines\"><code>stippledSmoothLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-stippledLineEnable-07498",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_DEFAULT_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled and <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>strictLines</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-conservativePointAndLineRasterization-07499",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code> dynamic state enabled, <a href=\"#limits-conservativePointAndLineRasterization\"><code>conservativePointAndLineRasterization</code></a> is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the <code>conservativeRasterizationMode</code> set by the last call to <a href=\"#vkCmdSetConservativeRasterizationModeEXT\">vkCmdSetConservativeRasterizationModeEXT</a> <strong class=\"purple\">must</strong> be <code>VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-stage-07073",
          "text": "If the currently bound pipeline was created with the <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a>::<code>stage</code> member of an element of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> set to <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>, then <a href=\"#queries-mesh-shader\">Mesh Shader Queries</a> <strong class=\"purple\">must</strong> not be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08877",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07850",
          "text": "If dynamic state was inherited from <a href=\"#VkCommandBufferInheritanceViewportScissorInfoNV\">VkCommandBufferInheritanceViewportScissorInfoNV</a>, it <strong class=\"purple\">must</strong> be set in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08684",
          "text": "If there is no bound graphics pipeline, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_VERTEX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08685",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08686",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08687",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08688",
          "text": "If there is no bound graphics pipeline, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08689",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TASK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08690",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08693",
          "text": "If there is no bound graphics pipeline, and at least one of the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features is enabled, one of the <code>VK_SHADER_STAGE_VERTEX_BIT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stages <strong class=\"purple\">must</strong> have a valid <code>VkShaderEXT</code> bound, and the other <strong class=\"purple\">must</strong> have no <code>VkShaderEXT</code> bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08694",
          "text": "If there is no bound graphics pipeline, and both the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features are enabled, and a valid <code>VkShaderEXT</code> is bound the to the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage, and that <code>VkShaderEXT</code> was created without the <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> flag, a valid <code>VkShaderEXT</code> <strong class=\"purple\">must</strong> be bound to the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08695",
          "text": "If there is no bound graphics pipeline, and both the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features are enabled, and a valid <code>VkShaderEXT</code> is bound the to the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage, and that <code>VkShaderEXT</code> was created with the <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> flag, there <strong class=\"purple\">must</strong> be no <code>VkShaderEXT</code> bound to the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08696",
          "text": "If there is no bound graphics pipeline, and a valid <code>VkShaderEXT</code> is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, there <strong class=\"purple\">must</strong> be no <code>VkShaderEXT</code> bound to either the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage or the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08698",
          "text": "If any graphics shader is bound which was created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag, then all shaders created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag in the same <a href=\"#vkCreateShadersEXT\">vkCreateShadersEXT</a> call <strong class=\"purple\">must</strong> also be bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08699",
          "text": "If any graphics shader is bound which was created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag, any stages in between stages whose shaders which did not create a shader with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag as part of the same <a href=\"#vkCreateShadersEXT\">vkCreateShadersEXT</a> call <strong class=\"purple\">must</strong> not have any <code>VkShaderEXT</code> bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08878",
          "text": "All bound graphics shader objects <strong class=\"purple\">must</strong> have been created with identical or identically defined push constant ranges",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08879",
          "text": "All bound graphics shader objects <strong class=\"purple\">must</strong> have been created with identical or identically defined arrays of descriptor set layouts",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-colorAttachmentCount-09372",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, and a fragment shader is bound, it <strong class=\"purple\">must</strong> not declare the <code>DepthReplacing</code> or <code>StencilRefReplacingEXT</code> execution modes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-pDynamicStates-08715",
          "text": "If the bound graphics pipeline state includes a fragment shader stage, was created with <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpDepthAttachmentReadEXT</code>, the <code>depthWriteEnable</code> parameter in the last call to <a href=\"#vkCmdSetDepthWriteEnable\">vkCmdSetDepthWriteEnable</a> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-pDynamicStates-08716",
          "text": "If the bound graphics pipeline state includes a fragment shader stage, was created with <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpStencilAttachmentReadEXT</code>, the <code>writeMask</code> parameter in the last call to <a href=\"#vkCmdSetStencilWriteMask\">vkCmdSetStencilWriteMask</a> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09116",
          "text": "If     a shader object is bound to any graphics stage or     the currently bound graphics pipeline was created with     <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code>,     and the format of any color attachment is     <code>VK_FORMAT_E5B9G9R9_UFLOAT_PACK32</code>, the corresponding element of the     <code>pColorWriteMasks</code> parameter of <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a>     <strong class=\"purple\">must</strong> either include all of <code>VK_COLOR_COMPONENT_R_BIT</code>,     <code>VK_COLOR_COMPONENT_G_BIT</code>, and <code>VK_COLOR_COMPONENT_B_BIT</code>, or     none of them",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-maxFragmentDualSrcAttachments-09239",
          "text": "If <a href=\"#framebuffer-blending\">blending</a> is enabled for any attachment where either the source or destination blend factors for that attachment <a href=\"#framebuffer-dsb\">use the secondary color input</a>, the maximum value of <code>Location</code> for any output attachment <a href=\"#shaders-staticuse\">statically used</a> in the <code>Fragment</code> <code>Execution</code> <code>Model</code> executed by this command <strong class=\"purple\">must</strong> be less than <a href=\"#limits-maxFragmentDualSrcAttachments\"><code>maxFragmentDualSrcAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09548",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and there is no shader object bound to any graphics stage, the value of each element of <a href=\"#VkRenderingAttachmentLocationInfoKHR\">VkRenderingAttachmentLocationInfoKHR</a>::<code>pColorAttachmentLocations</code> set by <a href=\"#vkCmdSetRenderingAttachmentLocationsKHR\">vkCmdSetRenderingAttachmentLocationsKHR</a> <strong class=\"purple\">must</strong> match the value set for the corresponding element in the currently bound pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09549",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and there is no shader object bound to any graphics stage, input attachment index mappings in the currently bound pipeline <strong class=\"purple\">must</strong> match those set for the current render pass instance via <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09642",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with the <code>VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT</code> flag, the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09643",
          "text": "If the bound graphics pipeline was created with <code>VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT</code>, the current render pass <strong class=\"purple\">must</strong> have begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with the <code>VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT</code> flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-stage-06480",
          "text": "The bound graphics pipeline <strong class=\"purple\">must</strong> not have been created with the <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a>::<code>stage</code> member of an element of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> set to <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07074",
          "text": "<a href=\"#queries-transform-feedback\">Transform Feedback Queries</a> <strong class=\"purple\">must</strong> not be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07075",
          "text": "<a href=\"#queries-primitives-generated\">Primitives Generated Queries</a> <strong class=\"purple\">must</strong> not be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-pipelineStatistics-07076",
          "text": "The <code>pipelineStatistics</code> member used to create any active <a href=\"#queries-pipestats\">Pipeline Statistics Query</a> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT</code>, or <code>VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-02708",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-02709",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-offset-02710",
          "text": "<code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02711",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02714",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02715",
          "text": "<code>countBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBufferOffset-02716",
          "text": "<code>countBufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02717",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBufferOffset-04129",
          "text": "<span class=\"eq\">(<code>countBufferOffset</code> +  <code>sizeof</code>(uint32_t))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>countBuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04445",
          "text": "If <a href=\"#features-drawIndirectCount\"><code>drawIndirectCount</code></a> is not enabled this function <strong class=\"purple\">must</strong> not be used",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-stride-02182",
          "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>)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-maxDrawCount-02183",
          "text": "If <code>maxDrawCount</code> is greater than or equal to <code>1</code>, <span class=\"eq\">(<code>stride</code> × (<code>maxDrawCount</code> - 1) +  <code>offset</code> +  <code>sizeof</code>(<code>VkDrawMeshTasksIndirectCommandNV</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02191",
          "text": "If the count stored in <code>countBuffer</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> +  <code>sizeof</code>(<code>VkDrawMeshTasksIndirectCommandNV</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02192",
          "text": "If the count stored in <code>countBuffer</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> × (<code>drawCount</code> - 1) +  <code>offset</code> +  <code>sizeof</code>(<code>VkDrawMeshTasksIndirectCommandNV</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-MeshNV-07082",
          "text": "The current pipeline bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> <strong class=\"purple\">must</strong> contain a shader stage using the <code>MeshNV</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-parameter",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-parameter",
          "text": "<code>countBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commonparent",
          "text": "Each of <code>buffer</code>, <code>commandBuffer</code>, and <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdDrawMeshTasksEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-magFilter-04553",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-magFilter-09598",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-mipmapMode-04770",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-mipmapMode-09599",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-unnormalizedCoordinates-09635",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>levelCount</code> and <code>layerCount</code> <strong class=\"purple\">must</strong> be 1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-unnormalizedCoordinates-09636",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_VIEW_TYPE_1D</code> or <code>VK_IMAGE_VIEW_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-06479",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is sampled with <a href=\"#textures-depth-compare-operation\">depth comparison</a>, 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_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-02691",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed using atomic operations as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07888",
          "text": "If a <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> descriptor is accessed using atomic operations as a result of this command, then the storage texel buffer&#8217;s <a href=\"#resources-buffer-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-02692",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-02693",
          "text": "If the <a href=\"#VK_EXT_filter_cubic\">VK_EXT_filter_cubic</a> extension is not enabled and any <a href=\"#VkImageView\">VkImageView</a> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, it <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-filterCubic-02694",
          "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 <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubic</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-filterCubicMinmax-02695",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubicMinmax</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-cubicRangeClamp-09212",
          "text": "If the <a href=\"#features-filter-cubic-range-clamp\"><code>cubicRangeClamp</code></a> feature is not enabled, then 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=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-reductionMode-09213",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with a <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code> as a result of this command <strong class=\"purple\">must</strong> sample with <code>VK_FILTER_CUBIC_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-selectableCubicWeights-09214",
          "text": "If the <a href=\"#features-filter-cubic-weight-selection\"><code>selectableCubicWeights</code></a> feature is not enabled, then 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 href=\"#VkSamplerCubicWeightsCreateInfoQCOM\">VkSamplerCubicWeightsCreateInfoQCOM</a>::<code>cubicWeights</code> equal to <code>VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-flags-02696",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-OpTypeImage-07027",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being written as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-OpTypeImage-07028",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being read as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-OpTypeImage-07029",
          "text": "For any <a href=\"#VkBufferView\">VkBufferView</a> being written as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-OpTypeImage-07030",
          "text": "Any <a href=\"#VkBufferView\">VkBufferView</a> being read as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code> then the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08600",
          "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08601",
          "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-10068",
          "text": "For each array of resources that is used by <a href=\"#shaders-binding\">a bound shader</a>, the indices used to access members of the array <strong class=\"purple\">must</strong> be less than the descriptor count for the identified binding in the descriptor sets used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-maintenance4-08602",
          "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08114",
          "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08115",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created without <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08116",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08604",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08117",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08119",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkPipeline\">VkPipeline</a> created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08605",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkShaderEXT\">VkShaderEXT</a> created with a <code>VkDescriptorSetLayout</code> that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08606",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is not enabled, a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08608",
          "text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state specified statically in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08609",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <a href=\"#VkImage\">VkImage</a> with a <a href=\"#VkImageView\">VkImageView</a> 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08610",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08611",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08607",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-uniformBuffers-06935",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08612",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-storageBuffers-06936",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>storageBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08613",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-commandBuffer-02707",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, any resource accessed by <a href=\"#shaders-binding\">bound shaders</a> <strong class=\"purple\">must</strong> not be a protected resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-06550",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> only be used with <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-ConstOffset-06551",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> not use the <code>ConstOffset</code> and <code>Offset</code> operands",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-viewType-07752",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> match the <code>Dim</code> operand of the <code>OpTypeImage</code> as described in <a href=\"#spirvenv-image-dimensions\">Compatibility Between SPIR-V Image Dimensions and Vulkan ImageView Types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-format-07753",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the <a href=\"#formats-numericformat\">numeric type</a> of the image view&#8217;s <code>format</code> and the <code>Sampled</code> <code>Type</code> operand of the <code>OpTypeImage</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-OpImageWrite-08795",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with a format other than <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-OpImageWrite-08796",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with the format <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have four components",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-OpImageWrite-04469",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the buffer view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-SampledType-04470",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-SampledType-04471",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-SampledType-04472",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-SampledType-04473",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-sparseImageInt64Atomics-04474",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-sparseImageInt64Atomics-04475",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-OpImageWeightedSampleQCOM-06971",
          "text": "If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-OpImageWeightedSampleQCOM-06972",
          "text": "If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image 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_2_WEIGHT_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-OpImageBoxFilterQCOM-06973",
          "text": "If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-OpImageBlockMatchSSDQCOM-06974",
          "text": "If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-OpImageBlockMatchSADQCOM-06975",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-OpImageBlockMatchSADQCOM-06976",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-OpImageWeightedSampleQCOM-06977",
          "text": "If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-OpImageWeightedSampleQCOM-06978",
          "text": "If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-OpImageBlockMatchWindow-09215",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-OpImageBlockMatchWindow-09216",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s format <strong class=\"purple\">must</strong> be a single-component format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-OpImageBlockMatchWindow-09217",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07288",
          "text": "Any shader invocation executed by this command <strong class=\"purple\">must</strong> <a href=\"#shaders-termination\">terminate</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-09600",
          "text": "If a descriptor with type equal to any of <code>VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> is accessed as a result of this command, the image subresource identified by that descriptor <strong class=\"purple\">must</strong> be in the image layout identified when the descriptor was written",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-renderPass-02684",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-subpass-02685",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07748",
          "text": "If any shader statically accesses an input attachment, a valid descriptor <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-OpTypeImage-07468",
          "text": "If any shader executed by this pipeline accesses an <code>OpTypeImage</code> variable with a <code>Dim</code> operand of <code>SubpassData</code>, it <strong class=\"purple\">must</strong> be decorated with an <code>InputAttachmentIndex</code> that corresponds to a valid input attachment in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07469",
          "text": "Input attachment views accessed in a subpass <strong class=\"purple\">must</strong> be created with the same <a href=\"#VkFormat\">VkFormat</a> as the corresponding subpass definition, and be created with a <a href=\"#VkImageView\">VkImageView</a> that is compatible with the attachment referenced by the subpass' <code>pInputAttachments</code>[<code>InputAttachmentIndex</code>] in the currently bound <a href=\"#VkFramebuffer\">VkFramebuffer</a> as specified by <a href=\"#compatibility-inputattachment\">Fragment Input Attachment Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-pDepthInputAttachmentIndex-09595",
          "text": "Input attachment views accessed in a dynamic render pass with a <code>InputAttachmentIndex</code> referenced by <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>, or no <code>InputAttachmentIndex</code> if <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pDepthInputAttachmentIndex</code> or <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pStencilInputAttachmentIndex</code> are <code>NULL</code>, <strong class=\"purple\">must</strong> be created with a <a href=\"#VkImageView\">VkImageView</a> that is compatible with the corresponding color, depth, or stencil attachment in <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-pDepthInputAttachmentIndex-09596",
          "text": "Input attachment views accessed in a dynamic render pass via a shader object <strong class=\"purple\">must</strong> have an <code>InputAttachmentIndex</code> if both <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pDepthInputAttachmentIndex</code> and <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pStencilInputAttachmentIndex</code> are non-<code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-InputAttachmentIndex-09597",
          "text": "If an input attachment view accessed in a dynamic render pass via a shader object has an <code>InputAttachmentIndex</code>, the <code>InputAttachmentIndex</code> <strong class=\"purple\">must</strong> match an index in <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-06537",
          "text": "Memory backing image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be written in any way other than as an attachment by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-09000",
          "text": "If a color attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe <code>VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code> is\nset on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_COLOR_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-09001",
          "text": "If a depth attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe\n<code>VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code>\nis set on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_DEPTH_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-09002",
          "text": "If a stencil attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe\n<code>VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code>\nis set on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_STENCIL_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-09003",
          "text": "If an attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment, storage image, or sampled image by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-06539",
          "text": "If any previously recorded command in the current subpass accessed an image subresource used as an attachment in this subpass in any way other than as an attachment, this command <strong class=\"purple\">must</strong> not write to that image subresource as an attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-06886",
          "text": "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, <a href=\"#fragops-depth-write\">depth writes</a> <strong class=\"purple\">must</strong> be disabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-06887",
          "text": "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back <code>writeMask</code> are not zero, and stencil test is enabled, <a href=\"#fragops-stencil\">all stencil ops</a> <strong class=\"purple\">must</strong> be <code>VK_STENCIL_OP_KEEP</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07831",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT</code> dynamic state enabled then <a href=\"#vkCmdSetViewport\">vkCmdSetViewport</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07832",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR</code> dynamic state enabled then <a href=\"#vkCmdSetScissor\">vkCmdSetScissor</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07833",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_WIDTH</code> dynamic state enabled then <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08617",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08618",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08619",
          "text": "If a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07834",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthBiasEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthBounds\">vkCmdSetDepthBounds</a> or <a href=\"#vkCmdSetDepthBias2EXT\">vkCmdSetDepthBias2EXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07835",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_BLEND_CONSTANTS</code> dynamic state enabled then <a href=\"#vkCmdSetBlendConstants\">vkCmdSetBlendConstants</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08621",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> in the current command buffer set any element of <code>pColorBlendEnables</code> to <code>VK_TRUE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> in the current command buffer set the same element of <code>pColorBlendEquations</code> to a <code>VkColorBlendEquationEXT</code> structure with any <a href=\"#VkBlendFactor\">VkBlendFactor</a> member with a value of <code>VK_BLEND_FACTOR_CONSTANT_COLOR</code>, <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR</code>, <code>VK_BLEND_FACTOR_CONSTANT_ALPHA</code>, or <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA</code>, <a href=\"#vkCmdSetBlendConstants\">vkCmdSetBlendConstants</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07836",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthBoundsTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthBounds\">vkCmdSetDepthBounds</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07837",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilCompareMask\">vkCmdSetStencilCompareMask</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07838",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilWriteMask\">vkCmdSetStencilWriteMask</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07839",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_REFERENCE</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of and <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilReference\">vkCmdSetStencilReference</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-maxMultiviewInstanceIndex-02688",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-02689",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-06666",
          "text": "If the <code><a href=\"#VK_EXT_sample_locations\">VK_EXT_sample_locations</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07840",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_CULL_MODE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCullMode\">vkCmdSetCullMode</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07841",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_FRONT_FACE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetFrontFace\">vkCmdSetFrontFace</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07843",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, <a href=\"#vkCmdSetDepthTestEnable\">vkCmdSetDepthTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07844",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthWriteEnable\">vkCmdSetDepthWriteEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07845",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_COMPARE_OP</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthCompareOp\">vkCmdSetDepthCompareOp</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07846",
          "text": "If the <a href=\"#features-depthBounds\"><code>depthBounds</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthBoundsTestEnable\">vkCmdSetDepthBoundsTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07847",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetStencilTestEnable\">vkCmdSetStencilTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07848",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_OP</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilOp\">vkCmdSetStencilOp</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-viewportCount-03417",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-scissorCount-03418",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, then <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-viewportCount-03419",
          "text": "If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> and <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08635",
          "text": "If a shader object is bound to any graphics stage, then both <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> and <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-viewportCount-04137",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-viewportCount-04138",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08636",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-viewportCount-04139",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-shadingRateImage-09233",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV</code> and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-shadingRateImage-09234",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08637",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-VkPipelineVieportCreateInfo-04141",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled and a <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> structure chained from <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-VkPipelineVieportCreateInfo-04142",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled and a <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> structure chained from <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07878",
          "text": "If the <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetExclusiveScissorEnableNV\">vkCmdSetExclusiveScissorEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07879",
          "text": "If the <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV</code> dynamic state enabled, and the most recent call to <a href=\"#vkCmdSetExclusiveScissorEnableNV\">vkCmdSetExclusiveScissorEnableNV</a> in the current command buffer set any element of <code>pExclusiveScissorEnables</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetExclusiveScissorNV\">vkCmdSetExclusiveScissorNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-04876",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-04877",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthBiasEnable\">vkCmdSetDepthBiasEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-logicOp-04878",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_LOGIC_OP_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>logicOpEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetLogicOpEXT\">vkCmdSetLogicOpEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-primitiveFragmentShadingRateWithMultipleViewports-04552",
          "text": "If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-primitiveFragmentShadingRateWithMultipleViewports-08642",
          "text": "If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, and any shader object bound to a graphics stage writes to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-blendEnable-04727",
          "text": "If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the <code>blendEnable</code> member of the corresponding element of the <code>pAttachments</code> member of <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08643",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then for each color attachment in the render pass, if the corresponding image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the corresponding member of <code>pColorBlendEnables</code> in the most recent call to <code>vkCmdSetColorBlendEnableEXT</code> in the current command buffer that affected that attachment index <strong class=\"purple\">must</strong> have been <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-multisampledRenderToSingleSampled-07284",
          "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then <code>rasterizationSamples</code> for the currently bound graphics pipeline\n<strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil\nattachments</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08644",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the\ncurrent command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the\nsame as the number of samples for the current render pass color and/or\ndepth/stencil attachments</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08876",
          "text": "If a shader object is bound to any graphics stage, the current render pass instance <strong class=\"purple\">must</strong> have been begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-imageView-06172",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-imageView-06173",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-imageView-06174",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-imageView-06175",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-imageView-06176",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-imageView-06177",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-viewMask-06178",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>viewMask</code> equal to <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>viewMask</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-colorAttachmentCount-06179",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>colorAttachmentCount</code> equal to <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-08910",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-08912",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-08911",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-colorAttachmentCount-09362",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, there is no shader object bound to any graphics stage, and a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>resolveImageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with an image created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value equal to the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-09363",
          "text": "If there is no shader object bound to any graphics stage, the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, and a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with an image created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value equal to the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-09364",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have set the blend enable to <code>VK_FALSE</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-09365",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to <code>VK_SAMPLE_COUNT_1_BIT</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-09366",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have set blend enable to <code>VK_FALSE</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-rasterizationSamples-09367",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to <code>VK_SAMPLE_COUNT_1_BIT</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-09368",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;width</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-09369",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;height</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-pFragmentSize-09370",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;width</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-pFragmentSize-09371",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;height</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07749",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteEnableEXT\">vkCmdSetColorWriteEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08646",
          "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is enabled on the device, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorWriteEnableEXT\">vkCmdSetColorWriteEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-attachmentCount-07750",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code> dynamic state enabled then the <code>attachmentCount</code> parameter of <code>vkCmdSetColorWriteEnableEXT</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>VkPipelineColorBlendStateCreateInfo</code>::<code>attachmentCount</code> of the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08647",
          "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is enabled on the device, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then the <code>attachmentCount</code> parameter of most recent call to <code>vkCmdSetColorWriteEnableEXT</code> in the current command buffer <strong class=\"purple\">must</strong> be greater than or equal to the number of color attachments in the current render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07751",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleEXT\">vkCmdSetDiscardRectangleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command for each discard rectangle in <a href=\"#VkPipelineDiscardRectangleStateCreateInfoEXT\">VkPipelineDiscardRectangleStateCreateInfoEXT</a>::<code>discardRectangleCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07880",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-rasterizerDiscardEnable-09236",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> in the current command buffer set <code>discardRectangleEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDiscardRectangleEXT\">vkCmdSetDiscardRectangleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08648",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07881",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleModeEXT\">vkCmdSetDiscardRectangleModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08649",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> in the current command buffer set <code>discardRectangleEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDiscardRectangleModeEXT\">vkCmdSetDiscardRectangleModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-08913",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-08914",
          "text": "If current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-08915",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline was not equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>, the value of the format <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-08916",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-08917",
          "text": "If current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-dynamicRenderingUnusedAttachments-08918",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline was not equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>, the value of the format <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-imageView-06183",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a>::<code>imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-imageView-06184",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingFragmentDensityMapAttachmentInfoEXT\">VkRenderingFragmentDensityMapAttachmentInfoEXT</a>::<code>imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-colorAttachmentCount-06185",
          "text": "If the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the corresponding element of the <code>pColorAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-pDepthAttachment-06186",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-pStencilAttachment-06187",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-multisampledRenderToSingleSampled-07285",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     the current render pass instance was begun with     <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than     <code>0</code>, then each element of the     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a     <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been     created with a sample count equal to the value of     <code>rasterizationSamples</code> for the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-multisampledRenderToSingleSampled-07286",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not     <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the     currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count     used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-multisampledRenderToSingleSampled-07287",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not     <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the     currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count     used to create     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-pNext-07935",
          "text": "If this command has been called inside a render pass instance started with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and the <code>pNext</code> chain of <a href=\"#VkRenderingInfo\">VkRenderingInfo</a> includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a>::<code>rasterizationSamples</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-renderPass-06198",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>renderPass</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-pColorAttachments-08963",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound with a fragment shader that statically writes to a color attachment, the color write mask is not zero, color writes are enabled, and the corresponding element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-pDepthAttachment-08964",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound, depth test is enabled, depth write is enabled, and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-pStencilAttachment-08965",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound, stencil test is enabled and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-primitivesGeneratedQueryWithRasterizerDiscard-06708",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithRasterizerDiscard\"><code>primitivesGeneratedQueryWithRasterizerDiscard</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, <a href=\"#primsrast-discard\">rasterization discard</a> <strong class=\"purple\">must</strong> not be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-primitivesGeneratedQueryWithNonZeroStreams-06709",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, the bound graphics pipeline <strong class=\"purple\">must</strong> not have been created with a non-zero value in <code>VkPipelineRasterizationStateStreamCreateInfoEXT</code>::<code>rasterizationStream</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07619",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetTessellationDomainOriginEXT\">vkCmdSetTessellationDomainOriginEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07620",
          "text": "If the <a href=\"#features-depthClamp\"><code>depthClamp</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthClampEnableEXT\">vkCmdSetDepthClampEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07621",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_POLYGON_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07622",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07623",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-alphaToCoverageEnable-08919",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic state enabled, and <code>alphaToCoverageEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-alphaToCoverageEnable-08920",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a> in the current command buffer set <code>alphaToCoverageEnable</code> to <code>VK_TRUE</code>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07624",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07625",
          "text": "If the <a href=\"#features-alphaToOne\"><code>alphaToOne</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAlphaToOneEnableEXT\">vkCmdSetAlphaToOneEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07626",
          "text": "If the <a href=\"#features-logicOp\"><code>logicOp</code></a> feature is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLogicOpEnableEXT\">vkCmdSetLogicOpEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07627",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08657",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07628",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08658",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> for any attachment set that attachment&#8217;s value in <code>pColorBlendEnables</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07629",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08659",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07630",
          "text": "If the <a href=\"#features-geometryStreams\"><code>geometryStreams</code></a> feature is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizationStreamEXT\">vkCmdSetRasterizationStreamEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07631",
          "text": "If the <code><a href=\"#VK_EXT_conservative_rasterization\">VK_EXT_conservative_rasterization</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetConservativeRasterizationModeEXT\">vkCmdSetConservativeRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07632",
          "text": "If the <code><a href=\"#VK_EXT_conservative_rasterization\">VK_EXT_conservative_rasterization</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>conservativeRasterizationMode</code> is <code>VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT</code>, then <a href=\"#vkCmdSetExtraPrimitiveOverestimationSizeEXT\">vkCmdSetExtraPrimitiveOverestimationSizeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07633",
          "text": "If the <a href=\"#features-depthClipEnable\"><code>depthClipEnable</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT</code> dynamic state, then <a href=\"#vkCmdSetDepthClipEnableEXT\">vkCmdSetDepthClipEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07634",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08664",
          "text": "If the <code><a href=\"#VK_EXT_sample_locations\">VK_EXT_sample_locations</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07635",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-rasterizerDiscardEnable-09416",
          "text": "If the <code><a href=\"#VK_EXT_blend_operation_advanced\">VK_EXT_blend_operation_advanced</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then at least one of <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> and <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07636",
          "text": "If the <code><a href=\"#VK_EXT_provoking_vertex\">VK_EXT_provoking_vertex</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetProvokingVertexModeEXT\">vkCmdSetProvokingVertexModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07637",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08666",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08667",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08668",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07638",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08669",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08670",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08671",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07849",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_KHR</code>     dynamic state enabled then <a href=\"#vkCmdSetLineStippleKHR\">vkCmdSetLineStippleKHR</a>     <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing     command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08672",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> in the current command buffer set <code>stippledLineEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetLineStippleEXT\">vkCmdSetLineStippleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07639",
          "text": "If the <a href=\"#features-depthClipControl\"><code>depthClipControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetDepthClipNegativeOneToOneEXT\">vkCmdSetDepthClipNegativeOneToOneEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-09650",
          "text": "If the <a href=\"#features-depthClampControl\"><code>depthClampControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthClampEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthClampRangeEXT\">vkCmdSetDepthClampRangeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07640",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07641",
          "text": "If the <code><a href=\"#VK_NV_viewport_swizzle\">VK_NV_viewport_swizzle</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07642",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07643",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageToColorEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07644",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageModulationModeNV\">vkCmdSetCoverageModulationModeNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07645",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageModulationMode</code> is any value other than <code>VK_COVERAGE_MODULATION_MODE_NONE_NV</code>, then <a href=\"#vkCmdSetCoverageModulationTableEnableNV\">vkCmdSetCoverageModulationTableEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07646",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageModulationTableEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetCoverageModulationTableNV\">vkCmdSetCoverageModulationTableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07647",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-pipelineFragmentShadingRate-09238",
          "text": "If the <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a> feature is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07648",
          "text": "If the <a href=\"#features-representativeFragmentTest\"><code>representativeFragmentTest</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetRepresentativeFragmentTestEnableNV\">vkCmdSetRepresentativeFragmentTestEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07649",
          "text": "If the <a href=\"#features-coverageReductionMode\"><code>coverageReductionMode</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageReductionModeNV\">vkCmdSetCoverageReductionModeNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-pColorBlendEnables-07470",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> state enabled and the last call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> set <code>pColorBlendEnables</code> for any attachment to <code>VK_TRUE</code>, then for those attachments in the subpass the corresponding 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_BLEND_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-rasterizationSamples-07471",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> follow the rules for a <a href=\"#renderpass-noattachments\">zero-attachment subpass</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-samples-07472",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, then the <code>samples</code> parameter in the last call to <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> be greater or equal to the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a>::<code>rasterizationSamples</code> parameter used to create the bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-samples-07473",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> state and <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> states enabled, then the <code>samples</code> parameter in the last call to <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> be greater or equal to the <code>rasterizationSamples</code> parameter in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-rasterizationSamples-07474",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and neither the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> nor the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extensions are enabled, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil attachments",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-09211",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, or a shader object is bound to any graphics stage, and the current render pass instance includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> be the same as the <code>rasterizationSamples</code> member of that structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-firstAttachment-07476",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEnableEXT</code> calls <strong class=\"purple\">must</strong> specify an enable for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-rasterizerDiscardEnable-09417",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEnableEXT</code> calls <strong class=\"purple\">must</strong> specify an enable for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-firstAttachment-07477",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEquationEXT</code> calls <strong class=\"purple\">must</strong> specify the blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-rasterizerDiscardEnable-09418",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEquationEXT</code> calls <strong class=\"purple\">must</strong> specify the blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-firstAttachment-07478",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorWriteMaskEXT</code> calls <strong class=\"purple\">must</strong> specify the color write mask for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-rasterizerDiscardEnable-09419",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorWriteMaskEXT</code> calls <strong class=\"purple\">must</strong> specify the color write mask for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-firstAttachment-07479",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendAdvancedEXT</code> calls <strong class=\"purple\">must</strong> specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-advancedBlendMaxColorAttachments-07480",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> and <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic states enabled and the last calls to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> and <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> have enabled advanced blending, then the number of active color attachments in the current subpass <strong class=\"purple\">must</strong> not exceed <a href=\"#limits-advancedBlendMaxColorAttachments\"><code>advancedBlendMaxColorAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-primitivesGeneratedQueryWithNonZeroStreams-07481",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, and the bound graphics pipeline was created with <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code> state enabled, the last call to <a href=\"#vkCmdSetRasterizationStreamEXT\">vkCmdSetRasterizationStreamEXT</a> <strong class=\"purple\">must</strong> have set the <code>rasterizationStream</code> to zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-sampleLocationsPerPixel-07482",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-sampleLocationsPerPixel-07483",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-07484",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-07485",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, then the <code>sampleLocationsInfo.sampleLocationGridSize.width</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-07486",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, then the <code>sampleLocationsInfo.sampleLocationGridSize.height</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-07487",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, the fragment shader code <strong class=\"purple\">must</strong> not statically use the extended instruction <code>InterpolateAtSample</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-07936",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <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 the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-07937",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <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 the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-07938",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-coverageModulationTableEnable-07488",
          "text": "If a shader object is bound to any graphics stage or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code> state enabled, and the last call to <a href=\"#vkCmdSetCoverageModulationTableEnableNV\">vkCmdSetCoverageModulationTableEnableNV</a> set <code>coverageModulationTableEnable</code> to <code>VK_TRUE</code>, then the <code>coverageModulationTableCount</code> parameter in the last call to <a href=\"#vkCmdSetCoverageModulationTableNV\">vkCmdSetCoverageModulationTableNV</a> <strong class=\"purple\">must</strong> equal the current <code>rasterizationSamples</code> divided by the number of color samples in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-rasterizationSamples-07489",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current <code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be the same as the sample count of the depth/stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-coverageToColorEnable-07490",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> state enabled and the last call to <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> set the <code>coverageToColorEnable</code> to <code>VK_TRUE</code>, then the current subpass <strong class=\"purple\">must</strong> have a color attachment at the location selected by the last call to <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-rasterizerDiscardEnable-09420",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the last call to <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> set the <code>coverageToColorEnable</code> to <code>VK_TRUE</code>, then the current subpass <strong class=\"purple\">must</strong> have a color attachment at the location selected by the last call to <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-coverageReductionMode-07491",
          "text": "If this <code><a href=\"#VK_NV_coverage_reduction_mode\">VK_NV_coverage_reduction_mode</a></code> extension is enabled, the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> and <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> states enabled, the current coverage reduction mode <code>coverageReductionMode</code>, then the current <code>rasterizationSamples</code>, and the sample counts for the color and depth/stencil attachments (if the subpass has them) <strong class=\"purple\">must</strong> be a valid combination returned by <a href=\"#vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV\">vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-viewportCount-07492",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-viewportCount-07493",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-viewportCount-09421",
          "text": "If the <code><a href=\"#VK_NV_viewport_swizzle\">VK_NV_viewport_swizzle</a></code> extension is enabled, and a shader object is bound to any graphics stage, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-rasterizationSamples-07494",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, and if the current subpass has any color attachments and <code>rasterizationSamples</code> of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> is greater than the number of color samples, then the pipeline <code>sampleShadingEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-stippledLineEnable-07495",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-stippledLineEnable-07496",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR</code>, then the <a href=\"#features-stippledBresenhamLines\"><code>stippledBresenhamLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-stippledLineEnable-07497",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR</code>, then the <a href=\"#features-stippledSmoothLines\"><code>stippledSmoothLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-stippledLineEnable-07498",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_DEFAULT_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled and <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>strictLines</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-conservativePointAndLineRasterization-07499",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code> dynamic state enabled, <a href=\"#limits-conservativePointAndLineRasterization\"><code>conservativePointAndLineRasterization</code></a> is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the <code>conservativeRasterizationMode</code> set by the last call to <a href=\"#vkCmdSetConservativeRasterizationModeEXT\">vkCmdSetConservativeRasterizationModeEXT</a> <strong class=\"purple\">must</strong> be <code>VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-stage-07073",
          "text": "If the currently bound pipeline was created with the <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a>::<code>stage</code> member of an element of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> set to <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>, then <a href=\"#queries-mesh-shader\">Mesh Shader Queries</a> <strong class=\"purple\">must</strong> not be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08877",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07850",
          "text": "If dynamic state was inherited from <a href=\"#VkCommandBufferInheritanceViewportScissorInfoNV\">VkCommandBufferInheritanceViewportScissorInfoNV</a>, it <strong class=\"purple\">must</strong> be set in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08684",
          "text": "If there is no bound graphics pipeline, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_VERTEX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08685",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08686",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08687",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08688",
          "text": "If there is no bound graphics pipeline, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08689",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TASK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08690",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08693",
          "text": "If there is no bound graphics pipeline, and at least one of the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features is enabled, one of the <code>VK_SHADER_STAGE_VERTEX_BIT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stages <strong class=\"purple\">must</strong> have a valid <code>VkShaderEXT</code> bound, and the other <strong class=\"purple\">must</strong> have no <code>VkShaderEXT</code> bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08694",
          "text": "If there is no bound graphics pipeline, and both the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features are enabled, and a valid <code>VkShaderEXT</code> is bound the to the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage, and that <code>VkShaderEXT</code> was created without the <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> flag, a valid <code>VkShaderEXT</code> <strong class=\"purple\">must</strong> be bound to the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08695",
          "text": "If there is no bound graphics pipeline, and both the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features are enabled, and a valid <code>VkShaderEXT</code> is bound the to the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage, and that <code>VkShaderEXT</code> was created with the <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> flag, there <strong class=\"purple\">must</strong> be no <code>VkShaderEXT</code> bound to the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08696",
          "text": "If there is no bound graphics pipeline, and a valid <code>VkShaderEXT</code> is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, there <strong class=\"purple\">must</strong> be no <code>VkShaderEXT</code> bound to either the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage or the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08698",
          "text": "If any graphics shader is bound which was created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag, then all shaders created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag in the same <a href=\"#vkCreateShadersEXT\">vkCreateShadersEXT</a> call <strong class=\"purple\">must</strong> also be bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08699",
          "text": "If any graphics shader is bound which was created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag, any stages in between stages whose shaders which did not create a shader with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag as part of the same <a href=\"#vkCreateShadersEXT\">vkCreateShadersEXT</a> call <strong class=\"purple\">must</strong> not have any <code>VkShaderEXT</code> bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08878",
          "text": "All bound graphics shader objects <strong class=\"purple\">must</strong> have been created with identical or identically defined push constant ranges",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08879",
          "text": "All bound graphics shader objects <strong class=\"purple\">must</strong> have been created with identical or identically defined arrays of descriptor set layouts",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-colorAttachmentCount-09372",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, and a fragment shader is bound, it <strong class=\"purple\">must</strong> not declare the <code>DepthReplacing</code> or <code>StencilRefReplacingEXT</code> execution modes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-pDynamicStates-08715",
          "text": "If the bound graphics pipeline state includes a fragment shader stage, was created with <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpDepthAttachmentReadEXT</code>, the <code>depthWriteEnable</code> parameter in the last call to <a href=\"#vkCmdSetDepthWriteEnable\">vkCmdSetDepthWriteEnable</a> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-pDynamicStates-08716",
          "text": "If the bound graphics pipeline state includes a fragment shader stage, was created with <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpStencilAttachmentReadEXT</code>, the <code>writeMask</code> parameter in the last call to <a href=\"#vkCmdSetStencilWriteMask\">vkCmdSetStencilWriteMask</a> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-09116",
          "text": "If     a shader object is bound to any graphics stage or     the currently bound graphics pipeline was created with     <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code>,     and the format of any color attachment is     <code>VK_FORMAT_E5B9G9R9_UFLOAT_PACK32</code>, the corresponding element of the     <code>pColorWriteMasks</code> parameter of <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a>     <strong class=\"purple\">must</strong> either include all of <code>VK_COLOR_COMPONENT_R_BIT</code>,     <code>VK_COLOR_COMPONENT_G_BIT</code>, and <code>VK_COLOR_COMPONENT_B_BIT</code>, or     none of them",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-maxFragmentDualSrcAttachments-09239",
          "text": "If <a href=\"#framebuffer-blending\">blending</a> is enabled for any attachment where either the source or destination blend factors for that attachment <a href=\"#framebuffer-dsb\">use the secondary color input</a>, the maximum value of <code>Location</code> for any output attachment <a href=\"#shaders-staticuse\">statically used</a> in the <code>Fragment</code> <code>Execution</code> <code>Model</code> executed by this command <strong class=\"purple\">must</strong> be less than <a href=\"#limits-maxFragmentDualSrcAttachments\"><code>maxFragmentDualSrcAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-09548",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and there is no shader object bound to any graphics stage, the value of each element of <a href=\"#VkRenderingAttachmentLocationInfoKHR\">VkRenderingAttachmentLocationInfoKHR</a>::<code>pColorAttachmentLocations</code> set by <a href=\"#vkCmdSetRenderingAttachmentLocationsKHR\">vkCmdSetRenderingAttachmentLocationsKHR</a> <strong class=\"purple\">must</strong> match the value set for the corresponding element in the currently bound pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-09549",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and there is no shader object bound to any graphics stage, input attachment index mappings in the currently bound pipeline <strong class=\"purple\">must</strong> match those set for the current render pass instance via <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-09642",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with the <code>VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT</code> flag, the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-09643",
          "text": "If the bound graphics pipeline was created with <code>VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT</code>, the current render pass <strong class=\"purple\">must</strong> have begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with the <code>VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT</code> flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-stage-06480",
          "text": "The bound graphics pipeline <strong class=\"purple\">must</strong> not have been created with the <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a>::<code>stage</code> member of an element of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> set to <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07074",
          "text": "<a href=\"#queries-transform-feedback\">Transform Feedback Queries</a> <strong class=\"purple\">must</strong> not be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07075",
          "text": "<a href=\"#queries-primitives-generated\">Primitives Generated Queries</a> <strong class=\"purple\">must</strong> not be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-pipelineStatistics-07076",
          "text": "The <code>pipelineStatistics</code> member used to create any active <a href=\"#queries-pipestats\">Pipeline Statistics Query</a> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT</code>, or <code>VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-TaskEXT-07322",
          "text": "If the current pipeline bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> contains a shader using the <code>TaskEXT</code> <code>Execution</code> <code>Model</code>, <code>groupCountX</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesEXT</code>::<code>maxTaskWorkGroupCount</code>[0]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-TaskEXT-07323",
          "text": "If the current pipeline bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> contains a shader using the <code>TaskEXT</code> <code>Execution</code> <code>Model</code>, <code>groupCountY</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesEXT</code>::<code>maxTaskWorkGroupCount</code>[1]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-TaskEXT-07324",
          "text": "If the current pipeline bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> contains a shader using the <code>TaskEXT</code> <code>Execution</code> <code>Model</code>, <code>groupCountZ</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesEXT</code>::<code>maxTaskWorkGroupCount</code>[2]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-TaskEXT-07325",
          "text": "If the current pipeline bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> contains a shader using the <code>TaskEXT</code> <code>Execution</code> <code>Model</code>, The product of <code>groupCountX</code>, <code>groupCountY</code> and <code>groupCountZ</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesEXT</code>::<code>maxTaskWorkGroupTotalCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-TaskEXT-07326",
          "text": "If the current pipeline bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> does not contain a shader using the <code>TaskEXT</code> <code>Execution</code> <code>Model</code>, <code>groupCountX</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesEXT</code>::<code>maxMeshWorkGroupCount</code>[0]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-TaskEXT-07327",
          "text": "If the current pipeline bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> does not contain a shader using the <code>TaskEXT</code> <code>Execution</code> <code>Model</code>, <code>groupCountY</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesEXT</code>::<code>maxMeshWorkGroupCount</code>[1]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-TaskEXT-07328",
          "text": "If the current pipeline bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> does not contain a shader using the <code>TaskEXT</code> <code>Execution</code> <code>Model</code>, <code>groupCountZ</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesEXT</code>::<code>maxMeshWorkGroupCount</code>[2]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-TaskEXT-07329",
          "text": "If the current pipeline bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> does not contain a shader using the <code>TaskEXT</code> <code>Execution</code> <code>Model</code>, The product of <code>groupCountX</code>, <code>groupCountY</code> and <code>groupCountZ</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesEXT</code>::<code>maxMeshWorkGroupTotalCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-MeshEXT-07087",
          "text": "The current pipeline bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> <strong class=\"purple\">must</strong> contain a shader stage using the <code>MeshEXT</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdDrawMeshTasksIndirectEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-magFilter-04553",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-magFilter-09598",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-mipmapMode-04770",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-mipmapMode-09599",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-unnormalizedCoordinates-09635",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>levelCount</code> and <code>layerCount</code> <strong class=\"purple\">must</strong> be 1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-unnormalizedCoordinates-09636",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_VIEW_TYPE_1D</code> or <code>VK_IMAGE_VIEW_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-06479",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is sampled with <a href=\"#textures-depth-compare-operation\">depth comparison</a>, 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_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-02691",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed using atomic operations as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07888",
          "text": "If a <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> descriptor is accessed using atomic operations as a result of this command, then the storage texel buffer&#8217;s <a href=\"#resources-buffer-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-02692",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-02693",
          "text": "If the <a href=\"#VK_EXT_filter_cubic\">VK_EXT_filter_cubic</a> extension is not enabled and any <a href=\"#VkImageView\">VkImageView</a> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, it <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-filterCubic-02694",
          "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 <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubic</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-filterCubicMinmax-02695",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubicMinmax</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-cubicRangeClamp-09212",
          "text": "If the <a href=\"#features-filter-cubic-range-clamp\"><code>cubicRangeClamp</code></a> feature is not enabled, then 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=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-reductionMode-09213",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with a <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code> as a result of this command <strong class=\"purple\">must</strong> sample with <code>VK_FILTER_CUBIC_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-selectableCubicWeights-09214",
          "text": "If the <a href=\"#features-filter-cubic-weight-selection\"><code>selectableCubicWeights</code></a> feature is not enabled, then 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 href=\"#VkSamplerCubicWeightsCreateInfoQCOM\">VkSamplerCubicWeightsCreateInfoQCOM</a>::<code>cubicWeights</code> equal to <code>VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-flags-02696",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-OpTypeImage-07027",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being written as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-OpTypeImage-07028",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being read as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-OpTypeImage-07029",
          "text": "For any <a href=\"#VkBufferView\">VkBufferView</a> being written as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-OpTypeImage-07030",
          "text": "Any <a href=\"#VkBufferView\">VkBufferView</a> being read as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code> then the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08600",
          "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08601",
          "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-10068",
          "text": "For each array of resources that is used by <a href=\"#shaders-binding\">a bound shader</a>, the indices used to access members of the array <strong class=\"purple\">must</strong> be less than the descriptor count for the identified binding in the descriptor sets used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-maintenance4-08602",
          "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08114",
          "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08115",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created without <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08116",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08604",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08117",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08119",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkPipeline\">VkPipeline</a> created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08605",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkShaderEXT\">VkShaderEXT</a> created with a <code>VkDescriptorSetLayout</code> that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08606",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is not enabled, a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08608",
          "text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state specified statically in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08609",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <a href=\"#VkImage\">VkImage</a> with a <a href=\"#VkImageView\">VkImageView</a> 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08610",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08611",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08607",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-uniformBuffers-06935",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08612",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-storageBuffers-06936",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>storageBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08613",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-commandBuffer-02707",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, any resource accessed by <a href=\"#shaders-binding\">bound shaders</a> <strong class=\"purple\">must</strong> not be a protected resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-06550",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> only be used with <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-ConstOffset-06551",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> not use the <code>ConstOffset</code> and <code>Offset</code> operands",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-viewType-07752",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> match the <code>Dim</code> operand of the <code>OpTypeImage</code> as described in <a href=\"#spirvenv-image-dimensions\">Compatibility Between SPIR-V Image Dimensions and Vulkan ImageView Types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-format-07753",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the <a href=\"#formats-numericformat\">numeric type</a> of the image view&#8217;s <code>format</code> and the <code>Sampled</code> <code>Type</code> operand of the <code>OpTypeImage</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageWrite-08795",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with a format other than <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageWrite-08796",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with the format <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have four components",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageWrite-04469",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the buffer view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-SampledType-04470",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-SampledType-04471",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-SampledType-04472",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-SampledType-04473",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-sparseImageInt64Atomics-04474",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-sparseImageInt64Atomics-04475",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageWeightedSampleQCOM-06971",
          "text": "If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageWeightedSampleQCOM-06972",
          "text": "If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image 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_2_WEIGHT_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageBoxFilterQCOM-06973",
          "text": "If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageBlockMatchSSDQCOM-06974",
          "text": "If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageBlockMatchSADQCOM-06975",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageBlockMatchSADQCOM-06976",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageWeightedSampleQCOM-06977",
          "text": "If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageWeightedSampleQCOM-06978",
          "text": "If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageBlockMatchWindow-09215",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageBlockMatchWindow-09216",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s format <strong class=\"purple\">must</strong> be a single-component format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageBlockMatchWindow-09217",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07288",
          "text": "Any shader invocation executed by this command <strong class=\"purple\">must</strong> <a href=\"#shaders-termination\">terminate</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-09600",
          "text": "If a descriptor with type equal to any of <code>VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> is accessed as a result of this command, the image subresource identified by that descriptor <strong class=\"purple\">must</strong> be in the image layout identified when the descriptor was written",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-renderPass-02684",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-subpass-02685",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07748",
          "text": "If any shader statically accesses an input attachment, a valid descriptor <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-OpTypeImage-07468",
          "text": "If any shader executed by this pipeline accesses an <code>OpTypeImage</code> variable with a <code>Dim</code> operand of <code>SubpassData</code>, it <strong class=\"purple\">must</strong> be decorated with an <code>InputAttachmentIndex</code> that corresponds to a valid input attachment in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07469",
          "text": "Input attachment views accessed in a subpass <strong class=\"purple\">must</strong> be created with the same <a href=\"#VkFormat\">VkFormat</a> as the corresponding subpass definition, and be created with a <a href=\"#VkImageView\">VkImageView</a> that is compatible with the attachment referenced by the subpass' <code>pInputAttachments</code>[<code>InputAttachmentIndex</code>] in the currently bound <a href=\"#VkFramebuffer\">VkFramebuffer</a> as specified by <a href=\"#compatibility-inputattachment\">Fragment Input Attachment Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-pDepthInputAttachmentIndex-09595",
          "text": "Input attachment views accessed in a dynamic render pass with a <code>InputAttachmentIndex</code> referenced by <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>, or no <code>InputAttachmentIndex</code> if <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pDepthInputAttachmentIndex</code> or <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pStencilInputAttachmentIndex</code> are <code>NULL</code>, <strong class=\"purple\">must</strong> be created with a <a href=\"#VkImageView\">VkImageView</a> that is compatible with the corresponding color, depth, or stencil attachment in <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-pDepthInputAttachmentIndex-09596",
          "text": "Input attachment views accessed in a dynamic render pass via a shader object <strong class=\"purple\">must</strong> have an <code>InputAttachmentIndex</code> if both <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pDepthInputAttachmentIndex</code> and <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pStencilInputAttachmentIndex</code> are non-<code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-InputAttachmentIndex-09597",
          "text": "If an input attachment view accessed in a dynamic render pass via a shader object has an <code>InputAttachmentIndex</code>, the <code>InputAttachmentIndex</code> <strong class=\"purple\">must</strong> match an index in <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-06537",
          "text": "Memory backing image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be written in any way other than as an attachment by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-09000",
          "text": "If a color attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe <code>VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code> is\nset on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_COLOR_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-09001",
          "text": "If a depth attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe\n<code>VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code>\nis set on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_DEPTH_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-09002",
          "text": "If a stencil attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe\n<code>VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code>\nis set on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_STENCIL_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-09003",
          "text": "If an attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment, storage image, or sampled image by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-06539",
          "text": "If any previously recorded command in the current subpass accessed an image subresource used as an attachment in this subpass in any way other than as an attachment, this command <strong class=\"purple\">must</strong> not write to that image subresource as an attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-06886",
          "text": "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, <a href=\"#fragops-depth-write\">depth writes</a> <strong class=\"purple\">must</strong> be disabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-06887",
          "text": "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back <code>writeMask</code> are not zero, and stencil test is enabled, <a href=\"#fragops-stencil\">all stencil ops</a> <strong class=\"purple\">must</strong> be <code>VK_STENCIL_OP_KEEP</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07831",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT</code> dynamic state enabled then <a href=\"#vkCmdSetViewport\">vkCmdSetViewport</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07832",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR</code> dynamic state enabled then <a href=\"#vkCmdSetScissor\">vkCmdSetScissor</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07833",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_WIDTH</code> dynamic state enabled then <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08617",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08618",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08619",
          "text": "If a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07834",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthBiasEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthBounds\">vkCmdSetDepthBounds</a> or <a href=\"#vkCmdSetDepthBias2EXT\">vkCmdSetDepthBias2EXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07835",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_BLEND_CONSTANTS</code> dynamic state enabled then <a href=\"#vkCmdSetBlendConstants\">vkCmdSetBlendConstants</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08621",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> in the current command buffer set any element of <code>pColorBlendEnables</code> to <code>VK_TRUE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> in the current command buffer set the same element of <code>pColorBlendEquations</code> to a <code>VkColorBlendEquationEXT</code> structure with any <a href=\"#VkBlendFactor\">VkBlendFactor</a> member with a value of <code>VK_BLEND_FACTOR_CONSTANT_COLOR</code>, <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR</code>, <code>VK_BLEND_FACTOR_CONSTANT_ALPHA</code>, or <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA</code>, <a href=\"#vkCmdSetBlendConstants\">vkCmdSetBlendConstants</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07836",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthBoundsTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthBounds\">vkCmdSetDepthBounds</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07837",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilCompareMask\">vkCmdSetStencilCompareMask</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07838",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilWriteMask\">vkCmdSetStencilWriteMask</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07839",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_REFERENCE</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of and <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilReference\">vkCmdSetStencilReference</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-maxMultiviewInstanceIndex-02688",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-02689",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-06666",
          "text": "If the <code><a href=\"#VK_EXT_sample_locations\">VK_EXT_sample_locations</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07840",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_CULL_MODE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCullMode\">vkCmdSetCullMode</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07841",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_FRONT_FACE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetFrontFace\">vkCmdSetFrontFace</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07843",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, <a href=\"#vkCmdSetDepthTestEnable\">vkCmdSetDepthTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07844",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthWriteEnable\">vkCmdSetDepthWriteEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07845",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_COMPARE_OP</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthCompareOp\">vkCmdSetDepthCompareOp</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07846",
          "text": "If the <a href=\"#features-depthBounds\"><code>depthBounds</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthBoundsTestEnable\">vkCmdSetDepthBoundsTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07847",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetStencilTestEnable\">vkCmdSetStencilTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07848",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_OP</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilOp\">vkCmdSetStencilOp</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-viewportCount-03417",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-scissorCount-03418",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, then <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-viewportCount-03419",
          "text": "If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> and <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08635",
          "text": "If a shader object is bound to any graphics stage, then both <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> and <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-viewportCount-04137",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-viewportCount-04138",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08636",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-viewportCount-04139",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-shadingRateImage-09233",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV</code> and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-shadingRateImage-09234",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08637",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-VkPipelineVieportCreateInfo-04141",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled and a <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> structure chained from <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-VkPipelineVieportCreateInfo-04142",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled and a <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> structure chained from <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07878",
          "text": "If the <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetExclusiveScissorEnableNV\">vkCmdSetExclusiveScissorEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07879",
          "text": "If the <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV</code> dynamic state enabled, and the most recent call to <a href=\"#vkCmdSetExclusiveScissorEnableNV\">vkCmdSetExclusiveScissorEnableNV</a> in the current command buffer set any element of <code>pExclusiveScissorEnables</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetExclusiveScissorNV\">vkCmdSetExclusiveScissorNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-04876",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-04877",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthBiasEnable\">vkCmdSetDepthBiasEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-logicOp-04878",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_LOGIC_OP_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>logicOpEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetLogicOpEXT\">vkCmdSetLogicOpEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-primitiveFragmentShadingRateWithMultipleViewports-04552",
          "text": "If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-primitiveFragmentShadingRateWithMultipleViewports-08642",
          "text": "If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, and any shader object bound to a graphics stage writes to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-blendEnable-04727",
          "text": "If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the <code>blendEnable</code> member of the corresponding element of the <code>pAttachments</code> member of <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08643",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then for each color attachment in the render pass, if the corresponding image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the corresponding member of <code>pColorBlendEnables</code> in the most recent call to <code>vkCmdSetColorBlendEnableEXT</code> in the current command buffer that affected that attachment index <strong class=\"purple\">must</strong> have been <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-multisampledRenderToSingleSampled-07284",
          "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then <code>rasterizationSamples</code> for the currently bound graphics pipeline\n<strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil\nattachments</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08644",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the\ncurrent command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the\nsame as the number of samples for the current render pass color and/or\ndepth/stencil attachments</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08876",
          "text": "If a shader object is bound to any graphics stage, the current render pass instance <strong class=\"purple\">must</strong> have been begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-imageView-06172",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-imageView-06173",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-imageView-06174",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-imageView-06175",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-imageView-06176",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-imageView-06177",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-viewMask-06178",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>viewMask</code> equal to <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>viewMask</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-colorAttachmentCount-06179",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>colorAttachmentCount</code> equal to <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-08910",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-08912",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-08911",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-colorAttachmentCount-09362",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, there is no shader object bound to any graphics stage, and a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>resolveImageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with an image created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value equal to the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-09363",
          "text": "If there is no shader object bound to any graphics stage, the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, and a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with an image created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value equal to the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-09364",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have set the blend enable to <code>VK_FALSE</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-09365",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to <code>VK_SAMPLE_COUNT_1_BIT</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-09366",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have set blend enable to <code>VK_FALSE</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizationSamples-09367",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to <code>VK_SAMPLE_COUNT_1_BIT</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-09368",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;width</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-09369",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;height</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-pFragmentSize-09370",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;width</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-pFragmentSize-09371",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;height</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07749",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteEnableEXT\">vkCmdSetColorWriteEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08646",
          "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is enabled on the device, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorWriteEnableEXT\">vkCmdSetColorWriteEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-attachmentCount-07750",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code> dynamic state enabled then the <code>attachmentCount</code> parameter of <code>vkCmdSetColorWriteEnableEXT</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>VkPipelineColorBlendStateCreateInfo</code>::<code>attachmentCount</code> of the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08647",
          "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is enabled on the device, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then the <code>attachmentCount</code> parameter of most recent call to <code>vkCmdSetColorWriteEnableEXT</code> in the current command buffer <strong class=\"purple\">must</strong> be greater than or equal to the number of color attachments in the current render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07751",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleEXT\">vkCmdSetDiscardRectangleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command for each discard rectangle in <a href=\"#VkPipelineDiscardRectangleStateCreateInfoEXT\">VkPipelineDiscardRectangleStateCreateInfoEXT</a>::<code>discardRectangleCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07880",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizerDiscardEnable-09236",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> in the current command buffer set <code>discardRectangleEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDiscardRectangleEXT\">vkCmdSetDiscardRectangleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08648",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07881",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleModeEXT\">vkCmdSetDiscardRectangleModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08649",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> in the current command buffer set <code>discardRectangleEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDiscardRectangleModeEXT\">vkCmdSetDiscardRectangleModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-08913",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-08914",
          "text": "If current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-08915",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline was not equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>, the value of the format <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-08916",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-08917",
          "text": "If current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-dynamicRenderingUnusedAttachments-08918",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline was not equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>, the value of the format <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-imageView-06183",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a>::<code>imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-imageView-06184",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingFragmentDensityMapAttachmentInfoEXT\">VkRenderingFragmentDensityMapAttachmentInfoEXT</a>::<code>imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-colorAttachmentCount-06185",
          "text": "If the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the corresponding element of the <code>pColorAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-pDepthAttachment-06186",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-pStencilAttachment-06187",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-multisampledRenderToSingleSampled-07285",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     the current render pass instance was begun with     <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than     <code>0</code>, then each element of the     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a     <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been     created with a sample count equal to the value of     <code>rasterizationSamples</code> for the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-multisampledRenderToSingleSampled-07286",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not     <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the     currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count     used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-multisampledRenderToSingleSampled-07287",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not     <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the     currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count     used to create     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-pNext-07935",
          "text": "If this command has been called inside a render pass instance started with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and the <code>pNext</code> chain of <a href=\"#VkRenderingInfo\">VkRenderingInfo</a> includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a>::<code>rasterizationSamples</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-renderPass-06198",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>renderPass</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-pColorAttachments-08963",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound with a fragment shader that statically writes to a color attachment, the color write mask is not zero, color writes are enabled, and the corresponding element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-pDepthAttachment-08964",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound, depth test is enabled, depth write is enabled, and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-pStencilAttachment-08965",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound, stencil test is enabled and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-primitivesGeneratedQueryWithRasterizerDiscard-06708",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithRasterizerDiscard\"><code>primitivesGeneratedQueryWithRasterizerDiscard</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, <a href=\"#primsrast-discard\">rasterization discard</a> <strong class=\"purple\">must</strong> not be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-primitivesGeneratedQueryWithNonZeroStreams-06709",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, the bound graphics pipeline <strong class=\"purple\">must</strong> not have been created with a non-zero value in <code>VkPipelineRasterizationStateStreamCreateInfoEXT</code>::<code>rasterizationStream</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07619",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetTessellationDomainOriginEXT\">vkCmdSetTessellationDomainOriginEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07620",
          "text": "If the <a href=\"#features-depthClamp\"><code>depthClamp</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthClampEnableEXT\">vkCmdSetDepthClampEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07621",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_POLYGON_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07622",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07623",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-alphaToCoverageEnable-08919",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic state enabled, and <code>alphaToCoverageEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-alphaToCoverageEnable-08920",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a> in the current command buffer set <code>alphaToCoverageEnable</code> to <code>VK_TRUE</code>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07624",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07625",
          "text": "If the <a href=\"#features-alphaToOne\"><code>alphaToOne</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAlphaToOneEnableEXT\">vkCmdSetAlphaToOneEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07626",
          "text": "If the <a href=\"#features-logicOp\"><code>logicOp</code></a> feature is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLogicOpEnableEXT\">vkCmdSetLogicOpEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07627",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08657",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07628",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08658",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> for any attachment set that attachment&#8217;s value in <code>pColorBlendEnables</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07629",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08659",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07630",
          "text": "If the <a href=\"#features-geometryStreams\"><code>geometryStreams</code></a> feature is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizationStreamEXT\">vkCmdSetRasterizationStreamEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07631",
          "text": "If the <code><a href=\"#VK_EXT_conservative_rasterization\">VK_EXT_conservative_rasterization</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetConservativeRasterizationModeEXT\">vkCmdSetConservativeRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07632",
          "text": "If the <code><a href=\"#VK_EXT_conservative_rasterization\">VK_EXT_conservative_rasterization</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>conservativeRasterizationMode</code> is <code>VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT</code>, then <a href=\"#vkCmdSetExtraPrimitiveOverestimationSizeEXT\">vkCmdSetExtraPrimitiveOverestimationSizeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07633",
          "text": "If the <a href=\"#features-depthClipEnable\"><code>depthClipEnable</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT</code> dynamic state, then <a href=\"#vkCmdSetDepthClipEnableEXT\">vkCmdSetDepthClipEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07634",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08664",
          "text": "If the <code><a href=\"#VK_EXT_sample_locations\">VK_EXT_sample_locations</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07635",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizerDiscardEnable-09416",
          "text": "If the <code><a href=\"#VK_EXT_blend_operation_advanced\">VK_EXT_blend_operation_advanced</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then at least one of <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> and <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07636",
          "text": "If the <code><a href=\"#VK_EXT_provoking_vertex\">VK_EXT_provoking_vertex</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetProvokingVertexModeEXT\">vkCmdSetProvokingVertexModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07637",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08666",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08667",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08668",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07638",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08669",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08670",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08671",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07849",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_KHR</code>     dynamic state enabled then <a href=\"#vkCmdSetLineStippleKHR\">vkCmdSetLineStippleKHR</a>     <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing     command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08672",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> in the current command buffer set <code>stippledLineEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetLineStippleEXT\">vkCmdSetLineStippleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07639",
          "text": "If the <a href=\"#features-depthClipControl\"><code>depthClipControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetDepthClipNegativeOneToOneEXT\">vkCmdSetDepthClipNegativeOneToOneEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-09650",
          "text": "If the <a href=\"#features-depthClampControl\"><code>depthClampControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthClampEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthClampRangeEXT\">vkCmdSetDepthClampRangeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07640",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07641",
          "text": "If the <code><a href=\"#VK_NV_viewport_swizzle\">VK_NV_viewport_swizzle</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07642",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07643",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageToColorEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07644",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageModulationModeNV\">vkCmdSetCoverageModulationModeNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07645",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageModulationMode</code> is any value other than <code>VK_COVERAGE_MODULATION_MODE_NONE_NV</code>, then <a href=\"#vkCmdSetCoverageModulationTableEnableNV\">vkCmdSetCoverageModulationTableEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07646",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageModulationTableEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetCoverageModulationTableNV\">vkCmdSetCoverageModulationTableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07647",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-pipelineFragmentShadingRate-09238",
          "text": "If the <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a> feature is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07648",
          "text": "If the <a href=\"#features-representativeFragmentTest\"><code>representativeFragmentTest</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetRepresentativeFragmentTestEnableNV\">vkCmdSetRepresentativeFragmentTestEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07649",
          "text": "If the <a href=\"#features-coverageReductionMode\"><code>coverageReductionMode</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageReductionModeNV\">vkCmdSetCoverageReductionModeNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-pColorBlendEnables-07470",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> state enabled and the last call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> set <code>pColorBlendEnables</code> for any attachment to <code>VK_TRUE</code>, then for those attachments in the subpass the corresponding 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_BLEND_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizationSamples-07471",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> follow the rules for a <a href=\"#renderpass-noattachments\">zero-attachment subpass</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-samples-07472",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, then the <code>samples</code> parameter in the last call to <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> be greater or equal to the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a>::<code>rasterizationSamples</code> parameter used to create the bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-samples-07473",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> state and <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> states enabled, then the <code>samples</code> parameter in the last call to <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> be greater or equal to the <code>rasterizationSamples</code> parameter in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizationSamples-07474",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and neither the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> nor the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extensions are enabled, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil attachments",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-09211",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, or a shader object is bound to any graphics stage, and the current render pass instance includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> be the same as the <code>rasterizationSamples</code> member of that structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-firstAttachment-07476",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEnableEXT</code> calls <strong class=\"purple\">must</strong> specify an enable for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizerDiscardEnable-09417",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEnableEXT</code> calls <strong class=\"purple\">must</strong> specify an enable for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-firstAttachment-07477",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEquationEXT</code> calls <strong class=\"purple\">must</strong> specify the blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizerDiscardEnable-09418",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEquationEXT</code> calls <strong class=\"purple\">must</strong> specify the blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-firstAttachment-07478",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorWriteMaskEXT</code> calls <strong class=\"purple\">must</strong> specify the color write mask for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizerDiscardEnable-09419",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorWriteMaskEXT</code> calls <strong class=\"purple\">must</strong> specify the color write mask for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-firstAttachment-07479",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendAdvancedEXT</code> calls <strong class=\"purple\">must</strong> specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-advancedBlendMaxColorAttachments-07480",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> and <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic states enabled and the last calls to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> and <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> have enabled advanced blending, then the number of active color attachments in the current subpass <strong class=\"purple\">must</strong> not exceed <a href=\"#limits-advancedBlendMaxColorAttachments\"><code>advancedBlendMaxColorAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-primitivesGeneratedQueryWithNonZeroStreams-07481",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, and the bound graphics pipeline was created with <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code> state enabled, the last call to <a href=\"#vkCmdSetRasterizationStreamEXT\">vkCmdSetRasterizationStreamEXT</a> <strong class=\"purple\">must</strong> have set the <code>rasterizationStream</code> to zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsPerPixel-07482",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsPerPixel-07483",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-07484",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-07485",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, then the <code>sampleLocationsInfo.sampleLocationGridSize.width</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-07486",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, then the <code>sampleLocationsInfo.sampleLocationGridSize.height</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-07487",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, the fragment shader code <strong class=\"purple\">must</strong> not statically use the extended instruction <code>InterpolateAtSample</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-07936",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <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 the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-07937",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <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 the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-07938",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-coverageModulationTableEnable-07488",
          "text": "If a shader object is bound to any graphics stage or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code> state enabled, and the last call to <a href=\"#vkCmdSetCoverageModulationTableEnableNV\">vkCmdSetCoverageModulationTableEnableNV</a> set <code>coverageModulationTableEnable</code> to <code>VK_TRUE</code>, then the <code>coverageModulationTableCount</code> parameter in the last call to <a href=\"#vkCmdSetCoverageModulationTableNV\">vkCmdSetCoverageModulationTableNV</a> <strong class=\"purple\">must</strong> equal the current <code>rasterizationSamples</code> divided by the number of color samples in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizationSamples-07489",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current <code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be the same as the sample count of the depth/stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-coverageToColorEnable-07490",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> state enabled and the last call to <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> set the <code>coverageToColorEnable</code> to <code>VK_TRUE</code>, then the current subpass <strong class=\"purple\">must</strong> have a color attachment at the location selected by the last call to <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizerDiscardEnable-09420",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the last call to <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> set the <code>coverageToColorEnable</code> to <code>VK_TRUE</code>, then the current subpass <strong class=\"purple\">must</strong> have a color attachment at the location selected by the last call to <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-coverageReductionMode-07491",
          "text": "If this <code><a href=\"#VK_NV_coverage_reduction_mode\">VK_NV_coverage_reduction_mode</a></code> extension is enabled, the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> and <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> states enabled, the current coverage reduction mode <code>coverageReductionMode</code>, then the current <code>rasterizationSamples</code>, and the sample counts for the color and depth/stencil attachments (if the subpass has them) <strong class=\"purple\">must</strong> be a valid combination returned by <a href=\"#vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV\">vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-viewportCount-07492",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-viewportCount-07493",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-viewportCount-09421",
          "text": "If the <code><a href=\"#VK_NV_viewport_swizzle\">VK_NV_viewport_swizzle</a></code> extension is enabled, and a shader object is bound to any graphics stage, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizationSamples-07494",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, and if the current subpass has any color attachments and <code>rasterizationSamples</code> of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> is greater than the number of color samples, then the pipeline <code>sampleShadingEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-stippledLineEnable-07495",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-stippledLineEnable-07496",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR</code>, then the <a href=\"#features-stippledBresenhamLines\"><code>stippledBresenhamLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-stippledLineEnable-07497",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR</code>, then the <a href=\"#features-stippledSmoothLines\"><code>stippledSmoothLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-stippledLineEnable-07498",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_DEFAULT_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled and <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>strictLines</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-conservativePointAndLineRasterization-07499",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code> dynamic state enabled, <a href=\"#limits-conservativePointAndLineRasterization\"><code>conservativePointAndLineRasterization</code></a> is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the <code>conservativeRasterizationMode</code> set by the last call to <a href=\"#vkCmdSetConservativeRasterizationModeEXT\">vkCmdSetConservativeRasterizationModeEXT</a> <strong class=\"purple\">must</strong> be <code>VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-stage-07073",
          "text": "If the currently bound pipeline was created with the <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a>::<code>stage</code> member of an element of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> set to <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>, then <a href=\"#queries-mesh-shader\">Mesh Shader Queries</a> <strong class=\"purple\">must</strong> not be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08877",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07850",
          "text": "If dynamic state was inherited from <a href=\"#VkCommandBufferInheritanceViewportScissorInfoNV\">VkCommandBufferInheritanceViewportScissorInfoNV</a>, it <strong class=\"purple\">must</strong> be set in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08684",
          "text": "If there is no bound graphics pipeline, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_VERTEX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08685",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08686",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08687",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08688",
          "text": "If there is no bound graphics pipeline, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08689",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TASK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08690",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08693",
          "text": "If there is no bound graphics pipeline, and at least one of the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features is enabled, one of the <code>VK_SHADER_STAGE_VERTEX_BIT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stages <strong class=\"purple\">must</strong> have a valid <code>VkShaderEXT</code> bound, and the other <strong class=\"purple\">must</strong> have no <code>VkShaderEXT</code> bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08694",
          "text": "If there is no bound graphics pipeline, and both the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features are enabled, and a valid <code>VkShaderEXT</code> is bound the to the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage, and that <code>VkShaderEXT</code> was created without the <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> flag, a valid <code>VkShaderEXT</code> <strong class=\"purple\">must</strong> be bound to the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08695",
          "text": "If there is no bound graphics pipeline, and both the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features are enabled, and a valid <code>VkShaderEXT</code> is bound the to the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage, and that <code>VkShaderEXT</code> was created with the <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> flag, there <strong class=\"purple\">must</strong> be no <code>VkShaderEXT</code> bound to the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08696",
          "text": "If there is no bound graphics pipeline, and a valid <code>VkShaderEXT</code> is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, there <strong class=\"purple\">must</strong> be no <code>VkShaderEXT</code> bound to either the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage or the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08698",
          "text": "If any graphics shader is bound which was created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag, then all shaders created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag in the same <a href=\"#vkCreateShadersEXT\">vkCreateShadersEXT</a> call <strong class=\"purple\">must</strong> also be bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08699",
          "text": "If any graphics shader is bound which was created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag, any stages in between stages whose shaders which did not create a shader with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag as part of the same <a href=\"#vkCreateShadersEXT\">vkCreateShadersEXT</a> call <strong class=\"purple\">must</strong> not have any <code>VkShaderEXT</code> bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08878",
          "text": "All bound graphics shader objects <strong class=\"purple\">must</strong> have been created with identical or identically defined push constant ranges",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08879",
          "text": "All bound graphics shader objects <strong class=\"purple\">must</strong> have been created with identical or identically defined arrays of descriptor set layouts",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-colorAttachmentCount-09372",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, and a fragment shader is bound, it <strong class=\"purple\">must</strong> not declare the <code>DepthReplacing</code> or <code>StencilRefReplacingEXT</code> execution modes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-pDynamicStates-08715",
          "text": "If the bound graphics pipeline state includes a fragment shader stage, was created with <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpDepthAttachmentReadEXT</code>, the <code>depthWriteEnable</code> parameter in the last call to <a href=\"#vkCmdSetDepthWriteEnable\">vkCmdSetDepthWriteEnable</a> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-pDynamicStates-08716",
          "text": "If the bound graphics pipeline state includes a fragment shader stage, was created with <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpStencilAttachmentReadEXT</code>, the <code>writeMask</code> parameter in the last call to <a href=\"#vkCmdSetStencilWriteMask\">vkCmdSetStencilWriteMask</a> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-09116",
          "text": "If     a shader object is bound to any graphics stage or     the currently bound graphics pipeline was created with     <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code>,     and the format of any color attachment is     <code>VK_FORMAT_E5B9G9R9_UFLOAT_PACK32</code>, the corresponding element of the     <code>pColorWriteMasks</code> parameter of <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a>     <strong class=\"purple\">must</strong> either include all of <code>VK_COLOR_COMPONENT_R_BIT</code>,     <code>VK_COLOR_COMPONENT_G_BIT</code>, and <code>VK_COLOR_COMPONENT_B_BIT</code>, or     none of them",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-maxFragmentDualSrcAttachments-09239",
          "text": "If <a href=\"#framebuffer-blending\">blending</a> is enabled for any attachment where either the source or destination blend factors for that attachment <a href=\"#framebuffer-dsb\">use the secondary color input</a>, the maximum value of <code>Location</code> for any output attachment <a href=\"#shaders-staticuse\">statically used</a> in the <code>Fragment</code> <code>Execution</code> <code>Model</code> executed by this command <strong class=\"purple\">must</strong> be less than <a href=\"#limits-maxFragmentDualSrcAttachments\"><code>maxFragmentDualSrcAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-09548",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and there is no shader object bound to any graphics stage, the value of each element of <a href=\"#VkRenderingAttachmentLocationInfoKHR\">VkRenderingAttachmentLocationInfoKHR</a>::<code>pColorAttachmentLocations</code> set by <a href=\"#vkCmdSetRenderingAttachmentLocationsKHR\">vkCmdSetRenderingAttachmentLocationsKHR</a> <strong class=\"purple\">must</strong> match the value set for the corresponding element in the currently bound pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-09549",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and there is no shader object bound to any graphics stage, input attachment index mappings in the currently bound pipeline <strong class=\"purple\">must</strong> match those set for the current render pass instance via <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-09642",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with the <code>VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT</code> flag, the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-09643",
          "text": "If the bound graphics pipeline was created with <code>VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT</code>, the current render pass <strong class=\"purple\">must</strong> have begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with the <code>VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT</code> flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-stage-06480",
          "text": "The bound graphics pipeline <strong class=\"purple\">must</strong> not have been created with the <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a>::<code>stage</code> member of an element of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> set to <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07074",
          "text": "<a href=\"#queries-transform-feedback\">Transform Feedback Queries</a> <strong class=\"purple\">must</strong> not be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07075",
          "text": "<a href=\"#queries-primitives-generated\">Primitives Generated Queries</a> <strong class=\"purple\">must</strong> not be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-pipelineStatistics-07076",
          "text": "The <code>pipelineStatistics</code> member used to create any active <a href=\"#queries-pipestats\">Pipeline Statistics Query</a> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT</code>, or <code>VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-buffer-02708",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-buffer-02709",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-offset-02710",
          "text": "<code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-commandBuffer-02711",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-drawCount-02718",
          "text": "If the <a href=\"#features-multiDrawIndirect\"><code>multiDrawIndirect</code></a> feature is not enabled, <code>drawCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-drawCount-02719",
          "text": "<code>drawCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-drawCount-07088",
          "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>VkDrawMeshTasksIndirectCommandEXT</code>)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-drawCount-07089",
          "text": "If <code>drawCount</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> +  <code>sizeof</code>(<a href=\"#VkDrawMeshTasksIndirectCommandEXT\">VkDrawMeshTasksIndirectCommandEXT</a>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-drawCount-07090",
          "text": "If <code>drawCount</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> × (<code>drawCount</code> - 1) +  <code>offset</code> +  <code>sizeof</code>(<a href=\"#VkDrawMeshTasksIndirectCommandEXT\">VkDrawMeshTasksIndirectCommandEXT</a>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-MeshEXT-07091",
          "text": "The current pipeline bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> <strong class=\"purple\">must</strong> contain a shader stage using the <code>MeshEXT</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-buffer-parameter",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-commonparent",
          "text": "Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkDrawMeshTasksIndirectCommandEXT": {
      "core": [
        {
          "vuid": "VUID-VkDrawMeshTasksIndirectCommandEXT-TaskEXT-07322",
          "text": "If the current pipeline bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> contains a shader using the <code>TaskEXT</code> <code>Execution</code> <code>Model</code>, <code>groupCountX</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesEXT</code>::<code>maxTaskWorkGroupCount</code>[0]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDrawMeshTasksIndirectCommandEXT-TaskEXT-07323",
          "text": "If the current pipeline bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> contains a shader using the <code>TaskEXT</code> <code>Execution</code> <code>Model</code>, <code>groupCountY</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesEXT</code>::<code>maxTaskWorkGroupCount</code>[1]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDrawMeshTasksIndirectCommandEXT-TaskEXT-07324",
          "text": "If the current pipeline bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> contains a shader using the <code>TaskEXT</code> <code>Execution</code> <code>Model</code>, <code>groupCountZ</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesEXT</code>::<code>maxTaskWorkGroupCount</code>[2]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDrawMeshTasksIndirectCommandEXT-TaskEXT-07325",
          "text": "If the current pipeline bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> contains a shader using the <code>TaskEXT</code> <code>Execution</code> <code>Model</code>, The product of <code>groupCountX</code>, <code>groupCountY</code> and <code>groupCountZ</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesEXT</code>::<code>maxTaskWorkGroupTotalCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDrawMeshTasksIndirectCommandEXT-TaskEXT-07326",
          "text": "If the current pipeline bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> does not contain a shader using the <code>TaskEXT</code> <code>Execution</code> <code>Model</code>, <code>groupCountX</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesEXT</code>::<code>maxMeshWorkGroupCount</code>[0]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDrawMeshTasksIndirectCommandEXT-TaskEXT-07327",
          "text": "If the current pipeline bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> does not contain a shader using the <code>TaskEXT</code> <code>Execution</code> <code>Model</code>, <code>groupCountY</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesEXT</code>::<code>maxMeshWorkGroupCount</code>[1]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDrawMeshTasksIndirectCommandEXT-TaskEXT-07328",
          "text": "If the current pipeline bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> does not contain a shader using the <code>TaskEXT</code> <code>Execution</code> <code>Model</code>, <code>groupCountZ</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesEXT</code>::<code>maxMeshWorkGroupCount</code>[2]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDrawMeshTasksIndirectCommandEXT-TaskEXT-07329",
          "text": "If the current pipeline bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> does not contain a shader using the <code>TaskEXT</code> <code>Execution</code> <code>Model</code>, The product of <code>groupCountX</code>, <code>groupCountY</code> and <code>groupCountZ</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesEXT</code>::<code>maxMeshWorkGroupTotalCount</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdDrawMeshTasksIndirectCountEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-magFilter-04553",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-magFilter-09598",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-mipmapMode-04770",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-mipmapMode-09599",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-unnormalizedCoordinates-09635",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>levelCount</code> and <code>layerCount</code> <strong class=\"purple\">must</strong> be 1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-unnormalizedCoordinates-09636",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_VIEW_TYPE_1D</code> or <code>VK_IMAGE_VIEW_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-06479",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is sampled with <a href=\"#textures-depth-compare-operation\">depth comparison</a>, 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_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-02691",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed using atomic operations as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07888",
          "text": "If a <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> descriptor is accessed using atomic operations as a result of this command, then the storage texel buffer&#8217;s <a href=\"#resources-buffer-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-02692",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-02693",
          "text": "If the <a href=\"#VK_EXT_filter_cubic\">VK_EXT_filter_cubic</a> extension is not enabled and any <a href=\"#VkImageView\">VkImageView</a> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, it <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-filterCubic-02694",
          "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 <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubic</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-filterCubicMinmax-02695",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubicMinmax</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-cubicRangeClamp-09212",
          "text": "If the <a href=\"#features-filter-cubic-range-clamp\"><code>cubicRangeClamp</code></a> feature is not enabled, then 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=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-reductionMode-09213",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with a <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code> as a result of this command <strong class=\"purple\">must</strong> sample with <code>VK_FILTER_CUBIC_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-selectableCubicWeights-09214",
          "text": "If the <a href=\"#features-filter-cubic-weight-selection\"><code>selectableCubicWeights</code></a> feature is not enabled, then 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 href=\"#VkSamplerCubicWeightsCreateInfoQCOM\">VkSamplerCubicWeightsCreateInfoQCOM</a>::<code>cubicWeights</code> equal to <code>VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-flags-02696",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpTypeImage-07027",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being written as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpTypeImage-07028",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being read as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpTypeImage-07029",
          "text": "For any <a href=\"#VkBufferView\">VkBufferView</a> being written as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpTypeImage-07030",
          "text": "Any <a href=\"#VkBufferView\">VkBufferView</a> being read as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code> then the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08600",
          "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08601",
          "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-10068",
          "text": "For each array of resources that is used by <a href=\"#shaders-binding\">a bound shader</a>, the indices used to access members of the array <strong class=\"purple\">must</strong> be less than the descriptor count for the identified binding in the descriptor sets used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-maintenance4-08602",
          "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08114",
          "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08115",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created without <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08116",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08604",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08117",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08119",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkPipeline\">VkPipeline</a> created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08605",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkShaderEXT\">VkShaderEXT</a> created with a <code>VkDescriptorSetLayout</code> that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08606",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is not enabled, a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08608",
          "text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state specified statically in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08609",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <a href=\"#VkImage\">VkImage</a> with a <a href=\"#VkImageView\">VkImageView</a> 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08610",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08611",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08607",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-uniformBuffers-06935",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08612",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-storageBuffers-06936",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>storageBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08613",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-commandBuffer-02707",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, any resource accessed by <a href=\"#shaders-binding\">bound shaders</a> <strong class=\"purple\">must</strong> not be a protected resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-06550",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> only be used with <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-ConstOffset-06551",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> not use the <code>ConstOffset</code> and <code>Offset</code> operands",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-viewType-07752",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> match the <code>Dim</code> operand of the <code>OpTypeImage</code> as described in <a href=\"#spirvenv-image-dimensions\">Compatibility Between SPIR-V Image Dimensions and Vulkan ImageView Types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-format-07753",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the <a href=\"#formats-numericformat\">numeric type</a> of the image view&#8217;s <code>format</code> and the <code>Sampled</code> <code>Type</code> operand of the <code>OpTypeImage</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageWrite-08795",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with a format other than <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageWrite-08796",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with the format <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have four components",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageWrite-04469",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the buffer view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-SampledType-04470",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-SampledType-04471",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-SampledType-04472",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-SampledType-04473",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-sparseImageInt64Atomics-04474",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-sparseImageInt64Atomics-04475",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageWeightedSampleQCOM-06971",
          "text": "If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageWeightedSampleQCOM-06972",
          "text": "If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image 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_2_WEIGHT_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageBoxFilterQCOM-06973",
          "text": "If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageBlockMatchSSDQCOM-06974",
          "text": "If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageBlockMatchSADQCOM-06975",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageBlockMatchSADQCOM-06976",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageWeightedSampleQCOM-06977",
          "text": "If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageWeightedSampleQCOM-06978",
          "text": "If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageBlockMatchWindow-09215",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageBlockMatchWindow-09216",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s format <strong class=\"purple\">must</strong> be a single-component format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageBlockMatchWindow-09217",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07288",
          "text": "Any shader invocation executed by this command <strong class=\"purple\">must</strong> <a href=\"#shaders-termination\">terminate</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09600",
          "text": "If a descriptor with type equal to any of <code>VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> is accessed as a result of this command, the image subresource identified by that descriptor <strong class=\"purple\">must</strong> be in the image layout identified when the descriptor was written",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-renderPass-02684",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-subpass-02685",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07748",
          "text": "If any shader statically accesses an input attachment, a valid descriptor <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpTypeImage-07468",
          "text": "If any shader executed by this pipeline accesses an <code>OpTypeImage</code> variable with a <code>Dim</code> operand of <code>SubpassData</code>, it <strong class=\"purple\">must</strong> be decorated with an <code>InputAttachmentIndex</code> that corresponds to a valid input attachment in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07469",
          "text": "Input attachment views accessed in a subpass <strong class=\"purple\">must</strong> be created with the same <a href=\"#VkFormat\">VkFormat</a> as the corresponding subpass definition, and be created with a <a href=\"#VkImageView\">VkImageView</a> that is compatible with the attachment referenced by the subpass' <code>pInputAttachments</code>[<code>InputAttachmentIndex</code>] in the currently bound <a href=\"#VkFramebuffer\">VkFramebuffer</a> as specified by <a href=\"#compatibility-inputattachment\">Fragment Input Attachment Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-pDepthInputAttachmentIndex-09595",
          "text": "Input attachment views accessed in a dynamic render pass with a <code>InputAttachmentIndex</code> referenced by <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>, or no <code>InputAttachmentIndex</code> if <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pDepthInputAttachmentIndex</code> or <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pStencilInputAttachmentIndex</code> are <code>NULL</code>, <strong class=\"purple\">must</strong> be created with a <a href=\"#VkImageView\">VkImageView</a> that is compatible with the corresponding color, depth, or stencil attachment in <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-pDepthInputAttachmentIndex-09596",
          "text": "Input attachment views accessed in a dynamic render pass via a shader object <strong class=\"purple\">must</strong> have an <code>InputAttachmentIndex</code> if both <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pDepthInputAttachmentIndex</code> and <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pStencilInputAttachmentIndex</code> are non-<code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-InputAttachmentIndex-09597",
          "text": "If an input attachment view accessed in a dynamic render pass via a shader object has an <code>InputAttachmentIndex</code>, the <code>InputAttachmentIndex</code> <strong class=\"purple\">must</strong> match an index in <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-06537",
          "text": "Memory backing image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be written in any way other than as an attachment by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09000",
          "text": "If a color attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe <code>VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code> is\nset on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_COLOR_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09001",
          "text": "If a depth attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe\n<code>VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code>\nis set on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_DEPTH_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09002",
          "text": "If a stencil attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe\n<code>VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code>\nis set on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_STENCIL_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09003",
          "text": "If an attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment, storage image, or sampled image by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-06539",
          "text": "If any previously recorded command in the current subpass accessed an image subresource used as an attachment in this subpass in any way other than as an attachment, this command <strong class=\"purple\">must</strong> not write to that image subresource as an attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-06886",
          "text": "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, <a href=\"#fragops-depth-write\">depth writes</a> <strong class=\"purple\">must</strong> be disabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-06887",
          "text": "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back <code>writeMask</code> are not zero, and stencil test is enabled, <a href=\"#fragops-stencil\">all stencil ops</a> <strong class=\"purple\">must</strong> be <code>VK_STENCIL_OP_KEEP</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07831",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT</code> dynamic state enabled then <a href=\"#vkCmdSetViewport\">vkCmdSetViewport</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07832",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR</code> dynamic state enabled then <a href=\"#vkCmdSetScissor\">vkCmdSetScissor</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07833",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_WIDTH</code> dynamic state enabled then <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08617",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08618",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08619",
          "text": "If a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07834",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthBiasEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthBounds\">vkCmdSetDepthBounds</a> or <a href=\"#vkCmdSetDepthBias2EXT\">vkCmdSetDepthBias2EXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07835",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_BLEND_CONSTANTS</code> dynamic state enabled then <a href=\"#vkCmdSetBlendConstants\">vkCmdSetBlendConstants</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08621",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> in the current command buffer set any element of <code>pColorBlendEnables</code> to <code>VK_TRUE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> in the current command buffer set the same element of <code>pColorBlendEquations</code> to a <code>VkColorBlendEquationEXT</code> structure with any <a href=\"#VkBlendFactor\">VkBlendFactor</a> member with a value of <code>VK_BLEND_FACTOR_CONSTANT_COLOR</code>, <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR</code>, <code>VK_BLEND_FACTOR_CONSTANT_ALPHA</code>, or <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA</code>, <a href=\"#vkCmdSetBlendConstants\">vkCmdSetBlendConstants</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07836",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthBoundsTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthBounds\">vkCmdSetDepthBounds</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07837",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilCompareMask\">vkCmdSetStencilCompareMask</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07838",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilWriteMask\">vkCmdSetStencilWriteMask</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07839",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_REFERENCE</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of and <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilReference\">vkCmdSetStencilReference</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-maxMultiviewInstanceIndex-02688",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-02689",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-06666",
          "text": "If the <code><a href=\"#VK_EXT_sample_locations\">VK_EXT_sample_locations</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07840",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_CULL_MODE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCullMode\">vkCmdSetCullMode</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07841",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_FRONT_FACE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetFrontFace\">vkCmdSetFrontFace</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07843",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, <a href=\"#vkCmdSetDepthTestEnable\">vkCmdSetDepthTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07844",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthWriteEnable\">vkCmdSetDepthWriteEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07845",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_COMPARE_OP</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthCompareOp\">vkCmdSetDepthCompareOp</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07846",
          "text": "If the <a href=\"#features-depthBounds\"><code>depthBounds</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthBoundsTestEnable\">vkCmdSetDepthBoundsTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07847",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetStencilTestEnable\">vkCmdSetStencilTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07848",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_OP</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilOp\">vkCmdSetStencilOp</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-viewportCount-03417",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-scissorCount-03418",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, then <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-viewportCount-03419",
          "text": "If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> and <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08635",
          "text": "If a shader object is bound to any graphics stage, then both <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> and <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-viewportCount-04137",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-viewportCount-04138",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08636",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-viewportCount-04139",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-shadingRateImage-09233",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV</code> and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-shadingRateImage-09234",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08637",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-VkPipelineVieportCreateInfo-04141",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled and a <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> structure chained from <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-VkPipelineVieportCreateInfo-04142",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled and a <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> structure chained from <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07878",
          "text": "If the <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetExclusiveScissorEnableNV\">vkCmdSetExclusiveScissorEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07879",
          "text": "If the <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV</code> dynamic state enabled, and the most recent call to <a href=\"#vkCmdSetExclusiveScissorEnableNV\">vkCmdSetExclusiveScissorEnableNV</a> in the current command buffer set any element of <code>pExclusiveScissorEnables</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetExclusiveScissorNV\">vkCmdSetExclusiveScissorNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-04876",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-04877",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthBiasEnable\">vkCmdSetDepthBiasEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-logicOp-04878",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_LOGIC_OP_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>logicOpEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetLogicOpEXT\">vkCmdSetLogicOpEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-primitiveFragmentShadingRateWithMultipleViewports-04552",
          "text": "If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-primitiveFragmentShadingRateWithMultipleViewports-08642",
          "text": "If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, and any shader object bound to a graphics stage writes to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-blendEnable-04727",
          "text": "If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the <code>blendEnable</code> member of the corresponding element of the <code>pAttachments</code> member of <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08643",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then for each color attachment in the render pass, if the corresponding image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the corresponding member of <code>pColorBlendEnables</code> in the most recent call to <code>vkCmdSetColorBlendEnableEXT</code> in the current command buffer that affected that attachment index <strong class=\"purple\">must</strong> have been <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-multisampledRenderToSingleSampled-07284",
          "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then <code>rasterizationSamples</code> for the currently bound graphics pipeline\n<strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil\nattachments</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08644",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the\ncurrent command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the\nsame as the number of samples for the current render pass color and/or\ndepth/stencil attachments</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08876",
          "text": "If a shader object is bound to any graphics stage, the current render pass instance <strong class=\"purple\">must</strong> have been begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-imageView-06172",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-imageView-06173",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-imageView-06174",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-imageView-06175",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-imageView-06176",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-imageView-06177",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-viewMask-06178",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>viewMask</code> equal to <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>viewMask</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-colorAttachmentCount-06179",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>colorAttachmentCount</code> equal to <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-08910",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-08912",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-08911",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-colorAttachmentCount-09362",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, there is no shader object bound to any graphics stage, and a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>resolveImageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with an image created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value equal to the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09363",
          "text": "If there is no shader object bound to any graphics stage, the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, and a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with an image created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value equal to the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09364",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have set the blend enable to <code>VK_FALSE</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09365",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to <code>VK_SAMPLE_COUNT_1_BIT</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09366",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have set blend enable to <code>VK_FALSE</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizationSamples-09367",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to <code>VK_SAMPLE_COUNT_1_BIT</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09368",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;width</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09369",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;height</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-pFragmentSize-09370",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;width</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-pFragmentSize-09371",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;height</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07749",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteEnableEXT\">vkCmdSetColorWriteEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08646",
          "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is enabled on the device, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorWriteEnableEXT\">vkCmdSetColorWriteEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-attachmentCount-07750",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code> dynamic state enabled then the <code>attachmentCount</code> parameter of <code>vkCmdSetColorWriteEnableEXT</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>VkPipelineColorBlendStateCreateInfo</code>::<code>attachmentCount</code> of the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08647",
          "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is enabled on the device, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then the <code>attachmentCount</code> parameter of most recent call to <code>vkCmdSetColorWriteEnableEXT</code> in the current command buffer <strong class=\"purple\">must</strong> be greater than or equal to the number of color attachments in the current render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07751",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleEXT\">vkCmdSetDiscardRectangleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command for each discard rectangle in <a href=\"#VkPipelineDiscardRectangleStateCreateInfoEXT\">VkPipelineDiscardRectangleStateCreateInfoEXT</a>::<code>discardRectangleCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07880",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizerDiscardEnable-09236",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> in the current command buffer set <code>discardRectangleEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDiscardRectangleEXT\">vkCmdSetDiscardRectangleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08648",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07881",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleModeEXT\">vkCmdSetDiscardRectangleModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08649",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> in the current command buffer set <code>discardRectangleEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDiscardRectangleModeEXT\">vkCmdSetDiscardRectangleModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-08913",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-08914",
          "text": "If current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-08915",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline was not equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>, the value of the format <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-08916",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-08917",
          "text": "If current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-dynamicRenderingUnusedAttachments-08918",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline was not equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>, the value of the format <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-imageView-06183",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a>::<code>imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-imageView-06184",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingFragmentDensityMapAttachmentInfoEXT\">VkRenderingFragmentDensityMapAttachmentInfoEXT</a>::<code>imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-colorAttachmentCount-06185",
          "text": "If the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the corresponding element of the <code>pColorAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-pDepthAttachment-06186",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-pStencilAttachment-06187",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-multisampledRenderToSingleSampled-07285",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     the current render pass instance was begun with     <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than     <code>0</code>, then each element of the     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a     <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been     created with a sample count equal to the value of     <code>rasterizationSamples</code> for the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-multisampledRenderToSingleSampled-07286",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not     <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the     currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count     used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-multisampledRenderToSingleSampled-07287",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not     <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the     currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count     used to create     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-pNext-07935",
          "text": "If this command has been called inside a render pass instance started with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and the <code>pNext</code> chain of <a href=\"#VkRenderingInfo\">VkRenderingInfo</a> includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a>::<code>rasterizationSamples</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-renderPass-06198",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>renderPass</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-pColorAttachments-08963",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound with a fragment shader that statically writes to a color attachment, the color write mask is not zero, color writes are enabled, and the corresponding element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-pDepthAttachment-08964",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound, depth test is enabled, depth write is enabled, and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-pStencilAttachment-08965",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound, stencil test is enabled and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-primitivesGeneratedQueryWithRasterizerDiscard-06708",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithRasterizerDiscard\"><code>primitivesGeneratedQueryWithRasterizerDiscard</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, <a href=\"#primsrast-discard\">rasterization discard</a> <strong class=\"purple\">must</strong> not be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-primitivesGeneratedQueryWithNonZeroStreams-06709",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, the bound graphics pipeline <strong class=\"purple\">must</strong> not have been created with a non-zero value in <code>VkPipelineRasterizationStateStreamCreateInfoEXT</code>::<code>rasterizationStream</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07619",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetTessellationDomainOriginEXT\">vkCmdSetTessellationDomainOriginEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07620",
          "text": "If the <a href=\"#features-depthClamp\"><code>depthClamp</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthClampEnableEXT\">vkCmdSetDepthClampEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07621",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_POLYGON_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07622",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07623",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-alphaToCoverageEnable-08919",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic state enabled, and <code>alphaToCoverageEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-alphaToCoverageEnable-08920",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a> in the current command buffer set <code>alphaToCoverageEnable</code> to <code>VK_TRUE</code>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07624",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07625",
          "text": "If the <a href=\"#features-alphaToOne\"><code>alphaToOne</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAlphaToOneEnableEXT\">vkCmdSetAlphaToOneEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07626",
          "text": "If the <a href=\"#features-logicOp\"><code>logicOp</code></a> feature is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLogicOpEnableEXT\">vkCmdSetLogicOpEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07627",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08657",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07628",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08658",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> for any attachment set that attachment&#8217;s value in <code>pColorBlendEnables</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07629",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08659",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07630",
          "text": "If the <a href=\"#features-geometryStreams\"><code>geometryStreams</code></a> feature is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizationStreamEXT\">vkCmdSetRasterizationStreamEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07631",
          "text": "If the <code><a href=\"#VK_EXT_conservative_rasterization\">VK_EXT_conservative_rasterization</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetConservativeRasterizationModeEXT\">vkCmdSetConservativeRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07632",
          "text": "If the <code><a href=\"#VK_EXT_conservative_rasterization\">VK_EXT_conservative_rasterization</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>conservativeRasterizationMode</code> is <code>VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT</code>, then <a href=\"#vkCmdSetExtraPrimitiveOverestimationSizeEXT\">vkCmdSetExtraPrimitiveOverestimationSizeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07633",
          "text": "If the <a href=\"#features-depthClipEnable\"><code>depthClipEnable</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT</code> dynamic state, then <a href=\"#vkCmdSetDepthClipEnableEXT\">vkCmdSetDepthClipEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07634",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08664",
          "text": "If the <code><a href=\"#VK_EXT_sample_locations\">VK_EXT_sample_locations</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07635",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizerDiscardEnable-09416",
          "text": "If the <code><a href=\"#VK_EXT_blend_operation_advanced\">VK_EXT_blend_operation_advanced</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then at least one of <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> and <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07636",
          "text": "If the <code><a href=\"#VK_EXT_provoking_vertex\">VK_EXT_provoking_vertex</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetProvokingVertexModeEXT\">vkCmdSetProvokingVertexModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07637",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08666",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08667",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08668",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07638",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08669",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08670",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08671",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07849",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_KHR</code>     dynamic state enabled then <a href=\"#vkCmdSetLineStippleKHR\">vkCmdSetLineStippleKHR</a>     <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing     command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08672",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> in the current command buffer set <code>stippledLineEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetLineStippleEXT\">vkCmdSetLineStippleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07639",
          "text": "If the <a href=\"#features-depthClipControl\"><code>depthClipControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetDepthClipNegativeOneToOneEXT\">vkCmdSetDepthClipNegativeOneToOneEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09650",
          "text": "If the <a href=\"#features-depthClampControl\"><code>depthClampControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthClampEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthClampRangeEXT\">vkCmdSetDepthClampRangeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07640",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07641",
          "text": "If the <code><a href=\"#VK_NV_viewport_swizzle\">VK_NV_viewport_swizzle</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07642",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07643",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageToColorEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07644",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageModulationModeNV\">vkCmdSetCoverageModulationModeNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07645",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageModulationMode</code> is any value other than <code>VK_COVERAGE_MODULATION_MODE_NONE_NV</code>, then <a href=\"#vkCmdSetCoverageModulationTableEnableNV\">vkCmdSetCoverageModulationTableEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07646",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageModulationTableEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetCoverageModulationTableNV\">vkCmdSetCoverageModulationTableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07647",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-pipelineFragmentShadingRate-09238",
          "text": "If the <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a> feature is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07648",
          "text": "If the <a href=\"#features-representativeFragmentTest\"><code>representativeFragmentTest</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetRepresentativeFragmentTestEnableNV\">vkCmdSetRepresentativeFragmentTestEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07649",
          "text": "If the <a href=\"#features-coverageReductionMode\"><code>coverageReductionMode</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageReductionModeNV\">vkCmdSetCoverageReductionModeNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-pColorBlendEnables-07470",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> state enabled and the last call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> set <code>pColorBlendEnables</code> for any attachment to <code>VK_TRUE</code>, then for those attachments in the subpass the corresponding 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_BLEND_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizationSamples-07471",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> follow the rules for a <a href=\"#renderpass-noattachments\">zero-attachment subpass</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-samples-07472",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, then the <code>samples</code> parameter in the last call to <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> be greater or equal to the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a>::<code>rasterizationSamples</code> parameter used to create the bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-samples-07473",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> state and <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> states enabled, then the <code>samples</code> parameter in the last call to <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> be greater or equal to the <code>rasterizationSamples</code> parameter in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizationSamples-07474",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and neither the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> nor the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extensions are enabled, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil attachments",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09211",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, or a shader object is bound to any graphics stage, and the current render pass instance includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> be the same as the <code>rasterizationSamples</code> member of that structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-firstAttachment-07476",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEnableEXT</code> calls <strong class=\"purple\">must</strong> specify an enable for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizerDiscardEnable-09417",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEnableEXT</code> calls <strong class=\"purple\">must</strong> specify an enable for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-firstAttachment-07477",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEquationEXT</code> calls <strong class=\"purple\">must</strong> specify the blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizerDiscardEnable-09418",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEquationEXT</code> calls <strong class=\"purple\">must</strong> specify the blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-firstAttachment-07478",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorWriteMaskEXT</code> calls <strong class=\"purple\">must</strong> specify the color write mask for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizerDiscardEnable-09419",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorWriteMaskEXT</code> calls <strong class=\"purple\">must</strong> specify the color write mask for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-firstAttachment-07479",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendAdvancedEXT</code> calls <strong class=\"purple\">must</strong> specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-advancedBlendMaxColorAttachments-07480",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> and <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic states enabled and the last calls to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> and <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> have enabled advanced blending, then the number of active color attachments in the current subpass <strong class=\"purple\">must</strong> not exceed <a href=\"#limits-advancedBlendMaxColorAttachments\"><code>advancedBlendMaxColorAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-primitivesGeneratedQueryWithNonZeroStreams-07481",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, and the bound graphics pipeline was created with <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code> state enabled, the last call to <a href=\"#vkCmdSetRasterizationStreamEXT\">vkCmdSetRasterizationStreamEXT</a> <strong class=\"purple\">must</strong> have set the <code>rasterizationStream</code> to zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsPerPixel-07482",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsPerPixel-07483",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-07484",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-07485",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, then the <code>sampleLocationsInfo.sampleLocationGridSize.width</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-07486",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, then the <code>sampleLocationsInfo.sampleLocationGridSize.height</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-07487",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, the fragment shader code <strong class=\"purple\">must</strong> not statically use the extended instruction <code>InterpolateAtSample</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-07936",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <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 the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-07937",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <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 the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-07938",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-coverageModulationTableEnable-07488",
          "text": "If a shader object is bound to any graphics stage or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code> state enabled, and the last call to <a href=\"#vkCmdSetCoverageModulationTableEnableNV\">vkCmdSetCoverageModulationTableEnableNV</a> set <code>coverageModulationTableEnable</code> to <code>VK_TRUE</code>, then the <code>coverageModulationTableCount</code> parameter in the last call to <a href=\"#vkCmdSetCoverageModulationTableNV\">vkCmdSetCoverageModulationTableNV</a> <strong class=\"purple\">must</strong> equal the current <code>rasterizationSamples</code> divided by the number of color samples in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizationSamples-07489",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current <code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be the same as the sample count of the depth/stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-coverageToColorEnable-07490",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> state enabled and the last call to <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> set the <code>coverageToColorEnable</code> to <code>VK_TRUE</code>, then the current subpass <strong class=\"purple\">must</strong> have a color attachment at the location selected by the last call to <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizerDiscardEnable-09420",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the last call to <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> set the <code>coverageToColorEnable</code> to <code>VK_TRUE</code>, then the current subpass <strong class=\"purple\">must</strong> have a color attachment at the location selected by the last call to <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-coverageReductionMode-07491",
          "text": "If this <code><a href=\"#VK_NV_coverage_reduction_mode\">VK_NV_coverage_reduction_mode</a></code> extension is enabled, the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> and <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> states enabled, the current coverage reduction mode <code>coverageReductionMode</code>, then the current <code>rasterizationSamples</code>, and the sample counts for the color and depth/stencil attachments (if the subpass has them) <strong class=\"purple\">must</strong> be a valid combination returned by <a href=\"#vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV\">vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-viewportCount-07492",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-viewportCount-07493",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-viewportCount-09421",
          "text": "If the <code><a href=\"#VK_NV_viewport_swizzle\">VK_NV_viewport_swizzle</a></code> extension is enabled, and a shader object is bound to any graphics stage, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizationSamples-07494",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, and if the current subpass has any color attachments and <code>rasterizationSamples</code> of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> is greater than the number of color samples, then the pipeline <code>sampleShadingEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-stippledLineEnable-07495",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-stippledLineEnable-07496",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR</code>, then the <a href=\"#features-stippledBresenhamLines\"><code>stippledBresenhamLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-stippledLineEnable-07497",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR</code>, then the <a href=\"#features-stippledSmoothLines\"><code>stippledSmoothLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-stippledLineEnable-07498",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_DEFAULT_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled and <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>strictLines</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-conservativePointAndLineRasterization-07499",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code> dynamic state enabled, <a href=\"#limits-conservativePointAndLineRasterization\"><code>conservativePointAndLineRasterization</code></a> is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the <code>conservativeRasterizationMode</code> set by the last call to <a href=\"#vkCmdSetConservativeRasterizationModeEXT\">vkCmdSetConservativeRasterizationModeEXT</a> <strong class=\"purple\">must</strong> be <code>VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-stage-07073",
          "text": "If the currently bound pipeline was created with the <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a>::<code>stage</code> member of an element of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> set to <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>, then <a href=\"#queries-mesh-shader\">Mesh Shader Queries</a> <strong class=\"purple\">must</strong> not be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08877",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07850",
          "text": "If dynamic state was inherited from <a href=\"#VkCommandBufferInheritanceViewportScissorInfoNV\">VkCommandBufferInheritanceViewportScissorInfoNV</a>, it <strong class=\"purple\">must</strong> be set in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08684",
          "text": "If there is no bound graphics pipeline, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_VERTEX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08685",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08686",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08687",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08688",
          "text": "If there is no bound graphics pipeline, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08689",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TASK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08690",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08693",
          "text": "If there is no bound graphics pipeline, and at least one of the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features is enabled, one of the <code>VK_SHADER_STAGE_VERTEX_BIT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stages <strong class=\"purple\">must</strong> have a valid <code>VkShaderEXT</code> bound, and the other <strong class=\"purple\">must</strong> have no <code>VkShaderEXT</code> bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08694",
          "text": "If there is no bound graphics pipeline, and both the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features are enabled, and a valid <code>VkShaderEXT</code> is bound the to the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage, and that <code>VkShaderEXT</code> was created without the <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> flag, a valid <code>VkShaderEXT</code> <strong class=\"purple\">must</strong> be bound to the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08695",
          "text": "If there is no bound graphics pipeline, and both the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features are enabled, and a valid <code>VkShaderEXT</code> is bound the to the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage, and that <code>VkShaderEXT</code> was created with the <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> flag, there <strong class=\"purple\">must</strong> be no <code>VkShaderEXT</code> bound to the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08696",
          "text": "If there is no bound graphics pipeline, and a valid <code>VkShaderEXT</code> is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, there <strong class=\"purple\">must</strong> be no <code>VkShaderEXT</code> bound to either the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage or the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08698",
          "text": "If any graphics shader is bound which was created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag, then all shaders created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag in the same <a href=\"#vkCreateShadersEXT\">vkCreateShadersEXT</a> call <strong class=\"purple\">must</strong> also be bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08699",
          "text": "If any graphics shader is bound which was created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag, any stages in between stages whose shaders which did not create a shader with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag as part of the same <a href=\"#vkCreateShadersEXT\">vkCreateShadersEXT</a> call <strong class=\"purple\">must</strong> not have any <code>VkShaderEXT</code> bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08878",
          "text": "All bound graphics shader objects <strong class=\"purple\">must</strong> have been created with identical or identically defined push constant ranges",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08879",
          "text": "All bound graphics shader objects <strong class=\"purple\">must</strong> have been created with identical or identically defined arrays of descriptor set layouts",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-colorAttachmentCount-09372",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, and a fragment shader is bound, it <strong class=\"purple\">must</strong> not declare the <code>DepthReplacing</code> or <code>StencilRefReplacingEXT</code> execution modes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-pDynamicStates-08715",
          "text": "If the bound graphics pipeline state includes a fragment shader stage, was created with <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpDepthAttachmentReadEXT</code>, the <code>depthWriteEnable</code> parameter in the last call to <a href=\"#vkCmdSetDepthWriteEnable\">vkCmdSetDepthWriteEnable</a> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-pDynamicStates-08716",
          "text": "If the bound graphics pipeline state includes a fragment shader stage, was created with <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpStencilAttachmentReadEXT</code>, the <code>writeMask</code> parameter in the last call to <a href=\"#vkCmdSetStencilWriteMask\">vkCmdSetStencilWriteMask</a> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09116",
          "text": "If     a shader object is bound to any graphics stage or     the currently bound graphics pipeline was created with     <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code>,     and the format of any color attachment is     <code>VK_FORMAT_E5B9G9R9_UFLOAT_PACK32</code>, the corresponding element of the     <code>pColorWriteMasks</code> parameter of <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a>     <strong class=\"purple\">must</strong> either include all of <code>VK_COLOR_COMPONENT_R_BIT</code>,     <code>VK_COLOR_COMPONENT_G_BIT</code>, and <code>VK_COLOR_COMPONENT_B_BIT</code>, or     none of them",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-maxFragmentDualSrcAttachments-09239",
          "text": "If <a href=\"#framebuffer-blending\">blending</a> is enabled for any attachment where either the source or destination blend factors for that attachment <a href=\"#framebuffer-dsb\">use the secondary color input</a>, the maximum value of <code>Location</code> for any output attachment <a href=\"#shaders-staticuse\">statically used</a> in the <code>Fragment</code> <code>Execution</code> <code>Model</code> executed by this command <strong class=\"purple\">must</strong> be less than <a href=\"#limits-maxFragmentDualSrcAttachments\"><code>maxFragmentDualSrcAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09548",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and there is no shader object bound to any graphics stage, the value of each element of <a href=\"#VkRenderingAttachmentLocationInfoKHR\">VkRenderingAttachmentLocationInfoKHR</a>::<code>pColorAttachmentLocations</code> set by <a href=\"#vkCmdSetRenderingAttachmentLocationsKHR\">vkCmdSetRenderingAttachmentLocationsKHR</a> <strong class=\"purple\">must</strong> match the value set for the corresponding element in the currently bound pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09549",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and there is no shader object bound to any graphics stage, input attachment index mappings in the currently bound pipeline <strong class=\"purple\">must</strong> match those set for the current render pass instance via <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09642",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with the <code>VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT</code> flag, the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09643",
          "text": "If the bound graphics pipeline was created with <code>VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT</code>, the current render pass <strong class=\"purple\">must</strong> have begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with the <code>VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT</code> flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-stage-06480",
          "text": "The bound graphics pipeline <strong class=\"purple\">must</strong> not have been created with the <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a>::<code>stage</code> member of an element of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> set to <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07074",
          "text": "<a href=\"#queries-transform-feedback\">Transform Feedback Queries</a> <strong class=\"purple\">must</strong> not be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07075",
          "text": "<a href=\"#queries-primitives-generated\">Primitives Generated Queries</a> <strong class=\"purple\">must</strong> not be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-pipelineStatistics-07076",
          "text": "The <code>pipelineStatistics</code> member used to create any active <a href=\"#queries-pipestats\">Pipeline Statistics Query</a> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT</code>, or <code>VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-buffer-02708",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-buffer-02709",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-offset-02710",
          "text": "<code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-commandBuffer-02711",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-countBuffer-02714",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-countBuffer-02715",
          "text": "<code>countBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-countBufferOffset-02716",
          "text": "<code>countBufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-countBuffer-02717",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-countBufferOffset-04129",
          "text": "<span class=\"eq\">(<code>countBufferOffset</code> +  <code>sizeof</code>(uint32_t))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>countBuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-04445",
          "text": "If <a href=\"#features-drawIndirectCount\"><code>drawIndirectCount</code></a> is not enabled this function <strong class=\"purple\">must</strong> not be used",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-stride-07096",
          "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>VkDrawMeshTasksIndirectCommandEXT</code>)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-maxDrawCount-07097",
          "text": "If <code>maxDrawCount</code> is greater than or equal to <code>1</code>, <span class=\"eq\">(<code>stride</code> × (<code>maxDrawCount</code> - 1) +  <code>offset</code> +  <code>sizeof</code>(<code>VkDrawMeshTasksIndirectCommandEXT</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-countBuffer-07098",
          "text": "If the count stored in <code>countBuffer</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> +  <code>sizeof</code>(<code>VkDrawMeshTasksIndirectCommandEXT</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-countBuffer-07099",
          "text": "If the count stored in <code>countBuffer</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> × (<code>drawCount</code> - 1) +  <code>offset</code> +  <code>sizeof</code>(<code>VkDrawMeshTasksIndirectCommandEXT</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-MeshEXT-07100",
          "text": "The current pipeline bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> <strong class=\"purple\">must</strong> contain a shader stage using the <code>MeshEXT</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-buffer-parameter",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-countBuffer-parameter",
          "text": "<code>countBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-commonparent",
          "text": "Each of <code>buffer</code>, <code>commandBuffer</code>, and <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdDrawClusterHUAWEI": {
      "core": [
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-magFilter-04553",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-magFilter-09598",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-mipmapMode-04770",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-mipmapMode-09599",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-unnormalizedCoordinates-09635",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>levelCount</code> and <code>layerCount</code> <strong class=\"purple\">must</strong> be 1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-unnormalizedCoordinates-09636",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_VIEW_TYPE_1D</code> or <code>VK_IMAGE_VIEW_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-06479",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is sampled with <a href=\"#textures-depth-compare-operation\">depth comparison</a>, 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_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-02691",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed using atomic operations as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07888",
          "text": "If a <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> descriptor is accessed using atomic operations as a result of this command, then the storage texel buffer&#8217;s <a href=\"#resources-buffer-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-02692",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-02693",
          "text": "If the <a href=\"#VK_EXT_filter_cubic\">VK_EXT_filter_cubic</a> extension is not enabled and any <a href=\"#VkImageView\">VkImageView</a> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, it <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-filterCubic-02694",
          "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 <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubic</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-filterCubicMinmax-02695",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubicMinmax</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-cubicRangeClamp-09212",
          "text": "If the <a href=\"#features-filter-cubic-range-clamp\"><code>cubicRangeClamp</code></a> feature is not enabled, then 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=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-reductionMode-09213",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with a <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code> as a result of this command <strong class=\"purple\">must</strong> sample with <code>VK_FILTER_CUBIC_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-selectableCubicWeights-09214",
          "text": "If the <a href=\"#features-filter-cubic-weight-selection\"><code>selectableCubicWeights</code></a> feature is not enabled, then 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 href=\"#VkSamplerCubicWeightsCreateInfoQCOM\">VkSamplerCubicWeightsCreateInfoQCOM</a>::<code>cubicWeights</code> equal to <code>VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-flags-02696",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-OpTypeImage-07027",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being written as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-OpTypeImage-07028",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being read as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-OpTypeImage-07029",
          "text": "For any <a href=\"#VkBufferView\">VkBufferView</a> being written as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-OpTypeImage-07030",
          "text": "Any <a href=\"#VkBufferView\">VkBufferView</a> being read as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code> then the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08600",
          "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08601",
          "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-10068",
          "text": "For each array of resources that is used by <a href=\"#shaders-binding\">a bound shader</a>, the indices used to access members of the array <strong class=\"purple\">must</strong> be less than the descriptor count for the identified binding in the descriptor sets used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-maintenance4-08602",
          "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08114",
          "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08115",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created without <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08116",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08604",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08117",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08119",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkPipeline\">VkPipeline</a> created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08605",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkShaderEXT\">VkShaderEXT</a> created with a <code>VkDescriptorSetLayout</code> that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08606",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is not enabled, a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08608",
          "text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state specified statically in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08609",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <a href=\"#VkImage\">VkImage</a> with a <a href=\"#VkImageView\">VkImageView</a> 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08610",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08611",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08607",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-uniformBuffers-06935",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08612",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-storageBuffers-06936",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>storageBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08613",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-commandBuffer-02707",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, any resource accessed by <a href=\"#shaders-binding\">bound shaders</a> <strong class=\"purple\">must</strong> not be a protected resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-06550",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> only be used with <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-ConstOffset-06551",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> not use the <code>ConstOffset</code> and <code>Offset</code> operands",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-viewType-07752",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> match the <code>Dim</code> operand of the <code>OpTypeImage</code> as described in <a href=\"#spirvenv-image-dimensions\">Compatibility Between SPIR-V Image Dimensions and Vulkan ImageView Types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-format-07753",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the <a href=\"#formats-numericformat\">numeric type</a> of the image view&#8217;s <code>format</code> and the <code>Sampled</code> <code>Type</code> operand of the <code>OpTypeImage</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-OpImageWrite-08795",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with a format other than <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-OpImageWrite-08796",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with the format <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have four components",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-OpImageWrite-04469",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the buffer view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-SampledType-04470",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-SampledType-04471",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-SampledType-04472",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-SampledType-04473",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-sparseImageInt64Atomics-04474",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-sparseImageInt64Atomics-04475",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-OpImageWeightedSampleQCOM-06971",
          "text": "If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-OpImageWeightedSampleQCOM-06972",
          "text": "If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image 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_2_WEIGHT_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-OpImageBoxFilterQCOM-06973",
          "text": "If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-OpImageBlockMatchSSDQCOM-06974",
          "text": "If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-OpImageBlockMatchSADQCOM-06975",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-OpImageBlockMatchSADQCOM-06976",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-OpImageWeightedSampleQCOM-06977",
          "text": "If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-OpImageWeightedSampleQCOM-06978",
          "text": "If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-OpImageBlockMatchWindow-09215",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-OpImageBlockMatchWindow-09216",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s format <strong class=\"purple\">must</strong> be a single-component format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-OpImageBlockMatchWindow-09217",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07288",
          "text": "Any shader invocation executed by this command <strong class=\"purple\">must</strong> <a href=\"#shaders-termination\">terminate</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-09600",
          "text": "If a descriptor with type equal to any of <code>VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> is accessed as a result of this command, the image subresource identified by that descriptor <strong class=\"purple\">must</strong> be in the image layout identified when the descriptor was written",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-renderPass-02684",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-subpass-02685",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07748",
          "text": "If any shader statically accesses an input attachment, a valid descriptor <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-OpTypeImage-07468",
          "text": "If any shader executed by this pipeline accesses an <code>OpTypeImage</code> variable with a <code>Dim</code> operand of <code>SubpassData</code>, it <strong class=\"purple\">must</strong> be decorated with an <code>InputAttachmentIndex</code> that corresponds to a valid input attachment in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07469",
          "text": "Input attachment views accessed in a subpass <strong class=\"purple\">must</strong> be created with the same <a href=\"#VkFormat\">VkFormat</a> as the corresponding subpass definition, and be created with a <a href=\"#VkImageView\">VkImageView</a> that is compatible with the attachment referenced by the subpass' <code>pInputAttachments</code>[<code>InputAttachmentIndex</code>] in the currently bound <a href=\"#VkFramebuffer\">VkFramebuffer</a> as specified by <a href=\"#compatibility-inputattachment\">Fragment Input Attachment Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-pDepthInputAttachmentIndex-09595",
          "text": "Input attachment views accessed in a dynamic render pass with a <code>InputAttachmentIndex</code> referenced by <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>, or no <code>InputAttachmentIndex</code> if <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pDepthInputAttachmentIndex</code> or <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pStencilInputAttachmentIndex</code> are <code>NULL</code>, <strong class=\"purple\">must</strong> be created with a <a href=\"#VkImageView\">VkImageView</a> that is compatible with the corresponding color, depth, or stencil attachment in <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-pDepthInputAttachmentIndex-09596",
          "text": "Input attachment views accessed in a dynamic render pass via a shader object <strong class=\"purple\">must</strong> have an <code>InputAttachmentIndex</code> if both <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pDepthInputAttachmentIndex</code> and <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pStencilInputAttachmentIndex</code> are non-<code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-InputAttachmentIndex-09597",
          "text": "If an input attachment view accessed in a dynamic render pass via a shader object has an <code>InputAttachmentIndex</code>, the <code>InputAttachmentIndex</code> <strong class=\"purple\">must</strong> match an index in <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-06537",
          "text": "Memory backing image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be written in any way other than as an attachment by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-09000",
          "text": "If a color attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe <code>VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code> is\nset on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_COLOR_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-09001",
          "text": "If a depth attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe\n<code>VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code>\nis set on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_DEPTH_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-09002",
          "text": "If a stencil attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe\n<code>VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code>\nis set on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_STENCIL_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-09003",
          "text": "If an attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment, storage image, or sampled image by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-06539",
          "text": "If any previously recorded command in the current subpass accessed an image subresource used as an attachment in this subpass in any way other than as an attachment, this command <strong class=\"purple\">must</strong> not write to that image subresource as an attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-06886",
          "text": "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, <a href=\"#fragops-depth-write\">depth writes</a> <strong class=\"purple\">must</strong> be disabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-06887",
          "text": "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back <code>writeMask</code> are not zero, and stencil test is enabled, <a href=\"#fragops-stencil\">all stencil ops</a> <strong class=\"purple\">must</strong> be <code>VK_STENCIL_OP_KEEP</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07831",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT</code> dynamic state enabled then <a href=\"#vkCmdSetViewport\">vkCmdSetViewport</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07832",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR</code> dynamic state enabled then <a href=\"#vkCmdSetScissor\">vkCmdSetScissor</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07833",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_WIDTH</code> dynamic state enabled then <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08617",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08618",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08619",
          "text": "If a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07834",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthBiasEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthBounds\">vkCmdSetDepthBounds</a> or <a href=\"#vkCmdSetDepthBias2EXT\">vkCmdSetDepthBias2EXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07835",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_BLEND_CONSTANTS</code> dynamic state enabled then <a href=\"#vkCmdSetBlendConstants\">vkCmdSetBlendConstants</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08621",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> in the current command buffer set any element of <code>pColorBlendEnables</code> to <code>VK_TRUE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> in the current command buffer set the same element of <code>pColorBlendEquations</code> to a <code>VkColorBlendEquationEXT</code> structure with any <a href=\"#VkBlendFactor\">VkBlendFactor</a> member with a value of <code>VK_BLEND_FACTOR_CONSTANT_COLOR</code>, <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR</code>, <code>VK_BLEND_FACTOR_CONSTANT_ALPHA</code>, or <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA</code>, <a href=\"#vkCmdSetBlendConstants\">vkCmdSetBlendConstants</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07836",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthBoundsTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthBounds\">vkCmdSetDepthBounds</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07837",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilCompareMask\">vkCmdSetStencilCompareMask</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07838",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilWriteMask\">vkCmdSetStencilWriteMask</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07839",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_REFERENCE</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of and <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilReference\">vkCmdSetStencilReference</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-maxMultiviewInstanceIndex-02688",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-02689",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-06666",
          "text": "If the <code><a href=\"#VK_EXT_sample_locations\">VK_EXT_sample_locations</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07840",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_CULL_MODE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCullMode\">vkCmdSetCullMode</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07841",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_FRONT_FACE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetFrontFace\">vkCmdSetFrontFace</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07843",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, <a href=\"#vkCmdSetDepthTestEnable\">vkCmdSetDepthTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07844",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthWriteEnable\">vkCmdSetDepthWriteEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07845",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_COMPARE_OP</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthCompareOp\">vkCmdSetDepthCompareOp</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07846",
          "text": "If the <a href=\"#features-depthBounds\"><code>depthBounds</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthBoundsTestEnable\">vkCmdSetDepthBoundsTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07847",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetStencilTestEnable\">vkCmdSetStencilTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07848",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_OP</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilOp\">vkCmdSetStencilOp</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-viewportCount-03417",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-scissorCount-03418",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, then <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-viewportCount-03419",
          "text": "If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> and <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08635",
          "text": "If a shader object is bound to any graphics stage, then both <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> and <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-viewportCount-04137",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-viewportCount-04138",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08636",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-viewportCount-04139",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-shadingRateImage-09233",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV</code> and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-shadingRateImage-09234",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08637",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-VkPipelineVieportCreateInfo-04141",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled and a <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> structure chained from <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-VkPipelineVieportCreateInfo-04142",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled and a <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> structure chained from <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07878",
          "text": "If the <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetExclusiveScissorEnableNV\">vkCmdSetExclusiveScissorEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07879",
          "text": "If the <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV</code> dynamic state enabled, and the most recent call to <a href=\"#vkCmdSetExclusiveScissorEnableNV\">vkCmdSetExclusiveScissorEnableNV</a> in the current command buffer set any element of <code>pExclusiveScissorEnables</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetExclusiveScissorNV\">vkCmdSetExclusiveScissorNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-04876",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-04877",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthBiasEnable\">vkCmdSetDepthBiasEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-logicOp-04878",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_LOGIC_OP_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>logicOpEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetLogicOpEXT\">vkCmdSetLogicOpEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-primitiveFragmentShadingRateWithMultipleViewports-04552",
          "text": "If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-primitiveFragmentShadingRateWithMultipleViewports-08642",
          "text": "If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, and any shader object bound to a graphics stage writes to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-blendEnable-04727",
          "text": "If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the <code>blendEnable</code> member of the corresponding element of the <code>pAttachments</code> member of <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08643",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then for each color attachment in the render pass, if the corresponding image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the corresponding member of <code>pColorBlendEnables</code> in the most recent call to <code>vkCmdSetColorBlendEnableEXT</code> in the current command buffer that affected that attachment index <strong class=\"purple\">must</strong> have been <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-multisampledRenderToSingleSampled-07284",
          "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then <code>rasterizationSamples</code> for the currently bound graphics pipeline\n<strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil\nattachments</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08644",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the\ncurrent command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the\nsame as the number of samples for the current render pass color and/or\ndepth/stencil attachments</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08876",
          "text": "If a shader object is bound to any graphics stage, the current render pass instance <strong class=\"purple\">must</strong> have been begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-imageView-06172",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-imageView-06173",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-imageView-06174",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-imageView-06175",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-imageView-06176",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-imageView-06177",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-viewMask-06178",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>viewMask</code> equal to <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>viewMask</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-colorAttachmentCount-06179",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>colorAttachmentCount</code> equal to <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-08910",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-08912",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-08911",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-colorAttachmentCount-09362",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, there is no shader object bound to any graphics stage, and a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>resolveImageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with an image created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value equal to the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-09363",
          "text": "If there is no shader object bound to any graphics stage, the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, and a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with an image created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value equal to the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-09364",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have set the blend enable to <code>VK_FALSE</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-09365",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to <code>VK_SAMPLE_COUNT_1_BIT</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-09366",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have set blend enable to <code>VK_FALSE</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-rasterizationSamples-09367",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to <code>VK_SAMPLE_COUNT_1_BIT</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-09368",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;width</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-09369",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;height</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-pFragmentSize-09370",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;width</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-pFragmentSize-09371",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;height</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07749",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteEnableEXT\">vkCmdSetColorWriteEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08646",
          "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is enabled on the device, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorWriteEnableEXT\">vkCmdSetColorWriteEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-attachmentCount-07750",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code> dynamic state enabled then the <code>attachmentCount</code> parameter of <code>vkCmdSetColorWriteEnableEXT</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>VkPipelineColorBlendStateCreateInfo</code>::<code>attachmentCount</code> of the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08647",
          "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is enabled on the device, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then the <code>attachmentCount</code> parameter of most recent call to <code>vkCmdSetColorWriteEnableEXT</code> in the current command buffer <strong class=\"purple\">must</strong> be greater than or equal to the number of color attachments in the current render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07751",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleEXT\">vkCmdSetDiscardRectangleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command for each discard rectangle in <a href=\"#VkPipelineDiscardRectangleStateCreateInfoEXT\">VkPipelineDiscardRectangleStateCreateInfoEXT</a>::<code>discardRectangleCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07880",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-rasterizerDiscardEnable-09236",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> in the current command buffer set <code>discardRectangleEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDiscardRectangleEXT\">vkCmdSetDiscardRectangleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08648",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07881",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleModeEXT\">vkCmdSetDiscardRectangleModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08649",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> in the current command buffer set <code>discardRectangleEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDiscardRectangleModeEXT\">vkCmdSetDiscardRectangleModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-08913",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-08914",
          "text": "If current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-08915",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline was not equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>, the value of the format <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-08916",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-08917",
          "text": "If current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-dynamicRenderingUnusedAttachments-08918",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline was not equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>, the value of the format <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-imageView-06183",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a>::<code>imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-imageView-06184",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingFragmentDensityMapAttachmentInfoEXT\">VkRenderingFragmentDensityMapAttachmentInfoEXT</a>::<code>imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-colorAttachmentCount-06185",
          "text": "If the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the corresponding element of the <code>pColorAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-pDepthAttachment-06186",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-pStencilAttachment-06187",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-multisampledRenderToSingleSampled-07285",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     the current render pass instance was begun with     <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than     <code>0</code>, then each element of the     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a     <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been     created with a sample count equal to the value of     <code>rasterizationSamples</code> for the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-multisampledRenderToSingleSampled-07286",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not     <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the     currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count     used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-multisampledRenderToSingleSampled-07287",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not     <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the     currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count     used to create     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-pNext-07935",
          "text": "If this command has been called inside a render pass instance started with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and the <code>pNext</code> chain of <a href=\"#VkRenderingInfo\">VkRenderingInfo</a> includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a>::<code>rasterizationSamples</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-renderPass-06198",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>renderPass</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-pColorAttachments-08963",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound with a fragment shader that statically writes to a color attachment, the color write mask is not zero, color writes are enabled, and the corresponding element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-pDepthAttachment-08964",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound, depth test is enabled, depth write is enabled, and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-pStencilAttachment-08965",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound, stencil test is enabled and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-primitivesGeneratedQueryWithRasterizerDiscard-06708",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithRasterizerDiscard\"><code>primitivesGeneratedQueryWithRasterizerDiscard</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, <a href=\"#primsrast-discard\">rasterization discard</a> <strong class=\"purple\">must</strong> not be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-primitivesGeneratedQueryWithNonZeroStreams-06709",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, the bound graphics pipeline <strong class=\"purple\">must</strong> not have been created with a non-zero value in <code>VkPipelineRasterizationStateStreamCreateInfoEXT</code>::<code>rasterizationStream</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07619",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetTessellationDomainOriginEXT\">vkCmdSetTessellationDomainOriginEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07620",
          "text": "If the <a href=\"#features-depthClamp\"><code>depthClamp</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthClampEnableEXT\">vkCmdSetDepthClampEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07621",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_POLYGON_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07622",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07623",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-alphaToCoverageEnable-08919",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic state enabled, and <code>alphaToCoverageEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-alphaToCoverageEnable-08920",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a> in the current command buffer set <code>alphaToCoverageEnable</code> to <code>VK_TRUE</code>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07624",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07625",
          "text": "If the <a href=\"#features-alphaToOne\"><code>alphaToOne</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAlphaToOneEnableEXT\">vkCmdSetAlphaToOneEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07626",
          "text": "If the <a href=\"#features-logicOp\"><code>logicOp</code></a> feature is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLogicOpEnableEXT\">vkCmdSetLogicOpEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07627",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08657",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07628",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08658",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> for any attachment set that attachment&#8217;s value in <code>pColorBlendEnables</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07629",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08659",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07630",
          "text": "If the <a href=\"#features-geometryStreams\"><code>geometryStreams</code></a> feature is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizationStreamEXT\">vkCmdSetRasterizationStreamEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07631",
          "text": "If the <code><a href=\"#VK_EXT_conservative_rasterization\">VK_EXT_conservative_rasterization</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetConservativeRasterizationModeEXT\">vkCmdSetConservativeRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07632",
          "text": "If the <code><a href=\"#VK_EXT_conservative_rasterization\">VK_EXT_conservative_rasterization</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>conservativeRasterizationMode</code> is <code>VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT</code>, then <a href=\"#vkCmdSetExtraPrimitiveOverestimationSizeEXT\">vkCmdSetExtraPrimitiveOverestimationSizeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07633",
          "text": "If the <a href=\"#features-depthClipEnable\"><code>depthClipEnable</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT</code> dynamic state, then <a href=\"#vkCmdSetDepthClipEnableEXT\">vkCmdSetDepthClipEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07634",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08664",
          "text": "If the <code><a href=\"#VK_EXT_sample_locations\">VK_EXT_sample_locations</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07635",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-rasterizerDiscardEnable-09416",
          "text": "If the <code><a href=\"#VK_EXT_blend_operation_advanced\">VK_EXT_blend_operation_advanced</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then at least one of <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> and <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07636",
          "text": "If the <code><a href=\"#VK_EXT_provoking_vertex\">VK_EXT_provoking_vertex</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetProvokingVertexModeEXT\">vkCmdSetProvokingVertexModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07637",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08666",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08667",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08668",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07638",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08669",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08670",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08671",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07849",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_KHR</code>     dynamic state enabled then <a href=\"#vkCmdSetLineStippleKHR\">vkCmdSetLineStippleKHR</a>     <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing     command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08672",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> in the current command buffer set <code>stippledLineEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetLineStippleEXT\">vkCmdSetLineStippleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07639",
          "text": "If the <a href=\"#features-depthClipControl\"><code>depthClipControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetDepthClipNegativeOneToOneEXT\">vkCmdSetDepthClipNegativeOneToOneEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-09650",
          "text": "If the <a href=\"#features-depthClampControl\"><code>depthClampControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthClampEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthClampRangeEXT\">vkCmdSetDepthClampRangeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07640",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07641",
          "text": "If the <code><a href=\"#VK_NV_viewport_swizzle\">VK_NV_viewport_swizzle</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07642",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07643",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageToColorEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07644",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageModulationModeNV\">vkCmdSetCoverageModulationModeNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07645",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageModulationMode</code> is any value other than <code>VK_COVERAGE_MODULATION_MODE_NONE_NV</code>, then <a href=\"#vkCmdSetCoverageModulationTableEnableNV\">vkCmdSetCoverageModulationTableEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07646",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageModulationTableEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetCoverageModulationTableNV\">vkCmdSetCoverageModulationTableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07647",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-pipelineFragmentShadingRate-09238",
          "text": "If the <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a> feature is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07648",
          "text": "If the <a href=\"#features-representativeFragmentTest\"><code>representativeFragmentTest</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetRepresentativeFragmentTestEnableNV\">vkCmdSetRepresentativeFragmentTestEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07649",
          "text": "If the <a href=\"#features-coverageReductionMode\"><code>coverageReductionMode</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageReductionModeNV\">vkCmdSetCoverageReductionModeNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-pColorBlendEnables-07470",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> state enabled and the last call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> set <code>pColorBlendEnables</code> for any attachment to <code>VK_TRUE</code>, then for those attachments in the subpass the corresponding 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_BLEND_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-rasterizationSamples-07471",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> follow the rules for a <a href=\"#renderpass-noattachments\">zero-attachment subpass</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-samples-07472",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, then the <code>samples</code> parameter in the last call to <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> be greater or equal to the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a>::<code>rasterizationSamples</code> parameter used to create the bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-samples-07473",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> state and <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> states enabled, then the <code>samples</code> parameter in the last call to <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> be greater or equal to the <code>rasterizationSamples</code> parameter in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-rasterizationSamples-07474",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and neither the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> nor the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extensions are enabled, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil attachments",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-09211",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, or a shader object is bound to any graphics stage, and the current render pass instance includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> be the same as the <code>rasterizationSamples</code> member of that structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-firstAttachment-07476",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEnableEXT</code> calls <strong class=\"purple\">must</strong> specify an enable for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-rasterizerDiscardEnable-09417",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEnableEXT</code> calls <strong class=\"purple\">must</strong> specify an enable for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-firstAttachment-07477",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEquationEXT</code> calls <strong class=\"purple\">must</strong> specify the blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-rasterizerDiscardEnable-09418",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEquationEXT</code> calls <strong class=\"purple\">must</strong> specify the blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-firstAttachment-07478",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorWriteMaskEXT</code> calls <strong class=\"purple\">must</strong> specify the color write mask for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-rasterizerDiscardEnable-09419",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorWriteMaskEXT</code> calls <strong class=\"purple\">must</strong> specify the color write mask for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-firstAttachment-07479",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendAdvancedEXT</code> calls <strong class=\"purple\">must</strong> specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-advancedBlendMaxColorAttachments-07480",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> and <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic states enabled and the last calls to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> and <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> have enabled advanced blending, then the number of active color attachments in the current subpass <strong class=\"purple\">must</strong> not exceed <a href=\"#limits-advancedBlendMaxColorAttachments\"><code>advancedBlendMaxColorAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-primitivesGeneratedQueryWithNonZeroStreams-07481",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, and the bound graphics pipeline was created with <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code> state enabled, the last call to <a href=\"#vkCmdSetRasterizationStreamEXT\">vkCmdSetRasterizationStreamEXT</a> <strong class=\"purple\">must</strong> have set the <code>rasterizationStream</code> to zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-sampleLocationsPerPixel-07482",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-sampleLocationsPerPixel-07483",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-07484",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-07485",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, then the <code>sampleLocationsInfo.sampleLocationGridSize.width</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-07486",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, then the <code>sampleLocationsInfo.sampleLocationGridSize.height</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-07487",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, the fragment shader code <strong class=\"purple\">must</strong> not statically use the extended instruction <code>InterpolateAtSample</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-07936",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <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 the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-07937",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <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 the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-07938",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-coverageModulationTableEnable-07488",
          "text": "If a shader object is bound to any graphics stage or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code> state enabled, and the last call to <a href=\"#vkCmdSetCoverageModulationTableEnableNV\">vkCmdSetCoverageModulationTableEnableNV</a> set <code>coverageModulationTableEnable</code> to <code>VK_TRUE</code>, then the <code>coverageModulationTableCount</code> parameter in the last call to <a href=\"#vkCmdSetCoverageModulationTableNV\">vkCmdSetCoverageModulationTableNV</a> <strong class=\"purple\">must</strong> equal the current <code>rasterizationSamples</code> divided by the number of color samples in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-rasterizationSamples-07489",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current <code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be the same as the sample count of the depth/stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-coverageToColorEnable-07490",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> state enabled and the last call to <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> set the <code>coverageToColorEnable</code> to <code>VK_TRUE</code>, then the current subpass <strong class=\"purple\">must</strong> have a color attachment at the location selected by the last call to <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-rasterizerDiscardEnable-09420",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the last call to <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> set the <code>coverageToColorEnable</code> to <code>VK_TRUE</code>, then the current subpass <strong class=\"purple\">must</strong> have a color attachment at the location selected by the last call to <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-coverageReductionMode-07491",
          "text": "If this <code><a href=\"#VK_NV_coverage_reduction_mode\">VK_NV_coverage_reduction_mode</a></code> extension is enabled, the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> and <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> states enabled, the current coverage reduction mode <code>coverageReductionMode</code>, then the current <code>rasterizationSamples</code>, and the sample counts for the color and depth/stencil attachments (if the subpass has them) <strong class=\"purple\">must</strong> be a valid combination returned by <a href=\"#vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV\">vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-viewportCount-07492",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-viewportCount-07493",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-viewportCount-09421",
          "text": "If the <code><a href=\"#VK_NV_viewport_swizzle\">VK_NV_viewport_swizzle</a></code> extension is enabled, and a shader object is bound to any graphics stage, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-rasterizationSamples-07494",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, and if the current subpass has any color attachments and <code>rasterizationSamples</code> of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> is greater than the number of color samples, then the pipeline <code>sampleShadingEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-stippledLineEnable-07495",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-stippledLineEnable-07496",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR</code>, then the <a href=\"#features-stippledBresenhamLines\"><code>stippledBresenhamLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-stippledLineEnable-07497",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR</code>, then the <a href=\"#features-stippledSmoothLines\"><code>stippledSmoothLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-stippledLineEnable-07498",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_DEFAULT_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled and <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>strictLines</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-conservativePointAndLineRasterization-07499",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code> dynamic state enabled, <a href=\"#limits-conservativePointAndLineRasterization\"><code>conservativePointAndLineRasterization</code></a> is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the <code>conservativeRasterizationMode</code> set by the last call to <a href=\"#vkCmdSetConservativeRasterizationModeEXT\">vkCmdSetConservativeRasterizationModeEXT</a> <strong class=\"purple\">must</strong> be <code>VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-stage-07073",
          "text": "If the currently bound pipeline was created with the <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a>::<code>stage</code> member of an element of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> set to <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>, then <a href=\"#queries-mesh-shader\">Mesh Shader Queries</a> <strong class=\"purple\">must</strong> not be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08877",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07850",
          "text": "If dynamic state was inherited from <a href=\"#VkCommandBufferInheritanceViewportScissorInfoNV\">VkCommandBufferInheritanceViewportScissorInfoNV</a>, it <strong class=\"purple\">must</strong> be set in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08684",
          "text": "If there is no bound graphics pipeline, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_VERTEX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08685",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08686",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08687",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08688",
          "text": "If there is no bound graphics pipeline, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08689",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TASK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08690",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08693",
          "text": "If there is no bound graphics pipeline, and at least one of the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features is enabled, one of the <code>VK_SHADER_STAGE_VERTEX_BIT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stages <strong class=\"purple\">must</strong> have a valid <code>VkShaderEXT</code> bound, and the other <strong class=\"purple\">must</strong> have no <code>VkShaderEXT</code> bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08694",
          "text": "If there is no bound graphics pipeline, and both the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features are enabled, and a valid <code>VkShaderEXT</code> is bound the to the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage, and that <code>VkShaderEXT</code> was created without the <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> flag, a valid <code>VkShaderEXT</code> <strong class=\"purple\">must</strong> be bound to the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08695",
          "text": "If there is no bound graphics pipeline, and both the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features are enabled, and a valid <code>VkShaderEXT</code> is bound the to the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage, and that <code>VkShaderEXT</code> was created with the <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> flag, there <strong class=\"purple\">must</strong> be no <code>VkShaderEXT</code> bound to the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08696",
          "text": "If there is no bound graphics pipeline, and a valid <code>VkShaderEXT</code> is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, there <strong class=\"purple\">must</strong> be no <code>VkShaderEXT</code> bound to either the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage or the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08698",
          "text": "If any graphics shader is bound which was created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag, then all shaders created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag in the same <a href=\"#vkCreateShadersEXT\">vkCreateShadersEXT</a> call <strong class=\"purple\">must</strong> also be bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08699",
          "text": "If any graphics shader is bound which was created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag, any stages in between stages whose shaders which did not create a shader with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag as part of the same <a href=\"#vkCreateShadersEXT\">vkCreateShadersEXT</a> call <strong class=\"purple\">must</strong> not have any <code>VkShaderEXT</code> bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08878",
          "text": "All bound graphics shader objects <strong class=\"purple\">must</strong> have been created with identical or identically defined push constant ranges",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08879",
          "text": "All bound graphics shader objects <strong class=\"purple\">must</strong> have been created with identical or identically defined arrays of descriptor set layouts",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-colorAttachmentCount-09372",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, and a fragment shader is bound, it <strong class=\"purple\">must</strong> not declare the <code>DepthReplacing</code> or <code>StencilRefReplacingEXT</code> execution modes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-pDynamicStates-08715",
          "text": "If the bound graphics pipeline state includes a fragment shader stage, was created with <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpDepthAttachmentReadEXT</code>, the <code>depthWriteEnable</code> parameter in the last call to <a href=\"#vkCmdSetDepthWriteEnable\">vkCmdSetDepthWriteEnable</a> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-pDynamicStates-08716",
          "text": "If the bound graphics pipeline state includes a fragment shader stage, was created with <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpStencilAttachmentReadEXT</code>, the <code>writeMask</code> parameter in the last call to <a href=\"#vkCmdSetStencilWriteMask\">vkCmdSetStencilWriteMask</a> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-09116",
          "text": "If     a shader object is bound to any graphics stage or     the currently bound graphics pipeline was created with     <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code>,     and the format of any color attachment is     <code>VK_FORMAT_E5B9G9R9_UFLOAT_PACK32</code>, the corresponding element of the     <code>pColorWriteMasks</code> parameter of <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a>     <strong class=\"purple\">must</strong> either include all of <code>VK_COLOR_COMPONENT_R_BIT</code>,     <code>VK_COLOR_COMPONENT_G_BIT</code>, and <code>VK_COLOR_COMPONENT_B_BIT</code>, or     none of them",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-maxFragmentDualSrcAttachments-09239",
          "text": "If <a href=\"#framebuffer-blending\">blending</a> is enabled for any attachment where either the source or destination blend factors for that attachment <a href=\"#framebuffer-dsb\">use the secondary color input</a>, the maximum value of <code>Location</code> for any output attachment <a href=\"#shaders-staticuse\">statically used</a> in the <code>Fragment</code> <code>Execution</code> <code>Model</code> executed by this command <strong class=\"purple\">must</strong> be less than <a href=\"#limits-maxFragmentDualSrcAttachments\"><code>maxFragmentDualSrcAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-09548",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and there is no shader object bound to any graphics stage, the value of each element of <a href=\"#VkRenderingAttachmentLocationInfoKHR\">VkRenderingAttachmentLocationInfoKHR</a>::<code>pColorAttachmentLocations</code> set by <a href=\"#vkCmdSetRenderingAttachmentLocationsKHR\">vkCmdSetRenderingAttachmentLocationsKHR</a> <strong class=\"purple\">must</strong> match the value set for the corresponding element in the currently bound pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-09549",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and there is no shader object bound to any graphics stage, input attachment index mappings in the currently bound pipeline <strong class=\"purple\">must</strong> match those set for the current render pass instance via <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-09642",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with the <code>VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT</code> flag, the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-09643",
          "text": "If the bound graphics pipeline was created with <code>VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT</code>, the current render pass <strong class=\"purple\">must</strong> have begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with the <code>VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT</code> flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-stage-06480",
          "text": "The bound graphics pipeline <strong class=\"purple\">must</strong> not have been created with the <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a>::<code>stage</code> member of an element of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> set to <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07074",
          "text": "<a href=\"#queries-transform-feedback\">Transform Feedback Queries</a> <strong class=\"purple\">must</strong> not be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07075",
          "text": "<a href=\"#queries-primitives-generated\">Primitives Generated Queries</a> <strong class=\"purple\">must</strong> not be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-pipelineStatistics-07076",
          "text": "The <code>pipelineStatistics</code> member used to create any active <a href=\"#queries-pipestats\">Pipeline Statistics Query</a> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT</code>, or <code>VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07819",
          "text": "The <code>pipelineStatistics</code> member used to create any active <a href=\"#queries-pipestats\">Pipeline Statistics Query</a> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT</code>, or <code>VK_QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-groupCountX-07820",
          "text": "<code>groupCountX</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI</code>::<code>maxWorkGroupCount</code>[0]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-groupCountY-07821",
          "text": "<code>groupCountY</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI</code>::<code>maxWorkGroupCount</code>[1]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-groupCountZ-07822",
          "text": "<code>groupCountZ</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI</code>::<code>maxWorkGroupCount</code>[2]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-ClusterCullingHUAWEI-07823",
          "text": "The current pipeline bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> <strong class=\"purple\">must</strong> contain a shader stage using the <code>ClusterCullingHUAWEI</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterHUAWEI-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdDrawClusterIndirectHUAWEI": {
      "core": [
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-magFilter-04553",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-magFilter-09598",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-mipmapMode-04770",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-mipmapMode-09599",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-unnormalizedCoordinates-09635",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>levelCount</code> and <code>layerCount</code> <strong class=\"purple\">must</strong> be 1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-unnormalizedCoordinates-09636",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_VIEW_TYPE_1D</code> or <code>VK_IMAGE_VIEW_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-06479",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is sampled with <a href=\"#textures-depth-compare-operation\">depth comparison</a>, 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_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-02691",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed using atomic operations as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07888",
          "text": "If a <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> descriptor is accessed using atomic operations as a result of this command, then the storage texel buffer&#8217;s <a href=\"#resources-buffer-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-02692",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-02693",
          "text": "If the <a href=\"#VK_EXT_filter_cubic\">VK_EXT_filter_cubic</a> extension is not enabled and any <a href=\"#VkImageView\">VkImageView</a> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, it <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-filterCubic-02694",
          "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 <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubic</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-filterCubicMinmax-02695",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubicMinmax</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-cubicRangeClamp-09212",
          "text": "If the <a href=\"#features-filter-cubic-range-clamp\"><code>cubicRangeClamp</code></a> feature is not enabled, then 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=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-reductionMode-09213",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with a <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code> as a result of this command <strong class=\"purple\">must</strong> sample with <code>VK_FILTER_CUBIC_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-selectableCubicWeights-09214",
          "text": "If the <a href=\"#features-filter-cubic-weight-selection\"><code>selectableCubicWeights</code></a> feature is not enabled, then 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 href=\"#VkSamplerCubicWeightsCreateInfoQCOM\">VkSamplerCubicWeightsCreateInfoQCOM</a>::<code>cubicWeights</code> equal to <code>VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-flags-02696",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-OpTypeImage-07027",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being written as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-OpTypeImage-07028",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being read as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-OpTypeImage-07029",
          "text": "For any <a href=\"#VkBufferView\">VkBufferView</a> being written as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-OpTypeImage-07030",
          "text": "Any <a href=\"#VkBufferView\">VkBufferView</a> being read as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code> then the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08600",
          "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08601",
          "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-10068",
          "text": "For each array of resources that is used by <a href=\"#shaders-binding\">a bound shader</a>, the indices used to access members of the array <strong class=\"purple\">must</strong> be less than the descriptor count for the identified binding in the descriptor sets used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-maintenance4-08602",
          "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08114",
          "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08115",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created without <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08116",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08604",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08117",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08119",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkPipeline\">VkPipeline</a> created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08605",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkShaderEXT\">VkShaderEXT</a> created with a <code>VkDescriptorSetLayout</code> that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08606",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is not enabled, a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08608",
          "text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state specified statically in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08609",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <a href=\"#VkImage\">VkImage</a> with a <a href=\"#VkImageView\">VkImageView</a> 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08610",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08611",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08607",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-uniformBuffers-06935",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08612",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-storageBuffers-06936",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>storageBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08613",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-commandBuffer-02707",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, any resource accessed by <a href=\"#shaders-binding\">bound shaders</a> <strong class=\"purple\">must</strong> not be a protected resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-06550",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> only be used with <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-ConstOffset-06551",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> not use the <code>ConstOffset</code> and <code>Offset</code> operands",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-viewType-07752",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> match the <code>Dim</code> operand of the <code>OpTypeImage</code> as described in <a href=\"#spirvenv-image-dimensions\">Compatibility Between SPIR-V Image Dimensions and Vulkan ImageView Types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-format-07753",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the <a href=\"#formats-numericformat\">numeric type</a> of the image view&#8217;s <code>format</code> and the <code>Sampled</code> <code>Type</code> operand of the <code>OpTypeImage</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageWrite-08795",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with a format other than <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageWrite-08796",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with the format <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have four components",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageWrite-04469",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the buffer view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-SampledType-04470",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-SampledType-04471",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-SampledType-04472",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-SampledType-04473",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-sparseImageInt64Atomics-04474",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-sparseImageInt64Atomics-04475",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageWeightedSampleQCOM-06971",
          "text": "If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageWeightedSampleQCOM-06972",
          "text": "If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image 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_2_WEIGHT_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageBoxFilterQCOM-06973",
          "text": "If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageBlockMatchSSDQCOM-06974",
          "text": "If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageBlockMatchSADQCOM-06975",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageBlockMatchSADQCOM-06976",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageWeightedSampleQCOM-06977",
          "text": "If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageWeightedSampleQCOM-06978",
          "text": "If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageBlockMatchWindow-09215",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageBlockMatchWindow-09216",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s format <strong class=\"purple\">must</strong> be a single-component format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-OpImageBlockMatchWindow-09217",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07288",
          "text": "Any shader invocation executed by this command <strong class=\"purple\">must</strong> <a href=\"#shaders-termination\">terminate</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-09600",
          "text": "If a descriptor with type equal to any of <code>VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> is accessed as a result of this command, the image subresource identified by that descriptor <strong class=\"purple\">must</strong> be in the image layout identified when the descriptor was written",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-renderPass-02684",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-subpass-02685",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07748",
          "text": "If any shader statically accesses an input attachment, a valid descriptor <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-OpTypeImage-07468",
          "text": "If any shader executed by this pipeline accesses an <code>OpTypeImage</code> variable with a <code>Dim</code> operand of <code>SubpassData</code>, it <strong class=\"purple\">must</strong> be decorated with an <code>InputAttachmentIndex</code> that corresponds to a valid input attachment in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07469",
          "text": "Input attachment views accessed in a subpass <strong class=\"purple\">must</strong> be created with the same <a href=\"#VkFormat\">VkFormat</a> as the corresponding subpass definition, and be created with a <a href=\"#VkImageView\">VkImageView</a> that is compatible with the attachment referenced by the subpass' <code>pInputAttachments</code>[<code>InputAttachmentIndex</code>] in the currently bound <a href=\"#VkFramebuffer\">VkFramebuffer</a> as specified by <a href=\"#compatibility-inputattachment\">Fragment Input Attachment Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-pDepthInputAttachmentIndex-09595",
          "text": "Input attachment views accessed in a dynamic render pass with a <code>InputAttachmentIndex</code> referenced by <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>, or no <code>InputAttachmentIndex</code> if <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pDepthInputAttachmentIndex</code> or <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pStencilInputAttachmentIndex</code> are <code>NULL</code>, <strong class=\"purple\">must</strong> be created with a <a href=\"#VkImageView\">VkImageView</a> that is compatible with the corresponding color, depth, or stencil attachment in <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-pDepthInputAttachmentIndex-09596",
          "text": "Input attachment views accessed in a dynamic render pass via a shader object <strong class=\"purple\">must</strong> have an <code>InputAttachmentIndex</code> if both <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pDepthInputAttachmentIndex</code> and <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pStencilInputAttachmentIndex</code> are non-<code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-InputAttachmentIndex-09597",
          "text": "If an input attachment view accessed in a dynamic render pass via a shader object has an <code>InputAttachmentIndex</code>, the <code>InputAttachmentIndex</code> <strong class=\"purple\">must</strong> match an index in <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-06537",
          "text": "Memory backing image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be written in any way other than as an attachment by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-09000",
          "text": "If a color attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe <code>VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code> is\nset on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_COLOR_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-09001",
          "text": "If a depth attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe\n<code>VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code>\nis set on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_DEPTH_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-09002",
          "text": "If a stencil attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe\n<code>VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code>\nis set on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_STENCIL_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-09003",
          "text": "If an attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment, storage image, or sampled image by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-06539",
          "text": "If any previously recorded command in the current subpass accessed an image subresource used as an attachment in this subpass in any way other than as an attachment, this command <strong class=\"purple\">must</strong> not write to that image subresource as an attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-06886",
          "text": "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, <a href=\"#fragops-depth-write\">depth writes</a> <strong class=\"purple\">must</strong> be disabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-06887",
          "text": "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back <code>writeMask</code> are not zero, and stencil test is enabled, <a href=\"#fragops-stencil\">all stencil ops</a> <strong class=\"purple\">must</strong> be <code>VK_STENCIL_OP_KEEP</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07831",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT</code> dynamic state enabled then <a href=\"#vkCmdSetViewport\">vkCmdSetViewport</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07832",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR</code> dynamic state enabled then <a href=\"#vkCmdSetScissor\">vkCmdSetScissor</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07833",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_WIDTH</code> dynamic state enabled then <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08617",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08618",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08619",
          "text": "If a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07834",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthBiasEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthBounds\">vkCmdSetDepthBounds</a> or <a href=\"#vkCmdSetDepthBias2EXT\">vkCmdSetDepthBias2EXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07835",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_BLEND_CONSTANTS</code> dynamic state enabled then <a href=\"#vkCmdSetBlendConstants\">vkCmdSetBlendConstants</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08621",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> in the current command buffer set any element of <code>pColorBlendEnables</code> to <code>VK_TRUE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> in the current command buffer set the same element of <code>pColorBlendEquations</code> to a <code>VkColorBlendEquationEXT</code> structure with any <a href=\"#VkBlendFactor\">VkBlendFactor</a> member with a value of <code>VK_BLEND_FACTOR_CONSTANT_COLOR</code>, <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR</code>, <code>VK_BLEND_FACTOR_CONSTANT_ALPHA</code>, or <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA</code>, <a href=\"#vkCmdSetBlendConstants\">vkCmdSetBlendConstants</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07836",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthBoundsTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthBounds\">vkCmdSetDepthBounds</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07837",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilCompareMask\">vkCmdSetStencilCompareMask</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07838",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilWriteMask\">vkCmdSetStencilWriteMask</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07839",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_REFERENCE</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of and <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilReference\">vkCmdSetStencilReference</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-maxMultiviewInstanceIndex-02688",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-02689",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-06666",
          "text": "If the <code><a href=\"#VK_EXT_sample_locations\">VK_EXT_sample_locations</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07840",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_CULL_MODE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCullMode\">vkCmdSetCullMode</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07841",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_FRONT_FACE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetFrontFace\">vkCmdSetFrontFace</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07843",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, <a href=\"#vkCmdSetDepthTestEnable\">vkCmdSetDepthTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07844",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthWriteEnable\">vkCmdSetDepthWriteEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07845",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_COMPARE_OP</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthCompareOp\">vkCmdSetDepthCompareOp</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07846",
          "text": "If the <a href=\"#features-depthBounds\"><code>depthBounds</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthBoundsTestEnable\">vkCmdSetDepthBoundsTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07847",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetStencilTestEnable\">vkCmdSetStencilTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07848",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_OP</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilOp\">vkCmdSetStencilOp</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-viewportCount-03417",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-scissorCount-03418",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, then <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-viewportCount-03419",
          "text": "If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> and <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08635",
          "text": "If a shader object is bound to any graphics stage, then both <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> and <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-viewportCount-04137",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-viewportCount-04138",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08636",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-viewportCount-04139",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-shadingRateImage-09233",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV</code> and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-shadingRateImage-09234",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08637",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-VkPipelineVieportCreateInfo-04141",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled and a <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> structure chained from <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-VkPipelineVieportCreateInfo-04142",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled and a <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> structure chained from <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07878",
          "text": "If the <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetExclusiveScissorEnableNV\">vkCmdSetExclusiveScissorEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07879",
          "text": "If the <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV</code> dynamic state enabled, and the most recent call to <a href=\"#vkCmdSetExclusiveScissorEnableNV\">vkCmdSetExclusiveScissorEnableNV</a> in the current command buffer set any element of <code>pExclusiveScissorEnables</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetExclusiveScissorNV\">vkCmdSetExclusiveScissorNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-04876",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-04877",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthBiasEnable\">vkCmdSetDepthBiasEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-logicOp-04878",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_LOGIC_OP_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>logicOpEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetLogicOpEXT\">vkCmdSetLogicOpEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-primitiveFragmentShadingRateWithMultipleViewports-04552",
          "text": "If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-primitiveFragmentShadingRateWithMultipleViewports-08642",
          "text": "If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, and any shader object bound to a graphics stage writes to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-blendEnable-04727",
          "text": "If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the <code>blendEnable</code> member of the corresponding element of the <code>pAttachments</code> member of <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08643",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then for each color attachment in the render pass, if the corresponding image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the corresponding member of <code>pColorBlendEnables</code> in the most recent call to <code>vkCmdSetColorBlendEnableEXT</code> in the current command buffer that affected that attachment index <strong class=\"purple\">must</strong> have been <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-multisampledRenderToSingleSampled-07284",
          "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then <code>rasterizationSamples</code> for the currently bound graphics pipeline\n<strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil\nattachments</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08644",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the\ncurrent command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the\nsame as the number of samples for the current render pass color and/or\ndepth/stencil attachments</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08876",
          "text": "If a shader object is bound to any graphics stage, the current render pass instance <strong class=\"purple\">must</strong> have been begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-imageView-06172",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-imageView-06173",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-imageView-06174",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-imageView-06175",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-imageView-06176",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-imageView-06177",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-viewMask-06178",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>viewMask</code> equal to <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>viewMask</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-colorAttachmentCount-06179",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>colorAttachmentCount</code> equal to <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-08910",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-08912",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-08911",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-colorAttachmentCount-09362",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, there is no shader object bound to any graphics stage, and a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>resolveImageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with an image created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value equal to the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-09363",
          "text": "If there is no shader object bound to any graphics stage, the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, and a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with an image created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value equal to the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-09364",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have set the blend enable to <code>VK_FALSE</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-09365",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to <code>VK_SAMPLE_COUNT_1_BIT</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-09366",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have set blend enable to <code>VK_FALSE</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizationSamples-09367",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to <code>VK_SAMPLE_COUNT_1_BIT</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-09368",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;width</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-09369",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;height</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-pFragmentSize-09370",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;width</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-pFragmentSize-09371",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;height</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07749",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteEnableEXT\">vkCmdSetColorWriteEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08646",
          "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is enabled on the device, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorWriteEnableEXT\">vkCmdSetColorWriteEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-attachmentCount-07750",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code> dynamic state enabled then the <code>attachmentCount</code> parameter of <code>vkCmdSetColorWriteEnableEXT</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>VkPipelineColorBlendStateCreateInfo</code>::<code>attachmentCount</code> of the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08647",
          "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is enabled on the device, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then the <code>attachmentCount</code> parameter of most recent call to <code>vkCmdSetColorWriteEnableEXT</code> in the current command buffer <strong class=\"purple\">must</strong> be greater than or equal to the number of color attachments in the current render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07751",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleEXT\">vkCmdSetDiscardRectangleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command for each discard rectangle in <a href=\"#VkPipelineDiscardRectangleStateCreateInfoEXT\">VkPipelineDiscardRectangleStateCreateInfoEXT</a>::<code>discardRectangleCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07880",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizerDiscardEnable-09236",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> in the current command buffer set <code>discardRectangleEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDiscardRectangleEXT\">vkCmdSetDiscardRectangleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08648",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07881",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleModeEXT\">vkCmdSetDiscardRectangleModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08649",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> in the current command buffer set <code>discardRectangleEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDiscardRectangleModeEXT\">vkCmdSetDiscardRectangleModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-08913",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-08914",
          "text": "If current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-08915",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline was not equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>, the value of the format <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-08916",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-08917",
          "text": "If current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-dynamicRenderingUnusedAttachments-08918",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline was not equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>, the value of the format <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-imageView-06183",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a>::<code>imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-imageView-06184",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingFragmentDensityMapAttachmentInfoEXT\">VkRenderingFragmentDensityMapAttachmentInfoEXT</a>::<code>imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-colorAttachmentCount-06185",
          "text": "If the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the corresponding element of the <code>pColorAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-pDepthAttachment-06186",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-pStencilAttachment-06187",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-multisampledRenderToSingleSampled-07285",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     the current render pass instance was begun with     <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than     <code>0</code>, then each element of the     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a     <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been     created with a sample count equal to the value of     <code>rasterizationSamples</code> for the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-multisampledRenderToSingleSampled-07286",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not     <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the     currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count     used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-multisampledRenderToSingleSampled-07287",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not     <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the     currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count     used to create     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-pNext-07935",
          "text": "If this command has been called inside a render pass instance started with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and the <code>pNext</code> chain of <a href=\"#VkRenderingInfo\">VkRenderingInfo</a> includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a>::<code>rasterizationSamples</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-renderPass-06198",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>renderPass</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-pColorAttachments-08963",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound with a fragment shader that statically writes to a color attachment, the color write mask is not zero, color writes are enabled, and the corresponding element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-pDepthAttachment-08964",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound, depth test is enabled, depth write is enabled, and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-pStencilAttachment-08965",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound, stencil test is enabled and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-primitivesGeneratedQueryWithRasterizerDiscard-06708",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithRasterizerDiscard\"><code>primitivesGeneratedQueryWithRasterizerDiscard</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, <a href=\"#primsrast-discard\">rasterization discard</a> <strong class=\"purple\">must</strong> not be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-primitivesGeneratedQueryWithNonZeroStreams-06709",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, the bound graphics pipeline <strong class=\"purple\">must</strong> not have been created with a non-zero value in <code>VkPipelineRasterizationStateStreamCreateInfoEXT</code>::<code>rasterizationStream</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07619",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetTessellationDomainOriginEXT\">vkCmdSetTessellationDomainOriginEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07620",
          "text": "If the <a href=\"#features-depthClamp\"><code>depthClamp</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthClampEnableEXT\">vkCmdSetDepthClampEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07621",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_POLYGON_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07622",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07623",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-alphaToCoverageEnable-08919",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic state enabled, and <code>alphaToCoverageEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-alphaToCoverageEnable-08920",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a> in the current command buffer set <code>alphaToCoverageEnable</code> to <code>VK_TRUE</code>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07624",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07625",
          "text": "If the <a href=\"#features-alphaToOne\"><code>alphaToOne</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAlphaToOneEnableEXT\">vkCmdSetAlphaToOneEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07626",
          "text": "If the <a href=\"#features-logicOp\"><code>logicOp</code></a> feature is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLogicOpEnableEXT\">vkCmdSetLogicOpEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07627",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08657",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07628",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08658",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> for any attachment set that attachment&#8217;s value in <code>pColorBlendEnables</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07629",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08659",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07630",
          "text": "If the <a href=\"#features-geometryStreams\"><code>geometryStreams</code></a> feature is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizationStreamEXT\">vkCmdSetRasterizationStreamEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07631",
          "text": "If the <code><a href=\"#VK_EXT_conservative_rasterization\">VK_EXT_conservative_rasterization</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetConservativeRasterizationModeEXT\">vkCmdSetConservativeRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07632",
          "text": "If the <code><a href=\"#VK_EXT_conservative_rasterization\">VK_EXT_conservative_rasterization</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>conservativeRasterizationMode</code> is <code>VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT</code>, then <a href=\"#vkCmdSetExtraPrimitiveOverestimationSizeEXT\">vkCmdSetExtraPrimitiveOverestimationSizeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07633",
          "text": "If the <a href=\"#features-depthClipEnable\"><code>depthClipEnable</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT</code> dynamic state, then <a href=\"#vkCmdSetDepthClipEnableEXT\">vkCmdSetDepthClipEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07634",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08664",
          "text": "If the <code><a href=\"#VK_EXT_sample_locations\">VK_EXT_sample_locations</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07635",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizerDiscardEnable-09416",
          "text": "If the <code><a href=\"#VK_EXT_blend_operation_advanced\">VK_EXT_blend_operation_advanced</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then at least one of <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> and <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07636",
          "text": "If the <code><a href=\"#VK_EXT_provoking_vertex\">VK_EXT_provoking_vertex</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetProvokingVertexModeEXT\">vkCmdSetProvokingVertexModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07637",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08666",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08667",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08668",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07638",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08669",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08670",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08671",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07849",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_KHR</code>     dynamic state enabled then <a href=\"#vkCmdSetLineStippleKHR\">vkCmdSetLineStippleKHR</a>     <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing     command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08672",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> in the current command buffer set <code>stippledLineEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetLineStippleEXT\">vkCmdSetLineStippleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07639",
          "text": "If the <a href=\"#features-depthClipControl\"><code>depthClipControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetDepthClipNegativeOneToOneEXT\">vkCmdSetDepthClipNegativeOneToOneEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-09650",
          "text": "If the <a href=\"#features-depthClampControl\"><code>depthClampControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthClampEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthClampRangeEXT\">vkCmdSetDepthClampRangeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07640",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07641",
          "text": "If the <code><a href=\"#VK_NV_viewport_swizzle\">VK_NV_viewport_swizzle</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07642",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07643",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageToColorEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07644",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageModulationModeNV\">vkCmdSetCoverageModulationModeNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07645",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageModulationMode</code> is any value other than <code>VK_COVERAGE_MODULATION_MODE_NONE_NV</code>, then <a href=\"#vkCmdSetCoverageModulationTableEnableNV\">vkCmdSetCoverageModulationTableEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07646",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageModulationTableEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetCoverageModulationTableNV\">vkCmdSetCoverageModulationTableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07647",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-pipelineFragmentShadingRate-09238",
          "text": "If the <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a> feature is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07648",
          "text": "If the <a href=\"#features-representativeFragmentTest\"><code>representativeFragmentTest</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetRepresentativeFragmentTestEnableNV\">vkCmdSetRepresentativeFragmentTestEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07649",
          "text": "If the <a href=\"#features-coverageReductionMode\"><code>coverageReductionMode</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageReductionModeNV\">vkCmdSetCoverageReductionModeNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-pColorBlendEnables-07470",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> state enabled and the last call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> set <code>pColorBlendEnables</code> for any attachment to <code>VK_TRUE</code>, then for those attachments in the subpass the corresponding 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_BLEND_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizationSamples-07471",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> follow the rules for a <a href=\"#renderpass-noattachments\">zero-attachment subpass</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-samples-07472",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, then the <code>samples</code> parameter in the last call to <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> be greater or equal to the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a>::<code>rasterizationSamples</code> parameter used to create the bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-samples-07473",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> state and <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> states enabled, then the <code>samples</code> parameter in the last call to <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> be greater or equal to the <code>rasterizationSamples</code> parameter in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizationSamples-07474",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and neither the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> nor the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extensions are enabled, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil attachments",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-09211",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, or a shader object is bound to any graphics stage, and the current render pass instance includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> be the same as the <code>rasterizationSamples</code> member of that structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-firstAttachment-07476",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEnableEXT</code> calls <strong class=\"purple\">must</strong> specify an enable for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizerDiscardEnable-09417",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEnableEXT</code> calls <strong class=\"purple\">must</strong> specify an enable for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-firstAttachment-07477",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEquationEXT</code> calls <strong class=\"purple\">must</strong> specify the blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizerDiscardEnable-09418",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEquationEXT</code> calls <strong class=\"purple\">must</strong> specify the blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-firstAttachment-07478",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorWriteMaskEXT</code> calls <strong class=\"purple\">must</strong> specify the color write mask for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizerDiscardEnable-09419",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorWriteMaskEXT</code> calls <strong class=\"purple\">must</strong> specify the color write mask for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-firstAttachment-07479",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendAdvancedEXT</code> calls <strong class=\"purple\">must</strong> specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-advancedBlendMaxColorAttachments-07480",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> and <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic states enabled and the last calls to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> and <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> have enabled advanced blending, then the number of active color attachments in the current subpass <strong class=\"purple\">must</strong> not exceed <a href=\"#limits-advancedBlendMaxColorAttachments\"><code>advancedBlendMaxColorAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-primitivesGeneratedQueryWithNonZeroStreams-07481",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, and the bound graphics pipeline was created with <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code> state enabled, the last call to <a href=\"#vkCmdSetRasterizationStreamEXT\">vkCmdSetRasterizationStreamEXT</a> <strong class=\"purple\">must</strong> have set the <code>rasterizationStream</code> to zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsPerPixel-07482",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsPerPixel-07483",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-07484",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-07485",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, then the <code>sampleLocationsInfo.sampleLocationGridSize.width</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-07486",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, then the <code>sampleLocationsInfo.sampleLocationGridSize.height</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-07487",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, the fragment shader code <strong class=\"purple\">must</strong> not statically use the extended instruction <code>InterpolateAtSample</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-07936",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <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 the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-07937",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <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 the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-07938",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-coverageModulationTableEnable-07488",
          "text": "If a shader object is bound to any graphics stage or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code> state enabled, and the last call to <a href=\"#vkCmdSetCoverageModulationTableEnableNV\">vkCmdSetCoverageModulationTableEnableNV</a> set <code>coverageModulationTableEnable</code> to <code>VK_TRUE</code>, then the <code>coverageModulationTableCount</code> parameter in the last call to <a href=\"#vkCmdSetCoverageModulationTableNV\">vkCmdSetCoverageModulationTableNV</a> <strong class=\"purple\">must</strong> equal the current <code>rasterizationSamples</code> divided by the number of color samples in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizationSamples-07489",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current <code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be the same as the sample count of the depth/stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-coverageToColorEnable-07490",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> state enabled and the last call to <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> set the <code>coverageToColorEnable</code> to <code>VK_TRUE</code>, then the current subpass <strong class=\"purple\">must</strong> have a color attachment at the location selected by the last call to <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizerDiscardEnable-09420",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the last call to <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> set the <code>coverageToColorEnable</code> to <code>VK_TRUE</code>, then the current subpass <strong class=\"purple\">must</strong> have a color attachment at the location selected by the last call to <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-coverageReductionMode-07491",
          "text": "If this <code><a href=\"#VK_NV_coverage_reduction_mode\">VK_NV_coverage_reduction_mode</a></code> extension is enabled, the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> and <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> states enabled, the current coverage reduction mode <code>coverageReductionMode</code>, then the current <code>rasterizationSamples</code>, and the sample counts for the color and depth/stencil attachments (if the subpass has them) <strong class=\"purple\">must</strong> be a valid combination returned by <a href=\"#vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV\">vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-viewportCount-07492",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-viewportCount-07493",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-viewportCount-09421",
          "text": "If the <code><a href=\"#VK_NV_viewport_swizzle\">VK_NV_viewport_swizzle</a></code> extension is enabled, and a shader object is bound to any graphics stage, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizationSamples-07494",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, and if the current subpass has any color attachments and <code>rasterizationSamples</code> of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> is greater than the number of color samples, then the pipeline <code>sampleShadingEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-stippledLineEnable-07495",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-stippledLineEnable-07496",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR</code>, then the <a href=\"#features-stippledBresenhamLines\"><code>stippledBresenhamLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-stippledLineEnable-07497",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR</code>, then the <a href=\"#features-stippledSmoothLines\"><code>stippledSmoothLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-stippledLineEnable-07498",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_DEFAULT_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled and <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>strictLines</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-conservativePointAndLineRasterization-07499",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code> dynamic state enabled, <a href=\"#limits-conservativePointAndLineRasterization\"><code>conservativePointAndLineRasterization</code></a> is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the <code>conservativeRasterizationMode</code> set by the last call to <a href=\"#vkCmdSetConservativeRasterizationModeEXT\">vkCmdSetConservativeRasterizationModeEXT</a> <strong class=\"purple\">must</strong> be <code>VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-stage-07073",
          "text": "If the currently bound pipeline was created with the <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a>::<code>stage</code> member of an element of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> set to <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>, then <a href=\"#queries-mesh-shader\">Mesh Shader Queries</a> <strong class=\"purple\">must</strong> not be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08877",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07850",
          "text": "If dynamic state was inherited from <a href=\"#VkCommandBufferInheritanceViewportScissorInfoNV\">VkCommandBufferInheritanceViewportScissorInfoNV</a>, it <strong class=\"purple\">must</strong> be set in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08684",
          "text": "If there is no bound graphics pipeline, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_VERTEX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08685",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08686",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08687",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08688",
          "text": "If there is no bound graphics pipeline, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08689",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TASK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08690",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08693",
          "text": "If there is no bound graphics pipeline, and at least one of the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features is enabled, one of the <code>VK_SHADER_STAGE_VERTEX_BIT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stages <strong class=\"purple\">must</strong> have a valid <code>VkShaderEXT</code> bound, and the other <strong class=\"purple\">must</strong> have no <code>VkShaderEXT</code> bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08694",
          "text": "If there is no bound graphics pipeline, and both the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features are enabled, and a valid <code>VkShaderEXT</code> is bound the to the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage, and that <code>VkShaderEXT</code> was created without the <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> flag, a valid <code>VkShaderEXT</code> <strong class=\"purple\">must</strong> be bound to the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08695",
          "text": "If there is no bound graphics pipeline, and both the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features are enabled, and a valid <code>VkShaderEXT</code> is bound the to the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage, and that <code>VkShaderEXT</code> was created with the <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> flag, there <strong class=\"purple\">must</strong> be no <code>VkShaderEXT</code> bound to the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08696",
          "text": "If there is no bound graphics pipeline, and a valid <code>VkShaderEXT</code> is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, there <strong class=\"purple\">must</strong> be no <code>VkShaderEXT</code> bound to either the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage or the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08698",
          "text": "If any graphics shader is bound which was created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag, then all shaders created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag in the same <a href=\"#vkCreateShadersEXT\">vkCreateShadersEXT</a> call <strong class=\"purple\">must</strong> also be bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08699",
          "text": "If any graphics shader is bound which was created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag, any stages in between stages whose shaders which did not create a shader with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag as part of the same <a href=\"#vkCreateShadersEXT\">vkCreateShadersEXT</a> call <strong class=\"purple\">must</strong> not have any <code>VkShaderEXT</code> bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08878",
          "text": "All bound graphics shader objects <strong class=\"purple\">must</strong> have been created with identical or identically defined push constant ranges",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08879",
          "text": "All bound graphics shader objects <strong class=\"purple\">must</strong> have been created with identical or identically defined arrays of descriptor set layouts",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-colorAttachmentCount-09372",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, and a fragment shader is bound, it <strong class=\"purple\">must</strong> not declare the <code>DepthReplacing</code> or <code>StencilRefReplacingEXT</code> execution modes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-pDynamicStates-08715",
          "text": "If the bound graphics pipeline state includes a fragment shader stage, was created with <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpDepthAttachmentReadEXT</code>, the <code>depthWriteEnable</code> parameter in the last call to <a href=\"#vkCmdSetDepthWriteEnable\">vkCmdSetDepthWriteEnable</a> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-pDynamicStates-08716",
          "text": "If the bound graphics pipeline state includes a fragment shader stage, was created with <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpStencilAttachmentReadEXT</code>, the <code>writeMask</code> parameter in the last call to <a href=\"#vkCmdSetStencilWriteMask\">vkCmdSetStencilWriteMask</a> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-09116",
          "text": "If     a shader object is bound to any graphics stage or     the currently bound graphics pipeline was created with     <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code>,     and the format of any color attachment is     <code>VK_FORMAT_E5B9G9R9_UFLOAT_PACK32</code>, the corresponding element of the     <code>pColorWriteMasks</code> parameter of <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a>     <strong class=\"purple\">must</strong> either include all of <code>VK_COLOR_COMPONENT_R_BIT</code>,     <code>VK_COLOR_COMPONENT_G_BIT</code>, and <code>VK_COLOR_COMPONENT_B_BIT</code>, or     none of them",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-maxFragmentDualSrcAttachments-09239",
          "text": "If <a href=\"#framebuffer-blending\">blending</a> is enabled for any attachment where either the source or destination blend factors for that attachment <a href=\"#framebuffer-dsb\">use the secondary color input</a>, the maximum value of <code>Location</code> for any output attachment <a href=\"#shaders-staticuse\">statically used</a> in the <code>Fragment</code> <code>Execution</code> <code>Model</code> executed by this command <strong class=\"purple\">must</strong> be less than <a href=\"#limits-maxFragmentDualSrcAttachments\"><code>maxFragmentDualSrcAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-09548",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and there is no shader object bound to any graphics stage, the value of each element of <a href=\"#VkRenderingAttachmentLocationInfoKHR\">VkRenderingAttachmentLocationInfoKHR</a>::<code>pColorAttachmentLocations</code> set by <a href=\"#vkCmdSetRenderingAttachmentLocationsKHR\">vkCmdSetRenderingAttachmentLocationsKHR</a> <strong class=\"purple\">must</strong> match the value set for the corresponding element in the currently bound pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-09549",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and there is no shader object bound to any graphics stage, input attachment index mappings in the currently bound pipeline <strong class=\"purple\">must</strong> match those set for the current render pass instance via <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-09642",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with the <code>VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT</code> flag, the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-09643",
          "text": "If the bound graphics pipeline was created with <code>VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT</code>, the current render pass <strong class=\"purple\">must</strong> have begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with the <code>VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT</code> flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-stage-06480",
          "text": "The bound graphics pipeline <strong class=\"purple\">must</strong> not have been created with the <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a>::<code>stage</code> member of an element of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> set to <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07074",
          "text": "<a href=\"#queries-transform-feedback\">Transform Feedback Queries</a> <strong class=\"purple\">must</strong> not be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07075",
          "text": "<a href=\"#queries-primitives-generated\">Primitives Generated Queries</a> <strong class=\"purple\">must</strong> not be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-pipelineStatistics-07076",
          "text": "The <code>pipelineStatistics</code> member used to create any active <a href=\"#queries-pipestats\">Pipeline Statistics Query</a> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT</code>, <code>VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT</code>, or <code>VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-drawCount-02718",
          "text": "If the <a href=\"#features-multiDrawIndirect\"><code>multiDrawIndirect</code></a> feature is not enabled, <code>drawCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-drawCount-02719",
          "text": "<code>drawCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-ClusterCullingHUAWEI-07824",
          "text": "The current pipeline bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> <strong class=\"purple\">must</strong> contain a shader stage using the <code>ClusterCullingHUAWEI</code> <code>Execution</code> <code>Model</code>.",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-offset-07918",
          "text": "<code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <a href=\"#VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI\">VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI</a>::<code>indirectBufferOffsetAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-buffer-parameter",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-commonparent",
          "text": "Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineVertexInputStateCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-vertexBindingDescriptionCount-00613",
          "text": "<code>vertexBindingDescriptionCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-vertexAttributeDescriptionCount-00614",
          "text": "<code>vertexAttributeDescriptionCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputAttributes</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-binding-00615",
          "text": "For every <code>binding</code> specified by each element of <code>pVertexAttributeDescriptions</code>, a <a href=\"#VkVertexInputBindingDescription\">VkVertexInputBindingDescription</a> <strong class=\"purple\">must</strong> exist in <code>pVertexBindingDescriptions</code> with the same value of <code>binding</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pVertexBindingDescriptions-00616",
          "text": "All elements of <code>pVertexBindingDescriptions</code> <strong class=\"purple\">must</strong> describe distinct binding numbers",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pVertexAttributeDescriptions-00617",
          "text": "All elements of <code>pVertexAttributeDescriptions</code> <strong class=\"purple\">must</strong> describe distinct attribute locations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineVertexInputDivisorStateCreateInfoKHR\">VkPipelineVertexInputDivisorStateCreateInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pVertexBindingDescriptions-parameter",
          "text": "If <code>vertexBindingDescriptionCount</code> is not <code>0</code>, <code>pVertexBindingDescriptions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>vertexBindingDescriptionCount</code> valid <a href=\"#VkVertexInputBindingDescription\">VkVertexInputBindingDescription</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pVertexAttributeDescriptions-parameter",
          "text": "If <code>vertexAttributeDescriptionCount</code> is not <code>0</code>, <code>pVertexAttributeDescriptions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>vertexAttributeDescriptionCount</code> valid <a href=\"#VkVertexInputAttributeDescription\">VkVertexInputAttributeDescription</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkVertexInputBindingDescription": {
      "core": [
        {
          "vuid": "VUID-VkVertexInputBindingDescription-binding-00618",
          "text": "<code>binding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVertexInputBindingDescription-stride-00619",
          "text": "<code>stride</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindingStride</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVertexInputBindingDescription-stride-04456",
          "text": "If the <code><a href=\"#VK_KHR_portability_subset\">VK_KHR_portability_subset</a></code> extension is enabled, <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of, and at least as large as, <a href=\"#VkPhysicalDevicePortabilitySubsetPropertiesKHR\">VkPhysicalDevicePortabilitySubsetPropertiesKHR</a>::<code>minVertexInputBindingStrideAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVertexInputBindingDescription-inputRate-parameter",
          "text": "<code>inputRate</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkVertexInputRate\">VkVertexInputRate</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkVertexInputAttributeDescription": {
      "core": [
        {
          "vuid": "VUID-VkVertexInputAttributeDescription-location-00620",
          "text": "<code>location</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputAttributes</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVertexInputAttributeDescription-binding-00621",
          "text": "<code>binding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVertexInputAttributeDescription-offset-00622",
          "text": "<code>offset</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputAttributeOffset</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVertexInputAttributeDescription-format-00623",
          "text": "The <a href=\"#resources-buffer-view-format-features\">format features</a> of <code>format</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVertexInputAttributeDescription-vertexAttributeAccessBeyondStride-04457",
          "text": "If the <code><a href=\"#VK_KHR_portability_subset\">VK_KHR_portability_subset</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>vertexAttributeAccessBeyondStride</code> is <code>VK_FALSE</code>, the sum of <code>offset</code> plus the size of the vertex attribute data described by <code>format</code> <strong class=\"purple\">must</strong> not be greater than <code>stride</code> in the <a href=\"#VkVertexInputBindingDescription\">VkVertexInputBindingDescription</a> referenced in <code>binding</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVertexInputAttributeDescription-format-parameter",
          "text": "<code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetVertexInputEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetVertexInputEXT-None-08546",
          "text": "Either the <a href=\"#features-vertexInputDynamicState\"><code>vertexInputDynamicState</code></a> feature or the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature or both <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetVertexInputEXT-vertexBindingDescriptionCount-04791",
          "text": "<code>vertexBindingDescriptionCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetVertexInputEXT-vertexAttributeDescriptionCount-04792",
          "text": "<code>vertexAttributeDescriptionCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputAttributes</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetVertexInputEXT-binding-04793",
          "text": "For every <code>binding</code> specified by each element of <code>pVertexAttributeDescriptions</code>, a <a href=\"#VkVertexInputBindingDescription2EXT\">VkVertexInputBindingDescription2EXT</a> <strong class=\"purple\">must</strong> exist in <code>pVertexBindingDescriptions</code> with the same value of <code>binding</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetVertexInputEXT-pVertexBindingDescriptions-04794",
          "text": "All elements of <code>pVertexBindingDescriptions</code> <strong class=\"purple\">must</strong> describe distinct binding numbers",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetVertexInputEXT-pVertexAttributeDescriptions-04795",
          "text": "All elements of <code>pVertexAttributeDescriptions</code> <strong class=\"purple\">must</strong> describe distinct attribute locations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetVertexInputEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetVertexInputEXT-pVertexBindingDescriptions-parameter",
          "text": "If <code>vertexBindingDescriptionCount</code> is not <code>0</code>, <code>pVertexBindingDescriptions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>vertexBindingDescriptionCount</code> valid <a href=\"#VkVertexInputBindingDescription2EXT\">VkVertexInputBindingDescription2EXT</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetVertexInputEXT-pVertexAttributeDescriptions-parameter",
          "text": "If <code>vertexAttributeDescriptionCount</code> is not <code>0</code>, <code>pVertexAttributeDescriptions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>vertexAttributeDescriptionCount</code> valid <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetVertexInputEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetVertexInputEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetVertexInputEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkVertexInputBindingDescription2EXT": {
      "core": [
        {
          "vuid": "VUID-VkVertexInputBindingDescription2EXT-binding-04796",
          "text": "<code>binding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVertexInputBindingDescription2EXT-stride-04797",
          "text": "<code>stride</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindingStride</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVertexInputBindingDescription2EXT-divisor-04798",
          "text": "If the <a href=\"#features-vertexAttributeInstanceRateZeroDivisor\"><code>vertexAttributeInstanceRateZeroDivisor</code></a> feature is not enabled, <code>divisor</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVertexInputBindingDescription2EXT-divisor-04799",
          "text": "If the <a href=\"#features-vertexAttributeInstanceRateDivisor\"><code>vertexAttributeInstanceRateDivisor</code></a> feature is not enabled, <code>divisor</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVertexInputBindingDescription2EXT-divisor-06226",
          "text": "<code>divisor</code> <strong class=\"purple\">must</strong> be a value between <code>0</code> and <code>VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT</code>::<code>maxVertexAttribDivisor</code>, inclusive",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVertexInputBindingDescription2EXT-divisor-06227",
          "text": "If <code>divisor</code> is not <code>1</code> then <code>inputRate</code> <strong class=\"purple\">must</strong> be of type <code>VK_VERTEX_INPUT_RATE_INSTANCE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVertexInputBindingDescription2EXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVertexInputBindingDescription2EXT-inputRate-parameter",
          "text": "<code>inputRate</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkVertexInputRate\">VkVertexInputRate</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkVertexInputAttributeDescription2EXT": {
      "core": [
        {
          "vuid": "VUID-VkVertexInputAttributeDescription2EXT-location-06228",
          "text": "<code>location</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputAttributes</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVertexInputAttributeDescription2EXT-binding-06229",
          "text": "<code>binding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVertexInputAttributeDescription2EXT-offset-06230",
          "text": "<code>offset</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputAttributeOffset</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVertexInputAttributeDescription2EXT-format-04805",
          "text": "The <a href=\"#resources-buffer-view-format-features\">format features</a> of <code>format</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVertexInputAttributeDescription2EXT-vertexAttributeAccessBeyondStride-04806",
          "text": "If the <code><a href=\"#VK_KHR_portability_subset\">VK_KHR_portability_subset</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>vertexAttributeAccessBeyondStride</code> is <code>VK_FALSE</code>, the sum of <code>offset</code> plus the size of the vertex attribute data described by <code>format</code> <strong class=\"purple\">must</strong> not be greater than <code>stride</code> in the <a href=\"#VkVertexInputBindingDescription2EXT\">VkVertexInputBindingDescription2EXT</a> referenced in <code>binding</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVertexInputAttributeDescription2EXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVertexInputAttributeDescription2EXT-format-parameter",
          "text": "<code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdBindVertexBuffers": {
      "core": [
        {
          "vuid": "VUID-vkCmdBindVertexBuffers-firstBinding-00624",
          "text": "<code>firstBinding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindVertexBuffers-firstBinding-00625",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindVertexBuffers-pOffsets-00626",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindVertexBuffers-pBuffers-00627",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindVertexBuffers-pBuffers-00628",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindVertexBuffers-pBuffers-04001",
          "text": "If the <a href=\"#features-nullDescriptor\"><code>nullDescriptor</code></a> feature is not enabled, all elements of <code>pBuffers</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindVertexBuffers-pBuffers-04002",
          "text": "If an element of <code>pBuffers</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the corresponding element of <code>pOffsets</code> <strong class=\"purple\">must</strong> be zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindVertexBuffers-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindVertexBuffers-pBuffers-parameter",
          "text": "<code>pBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <a href=\"#VkBuffer\">VkBuffer</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindVertexBuffers-pOffsets-parameter",
          "text": "<code>pOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> <a href=\"#VkDeviceSize\">VkDeviceSize</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindVertexBuffers-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindVertexBuffers-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindVertexBuffers-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindVertexBuffers-bindingCount-arraylength",
          "text": "<code>bindingCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindVertexBuffers-commonparent",
          "text": "Both of <code>commandBuffer</code>, and the elements of <code>pBuffers</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdBindVertexBuffers2": {
      "core": [
        {
          "vuid": "VUID-vkCmdBindVertexBuffers2-firstBinding-03355",
          "text": "<code>firstBinding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindVertexBuffers2-firstBinding-03356",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindVertexBuffers2-pOffsets-03357",
          "text": "If <code>pSizes</code> is not <code>NULL</code>, all elements of <code>pOffsets</code> <strong class=\"purple\">must</strong> be less than the size of the corresponding element in <code>pBuffers</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindVertexBuffers2-pSizes-03358",
          "text": "If <code>pSizes</code> is not <code>NULL</code>, all elements of <code>pOffsets</code> plus <code>pSizes</code> , where <code>pSizes</code> 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindVertexBuffers2-pBuffers-03359",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindVertexBuffers2-pBuffers-03360",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindVertexBuffers2-pBuffers-04111",
          "text": "If the <a href=\"#features-nullDescriptor\"><code>nullDescriptor</code></a> feature is not enabled, all elements of <code>pBuffers</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindVertexBuffers2-pBuffers-04112",
          "text": "If an element of <code>pBuffers</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the corresponding element of <code>pOffsets</code> <strong class=\"purple\">must</strong> be zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindVertexBuffers2-pStrides-03362",
          "text": "If <code>pStrides</code> is not <code>NULL</code> each element of <code>pStrides</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindingStride</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindVertexBuffers2-pStrides-06209",
          "text": "If <code>pStrides</code> is not <code>NULL</code> each element of <code>pStrides</code> <strong class=\"purple\">must</strong> be either 0 or greater than or equal to the maximum extent of all vertex input attributes fetched from the corresponding binding, where the extent is calculated as the <a href=\"#VkVertexInputAttributeDescription\">VkVertexInputAttributeDescription</a>::<code>offset</code> plus <a href=\"#VkVertexInputAttributeDescription\">VkVertexInputAttributeDescription</a>::<code>format</code> size",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindVertexBuffers2-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindVertexBuffers2-pBuffers-parameter",
          "text": "<code>pBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <a href=\"#VkBuffer\">VkBuffer</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindVertexBuffers2-pOffsets-parameter",
          "text": "<code>pOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> <a href=\"#VkDeviceSize\">VkDeviceSize</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindVertexBuffers2-pSizes-parameter",
          "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> <a href=\"#VkDeviceSize\">VkDeviceSize</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindVertexBuffers2-pStrides-parameter",
          "text": "If <code>pStrides</code> is not <code>NULL</code>, <code>pStrides</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> <a href=\"#VkDeviceSize\">VkDeviceSize</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindVertexBuffers2-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindVertexBuffers2-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindVertexBuffers2-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindVertexBuffers2-bindingCount-arraylength",
          "text": "If any of <code>pSizes</code>, or <code>pStrides</code> are not <code>NULL</code>, <code>bindingCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindVertexBuffers2-commonparent",
          "text": "Both of <code>commandBuffer</code>, and the elements of <code>pBuffers</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineVertexInputDivisorStateCreateInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkPipelineVertexInputDivisorStateCreateInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineVertexInputDivisorStateCreateInfoKHR-pVertexBindingDivisors-parameter",
          "text": "<code>pVertexBindingDivisors</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>vertexBindingDivisorCount</code> <a href=\"#VkVertexInputBindingDivisorDescriptionKHR\">VkVertexInputBindingDivisorDescriptionKHR</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineVertexInputDivisorStateCreateInfoKHR-vertexBindingDivisorCount-arraylength",
          "text": "<code>vertexBindingDivisorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkVertexInputBindingDivisorDescriptionKHR": {
      "core": [
        {
          "vuid": "VUID-VkVertexInputBindingDivisorDescriptionKHR-binding-01869",
          "text": "<code>binding</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxVertexInputBindings</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVertexInputBindingDivisorDescriptionKHR-vertexAttributeInstanceRateZeroDivisor-02228",
          "text": "If the <code>vertexAttributeInstanceRateZeroDivisor</code> feature is not enabled, <code>divisor</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVertexInputBindingDivisorDescriptionKHR-vertexAttributeInstanceRateDivisor-02229",
          "text": "If the <code>vertexAttributeInstanceRateDivisor</code> feature is not enabled, <code>divisor</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVertexInputBindingDivisorDescriptionKHR-divisor-01870",
          "text": "<code>divisor</code> <strong class=\"purple\">must</strong> be a value between <code>0</code> and <a href=\"#VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR\">VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR</a>::<code>maxVertexAttribDivisor</code>, inclusive",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVertexInputBindingDivisorDescriptionKHR-inputRate-01871",
          "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>",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineTessellationStateCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkPipelineTessellationStateCreateInfo-patchControlPoints-01214",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineTessellationStateCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineTessellationStateCreateInfo-pNext-pNext",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineTessellationStateCreateInfo-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineTessellationStateCreateInfo-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineTessellationDomainOriginStateCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkPipelineTessellationDomainOriginStateCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineTessellationDomainOriginStateCreateInfo-domainOrigin-parameter",
          "text": "<code>domainOrigin</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkTessellationDomainOrigin\">VkTessellationDomainOrigin</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetTessellationDomainOriginEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetTessellationDomainOriginEXT-None-09423",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>The <a href=\"#features-extendedDynamicState3TessellationDomainOrigin\"><code>extendedDynamicState3TessellationDomainOrigin</code></a> feature is\nenabled</p>\n</li>\n<li>\n<p>The <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetTessellationDomainOriginEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetTessellationDomainOriginEXT-domainOrigin-parameter",
          "text": "<code>domainOrigin</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkTessellationDomainOrigin\">VkTessellationDomainOrigin</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetTessellationDomainOriginEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetTessellationDomainOriginEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetTessellationDomainOriginEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdBindTransformFeedbackBuffersEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-transformFeedback-02355",
          "text": "<code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>transformFeedback</code> <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-firstBinding-02356",
          "text": "<code>firstBinding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBuffers</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-firstBinding-02357",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02358",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02359",
          "text": "All elements of <code>pOffsets</code> <strong class=\"purple\">must</strong> be a multiple of 4",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-02360",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pSize-02361",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pSizes-02362",
          "text": "All elements of <code>pSizes</code> <strong class=\"purple\">must</strong> be either <code>VK_WHOLE_SIZE</code>, or less than or equal to the size of the corresponding buffer in <code>pBuffers</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02363",
          "text": "All elements of <code>pOffsets</code> plus <code>pSizes</code>, where the <code>pSizes</code>, element is not <code>VK_WHOLE_SIZE</code>, <strong class=\"purple\">must</strong> be less than or equal to the size of the corresponding buffer in <code>pBuffers</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-02364",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-None-02365",
          "text": "Transform feedback <strong class=\"purple\">must</strong> not be active when the <code>vkCmdBindTransformFeedbackBuffersEXT</code> command is recorded",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-parameter",
          "text": "<code>pBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> valid <a href=\"#VkBuffer\">VkBuffer</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-parameter",
          "text": "<code>pOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> <a href=\"#VkDeviceSize\">VkDeviceSize</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-bindingCount-arraylength",
          "text": "<code>bindingCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-commonparent",
          "text": "Both of <code>commandBuffer</code>, and the elements of <code>pBuffers</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdBeginTransformFeedbackEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-transformFeedback-02366",
          "text": "<code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>transformFeedback</code> <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-None-02367",
          "text": "Transform feedback <strong class=\"purple\">must</strong> not be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-firstCounterBuffer-02368",
          "text": "<code>firstCounterBuffer</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBuffers</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-firstCounterBuffer-02369",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-counterBufferCount-02607",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-pCounterBufferOffsets-02370",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-pCounterBuffer-02371",
          "text": "If <code>pCounterBuffer</code> is <code>NULL</code>, then <code>pCounterBufferOffsets</code> <strong class=\"purple\">must</strong> also be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-pCounterBuffers-02372",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-firstCounterBuffer-09630",
          "text": "The sum of <code>firstCounterBuffer</code> and <code>counterBufferCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of transform feedback buffers currently bound by <a href=\"#vkCmdBindTransformFeedbackBuffersEXT\">vkCmdBindTransformFeedbackBuffersEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-None-06233",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is not enabled, a valid graphics pipeline <strong class=\"purple\">must</strong> be bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-None-04128",
          "text": "The last <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader stage</a> of the bound graphics pipeline <strong class=\"purple\">must</strong> have been declared with the <code>Xfb</code> execution mode",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-None-02373",
          "text": "Transform feedback <strong class=\"purple\">must</strong> not be made active in a render pass instance with multiview enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-pCounterBufferOffsets-parameter",
          "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> <a href=\"#VkDeviceSize\">VkDeviceSize</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-commonparent",
          "text": "Both of <code>commandBuffer</code>, and the elements of <code>pCounterBuffers</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdEndTransformFeedbackEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-transformFeedback-02374",
          "text": "<code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>transformFeedback</code> <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-None-02375",
          "text": "Transform feedback <strong class=\"purple\">must</strong> be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-firstCounterBuffer-02376",
          "text": "<code>firstCounterBuffer</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBuffers</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-firstCounterBuffer-02377",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-counterBufferCount-02608",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-pCounterBufferOffsets-02378",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-pCounterBuffer-02379",
          "text": "If <code>pCounterBuffer</code> is <code>NULL</code>, then <code>pCounterBufferOffsets</code> <strong class=\"purple\">must</strong> also be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-pCounterBuffers-02380",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-pCounterBufferOffsets-parameter",
          "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> <a href=\"#VkDeviceSize\">VkDeviceSize</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-commonparent",
          "text": "Both of <code>commandBuffer</code>, and the elements of <code>pCounterBuffers</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineViewportSwizzleStateCreateInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-viewportCount-01215",
          "text": "<code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> set in <code>VkPipelineViewportStateCreateInfo</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-pViewportSwizzles-parameter",
          "text": "<code>pViewportSwizzles</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> valid <a href=\"#VkViewportSwizzleNV\">VkViewportSwizzleNV</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-viewportCount-arraylength",
          "text": "<code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetViewportSwizzleNV": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetViewportSwizzleNV-None-09423",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>The <a href=\"#features-extendedDynamicState3ViewportSwizzle\"><code>extendedDynamicState3ViewportSwizzle</code></a> feature is\nenabled</p>\n</li>\n<li>\n<p>The <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewportSwizzleNV-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewportSwizzleNV-pViewportSwizzles-parameter",
          "text": "<code>pViewportSwizzles</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> valid <a href=\"#VkViewportSwizzleNV\">VkViewportSwizzleNV</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewportSwizzleNV-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewportSwizzleNV-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewportSwizzleNV-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewportSwizzleNV-viewportCount-arraylength",
          "text": "<code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkViewportSwizzleNV": {
      "core": [
        {
          "vuid": "VUID-VkViewportSwizzleNV-x-parameter",
          "text": "<code>x</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkViewportCoordinateSwizzleNV\">VkViewportCoordinateSwizzleNV</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkViewportSwizzleNV-y-parameter",
          "text": "<code>y</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkViewportCoordinateSwizzleNV\">VkViewportCoordinateSwizzleNV</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkViewportSwizzleNV-z-parameter",
          "text": "<code>z</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkViewportCoordinateSwizzleNV\">VkViewportCoordinateSwizzleNV</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkViewportSwizzleNV-w-parameter",
          "text": "<code>w</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkViewportCoordinateSwizzleNV\">VkViewportCoordinateSwizzleNV</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineRasterizationProvokingVertexStateCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkPipelineRasterizationProvokingVertexStateCreateInfoEXT-provokingVertexMode-04883",
          "text": "If <code>provokingVertexMode</code> is <code>VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT</code>, then the <a href=\"#features-provokingVertexLast\"><code>provokingVertexLast</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRasterizationProvokingVertexStateCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRasterizationProvokingVertexStateCreateInfoEXT-provokingVertexMode-parameter",
          "text": "<code>provokingVertexMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkProvokingVertexModeEXT\">VkProvokingVertexModeEXT</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetProvokingVertexModeEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetProvokingVertexModeEXT-None-09423",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>The <a href=\"#features-extendedDynamicState3ProvokingVertexMode\"><code>extendedDynamicState3ProvokingVertexMode</code></a> feature is\nenabled</p>\n</li>\n<li>\n<p>The <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetProvokingVertexModeEXT-provokingVertexMode-07447",
          "text": "If <code>provokingVertexMode</code> is <code>VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT</code>, then the <a href=\"#features-provokingVertexLast\"><code>provokingVertexLast</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetProvokingVertexModeEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetProvokingVertexModeEXT-provokingVertexMode-parameter",
          "text": "<code>provokingVertexMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkProvokingVertexModeEXT\">VkProvokingVertexModeEXT</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetProvokingVertexModeEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetProvokingVertexModeEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetProvokingVertexModeEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetDepthClampEnableEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetDepthClampEnableEXT-None-09423",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>The <a href=\"#features-extendedDynamicState3DepthClampEnable\"><code>extendedDynamicState3DepthClampEnable</code></a> feature is\nenabled</p>\n</li>\n<li>\n<p>The <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthClampEnableEXT-depthClamp-07449",
          "text": "If the <a href=\"#features-depthClamp\"><code>depthClamp</code></a> feature is not enabled, <code>depthClampEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthClampEnableEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthClampEnableEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthClampEnableEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthClampEnableEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetDepthClipEnableEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetDepthClipEnableEXT-None-09423",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>The <a href=\"#features-extendedDynamicState3DepthClipEnable\"><code>extendedDynamicState3DepthClipEnable</code></a> feature is\nenabled</p>\n</li>\n<li>\n<p>The <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthClipEnableEXT-depthClipEnable-07451",
          "text": "The <a href=\"#features-depthClipEnable\"><code>depthClipEnable</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthClipEnableEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthClipEnableEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthClipEnableEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthClipEnableEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineViewportDepthClipControlCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkPipelineViewportDepthClipControlCreateInfoEXT-negativeOneToOne-06470",
          "text": "If <a href=\"#features-depthClipControl\"><code>depthClipControl</code></a> is not enabled, <code>negativeOneToOne</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineViewportDepthClipControlCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetDepthClipNegativeOneToOneEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetDepthClipNegativeOneToOneEXT-None-09423",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>The <a href=\"#features-extendedDynamicState3DepthClipNegativeOneToOne\"><code>extendedDynamicState3DepthClipNegativeOneToOne</code></a> feature is\nenabled</p>\n</li>\n<li>\n<p>The <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthClipNegativeOneToOneEXT-depthClipControl-07453",
          "text": "The <a href=\"#features-depthClipControl\"><code>depthClipControl</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthClipNegativeOneToOneEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthClipNegativeOneToOneEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthClipNegativeOneToOneEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthClipNegativeOneToOneEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineViewportWScalingStateCreateInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkPipelineViewportWScalingStateCreateInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineViewportWScalingStateCreateInfoNV-viewportCount-arraylength",
          "text": "<code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetViewportWScalingEnableNV": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetViewportWScalingEnableNV-None-09423",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>The <a href=\"#features-extendedDynamicState3ViewportWScalingEnable\"><code>extendedDynamicState3ViewportWScalingEnable</code></a> feature is\nenabled</p>\n</li>\n<li>\n<p>The <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewportWScalingEnableNV-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewportWScalingEnableNV-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewportWScalingEnableNV-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewportWScalingEnableNV-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetViewportWScalingNV": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetViewportWScalingNV-firstViewport-01324",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewportWScalingNV-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewportWScalingNV-pViewportWScalings-parameter",
          "text": "<code>pViewportWScalings</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> <a href=\"#VkViewportWScalingNV\">VkViewportWScalingNV</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewportWScalingNV-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewportWScalingNV-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewportWScalingNV-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewportWScalingNV-viewportCount-arraylength",
          "text": "<code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineViewportStateCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportCount-01216",
          "text": "If the <a href=\"#features-multiViewport\"><code>multiViewport</code></a> feature is not enabled, <code>viewportCount</code> <strong class=\"purple\">must</strong> not be greater than <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-01217",
          "text": "If the <a href=\"#features-multiViewport\"><code>multiViewport</code></a> feature is not enabled, <code>scissorCount</code> <strong class=\"purple\">must</strong> not be greater than <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportCount-01218",
          "text": "<code>viewportCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-01219",
          "text": "<code>scissorCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineViewportStateCreateInfo-x-02821",
          "text": "The <code>x</code> and <code>y</code> members of <code>offset</code> member of any element of <code>pScissors</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineViewportStateCreateInfo-offset-02822",
          "text": "Evaluation of <span class=\"eq\">(<code>offset.x</code> +  <code>extent.width</code>)</span> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow for any element of <code>pScissors</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineViewportStateCreateInfo-offset-02823",
          "text": "Evaluation of <span class=\"eq\">(<code>offset.y</code> +  <code>extent.height</code>)</span> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow for any element of <code>pScissors</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-04134",
          "text": "If <code>scissorCount</code> and <code>viewportCount</code> are both not dynamic, then <code>scissorCount</code> and <code>viewportCount</code> <strong class=\"purple\">must</strong> be identical",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportCount-04135",
          "text": "If the graphics pipeline is being created with <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> set then <code>viewportCount</code> <strong class=\"purple\">must</strong> be <code>0</code>, otherwise <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-04136",
          "text": "If the graphics pipeline is being created with <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> set then <code>scissorCount</code> <strong class=\"purple\">must</strong> be <code>0</code>, otherwise <code>scissorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportWScalingEnable-01726",
          "text": "If the <code>viewportWScalingEnable</code> member of a <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a> structure included in the <code>pNext</code> chain is <code>VK_TRUE</code>, the <code>viewportCount</code> member of the <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a> structure <strong class=\"purple\">must</strong> be greater than or equal to <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>::<code>viewportCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineViewportStateCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineViewportStateCreateInfo-pNext-pNext",
          "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=\"#VkPipelineViewportDepthClampControlCreateInfoEXT\">VkPipelineViewportDepthClampControlCreateInfoEXT</a>, <a href=\"#VkPipelineViewportDepthClipControlCreateInfoEXT\">VkPipelineViewportDepthClipControlCreateInfoEXT</a>, <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>, <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>, <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>, or <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineViewportStateCreateInfo-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineViewportStateCreateInfo-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetViewportWithCount": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetViewportWithCount-None-08971",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <a href=\"#features-extendedDynamicState\"><code>extendedDynamicState</code></a>\nfeature is enabled</p>\n</li>\n<li>\n<p>the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n<li>\n<p>the value of <a href=\"#VkApplicationInfo\">VkApplicationInfo</a>::<code>apiVersion</code> used to create\nthe <a href=\"#VkInstance\">VkInstance</a> parent of <code>commandBuffer</code> is greater than or\nequal to Version 1.3</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewportWithCount-viewportCount-03394",
          "text": "<code>viewportCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>, inclusive",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewportWithCount-viewportCount-03395",
          "text": "If the <a href=\"#features-multiViewport\"><code>multiViewport</code></a> feature is not enabled, <code>viewportCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewportWithCount-commandBuffer-04819",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> not have <a href=\"#VkCommandBufferInheritanceViewportScissorInfoNV\">VkCommandBufferInheritanceViewportScissorInfoNV</a>::<code>viewportScissor2D</code> enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewportWithCount-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewportWithCount-pViewports-parameter",
          "text": "<code>pViewports</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> valid <a href=\"#VkViewport\">VkViewport</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewportWithCount-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewportWithCount-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewportWithCount-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewportWithCount-viewportCount-arraylength",
          "text": "<code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetScissorWithCount": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetScissorWithCount-None-08971",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <a href=\"#features-extendedDynamicState\"><code>extendedDynamicState</code></a>\nfeature is enabled</p>\n</li>\n<li>\n<p>the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n<li>\n<p>the value of <a href=\"#VkApplicationInfo\">VkApplicationInfo</a>::<code>apiVersion</code> used to create\nthe <a href=\"#VkInstance\">VkInstance</a> parent of <code>commandBuffer</code> is greater than or\nequal to Version 1.3</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetScissorWithCount-scissorCount-03397",
          "text": "<code>scissorCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>, inclusive",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetScissorWithCount-scissorCount-03398",
          "text": "If the <a href=\"#features-multiViewport\"><code>multiViewport</code></a> feature is not enabled, <code>scissorCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetScissorWithCount-x-03399",
          "text": "The <code>x</code> and <code>y</code> members of <code>offset</code> member of any element of <code>pScissors</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetScissorWithCount-offset-03400",
          "text": "Evaluation of <span class=\"eq\">(<code>offset.x</code> +  <code>extent.width</code>)</span> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow for any element of <code>pScissors</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetScissorWithCount-offset-03401",
          "text": "Evaluation of <span class=\"eq\">(<code>offset.y</code> +  <code>extent.height</code>)</span> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow for any element of <code>pScissors</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetScissorWithCount-commandBuffer-04820",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> not have <a href=\"#VkCommandBufferInheritanceViewportScissorInfoNV\">VkCommandBufferInheritanceViewportScissorInfoNV</a>::<code>viewportScissor2D</code> enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetScissorWithCount-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetScissorWithCount-pScissors-parameter",
          "text": "<code>pScissors</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>scissorCount</code> <a href=\"#VkRect2D\">VkRect2D</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetScissorWithCount-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetScissorWithCount-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetScissorWithCount-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetScissorWithCount-scissorCount-arraylength",
          "text": "<code>scissorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetViewport": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetViewport-firstViewport-01223",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewport-firstViewport-01224",
          "text": "If the <a href=\"#features-multiViewport\"><code>multiViewport</code></a> feature is not enabled, <code>firstViewport</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewport-viewportCount-01225",
          "text": "If the <a href=\"#features-multiViewport\"><code>multiViewport</code></a> feature is not enabled, <code>viewportCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewport-commandBuffer-04821",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> not have <a href=\"#VkCommandBufferInheritanceViewportScissorInfoNV\">VkCommandBufferInheritanceViewportScissorInfoNV</a>::<code>viewportScissor2D</code> enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewport-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewport-pViewports-parameter",
          "text": "<code>pViewports</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> valid <a href=\"#VkViewport\">VkViewport</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewport-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewport-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewport-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewport-viewportCount-arraylength",
          "text": "<code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkViewport": {
      "core": [
        {
          "vuid": "VUID-VkViewport-width-01770",
          "text": "<code>width</code> <strong class=\"purple\">must</strong> be greater than <code>0.0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkViewport-width-01771",
          "text": "<code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxViewportDimensions</code>[0]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkViewport-apiVersion-07917",
          "text": "If the <a href=\"#VK_KHR_maintenance1\">VK_KHR_maintenance1</a> extension is not enabled, the <a href=\"#VK_AMD_negative_viewport_height\">VK_AMD_negative_viewport_height</a> extension is not enabled, and <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan 1.1, <code>height</code> <strong class=\"purple\">must</strong> be greater than <code>0.0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkViewport-height-01773",
          "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]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkViewport-x-01774",
          "text": "<code>x</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>viewportBoundsRange</code>[0]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkViewport-x-01232",
          "text": "<span class=\"eq\">(<code>x</code> +  <code>width</code>)</span> <strong class=\"purple\">must</strong> be less than or equal to <code>viewportBoundsRange</code>[1]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkViewport-y-01775",
          "text": "<code>y</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>viewportBoundsRange</code>[0]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkViewport-y-01776",
          "text": "<code>y</code> <strong class=\"purple\">must</strong> be less than or equal to <code>viewportBoundsRange</code>[1]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkViewport-y-01777",
          "text": "<span class=\"eq\">(<code>y</code> +  <code>height</code>)</span> <strong class=\"purple\">must</strong> be greater than or equal to <code>viewportBoundsRange</code>[0]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkViewport-y-01233",
          "text": "<span class=\"eq\">(<code>y</code> +  <code>height</code>)</span> <strong class=\"purple\">must</strong> be less than or equal to <code>viewportBoundsRange</code>[1]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkViewport-minDepth-01234",
          "text": "If the <code><a href=\"#VK_EXT_depth_range_unrestricted\">VK_EXT_depth_range_unrestricted</a></code> extension is not enabled, <code>minDepth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkViewport-maxDepth-01235",
          "text": "If the <code><a href=\"#VK_EXT_depth_range_unrestricted\">VK_EXT_depth_range_unrestricted</a></code> extension is not enabled, <code>maxDepth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineRasterizationStateCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-depthClampEnable-00782",
          "text": "If the <a href=\"#features-depthClamp\"><code>depthClamp</code></a> feature is not enabled, <code>depthClampEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01507",
          "text": "If the <a href=\"#features-fillModeNonSolid\"><code>fillModeNonSolid</code></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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01414",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-pointPolygons-04458",
          "text": "If the <code><a href=\"#VK_KHR_portability_subset\">VK_KHR_portability_subset</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>pointPolygons</code> is <code>VK_FALSE</code>, and <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, <code>polygonMode</code> <strong class=\"purple\">must</strong> not be <code>VK_POLYGON_MODE_POINT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-pNext-pNext",
          "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=\"#VkDepthBiasRepresentationInfoEXT\">VkDepthBiasRepresentationInfoEXT</a>, <a href=\"#VkPipelineRasterizationConservativeStateCreateInfoEXT\">VkPipelineRasterizationConservativeStateCreateInfoEXT</a>, <a href=\"#VkPipelineRasterizationDepthClipStateCreateInfoEXT\">VkPipelineRasterizationDepthClipStateCreateInfoEXT</a>, <a href=\"#VkPipelineRasterizationLineStateCreateInfoKHR\">VkPipelineRasterizationLineStateCreateInfoKHR</a>, <a href=\"#VkPipelineRasterizationProvokingVertexStateCreateInfoEXT\">VkPipelineRasterizationProvokingVertexStateCreateInfoEXT</a>, <a href=\"#VkPipelineRasterizationStateRasterizationOrderAMD\">VkPipelineRasterizationStateRasterizationOrderAMD</a>, or <a href=\"#VkPipelineRasterizationStateStreamCreateInfoEXT\">VkPipelineRasterizationStateStreamCreateInfoEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-parameter",
          "text": "<code>polygonMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPolygonMode\">VkPolygonMode</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-cullMode-parameter",
          "text": "<code>cullMode</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCullModeFlagBits\">VkCullModeFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-frontFace-parameter",
          "text": "<code>frontFace</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFrontFace\">VkFrontFace</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineRasterizationDepthClipStateCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkPipelineRasterizationDepthClipStateCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRasterizationDepthClipStateCreateInfoEXT-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineMultisampleStateCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-sampleShadingEnable-00784",
          "text": "If the <a href=\"#features-sampleRateShading\"><code>sampleRateShading</code></a> feature is not enabled, <code>sampleShadingEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-alphaToOneEnable-00785",
          "text": "If the <a href=\"#features-alphaToOne\"><code>alphaToOne</code></a> feature is not enabled, <code>alphaToOneEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-minSampleShading-00786",
          "text": "<code>minSampleShading</code> <strong class=\"purple\">must</strong> be in the range <span class=\"eq\">[0,1]</span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-rasterizationSamples-01415",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-pNext-pNext",
          "text": "Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineCoverageModulationStateCreateInfoNV\">VkPipelineCoverageModulationStateCreateInfoNV</a>, <a href=\"#VkPipelineCoverageReductionStateCreateInfoNV\">VkPipelineCoverageReductionStateCreateInfoNV</a>, <a href=\"#VkPipelineCoverageToColorStateCreateInfoNV\">VkPipelineCoverageToColorStateCreateInfoNV</a>, or <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-rasterizationSamples-parameter",
          "text": "<code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-pSampleMask-parameter",
          "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\\) <a href=\"#VkSampleMask\">VkSampleMask</a> values",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetRasterizerDiscardEnable": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetRasterizerDiscardEnable-None-08970",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <a href=\"#features-extendedDynamicState2\"><code>extendedDynamicState2</code></a>\nfeature is enabled</p>\n</li>\n<li>\n<p>the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n<li>\n<p>the value of <a href=\"#VkApplicationInfo\">VkApplicationInfo</a>::<code>apiVersion</code> used to create\nthe <a href=\"#VkInstance\">VkInstance</a> parent of <code>commandBuffer</code> is greater than or\nequal to Version 1.3</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRasterizerDiscardEnable-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRasterizerDiscardEnable-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRasterizerDiscardEnable-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRasterizerDiscardEnable-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineRasterizationStateStreamCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-geometryStreams-02324",
          "text": "<code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>geometryStreams</code> <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-rasterizationStream-02325",
          "text": "<code>rasterizationStream</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkPhysicalDeviceTransformFeedbackPropertiesEXT\">VkPhysicalDeviceTransformFeedbackPropertiesEXT</a>::<code>maxTransformFeedbackStreams</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-rasterizationStream-02326",
          "text": "<code>rasterizationStream</code> <strong class=\"purple\">must</strong> be zero if <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>transformFeedbackRasterizationStreamSelect</code> is <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetRasterizationStreamEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetRasterizationStreamEXT-None-09423",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>The <a href=\"#features-extendedDynamicState3RasterizationStream\"><code>extendedDynamicState3RasterizationStream</code></a> feature is\nenabled</p>\n</li>\n<li>\n<p>The <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRasterizationStreamEXT-transformFeedback-07411",
          "text": "The <a href=\"#features-transformFeedback\"><code>transformFeedback</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRasterizationStreamEXT-rasterizationStream-07412",
          "text": "<code>rasterizationStream</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkPhysicalDeviceTransformFeedbackPropertiesEXT\">VkPhysicalDeviceTransformFeedbackPropertiesEXT</a>::<code>maxTransformFeedbackStreams</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRasterizationStreamEXT-rasterizationStream-07413",
          "text": "<code>rasterizationStream</code> <strong class=\"purple\">must</strong> be zero if <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>transformFeedbackRasterizationStreamSelect</code> is <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRasterizationStreamEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRasterizationStreamEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRasterizationStreamEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRasterizationStreamEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineRasterizationStateRasterizationOrderAMD": {
      "core": [
        {
          "vuid": "VUID-VkPipelineRasterizationStateRasterizationOrderAMD-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRasterizationStateRasterizationOrderAMD-rasterizationOrder-parameter",
          "text": "<code>rasterizationOrder</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRasterizationOrderAMD\">VkRasterizationOrderAMD</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetRasterizationSamplesEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetRasterizationSamplesEXT-None-09423",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>The <a href=\"#features-extendedDynamicState3RasterizationSamples\"><code>extendedDynamicState3RasterizationSamples</code></a> feature is\nenabled</p>\n</li>\n<li>\n<p>The <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRasterizationSamplesEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRasterizationSamplesEXT-rasterizationSamples-parameter",
          "text": "<code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRasterizationSamplesEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRasterizationSamplesEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRasterizationSamplesEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineSampleLocationsStateCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkPipelineSampleLocationsStateCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineSampleLocationsStateCreateInfoEXT-sampleLocationsInfo-parameter",
          "text": "<code>sampleLocationsInfo</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleLocationsInfoEXT\">VkSampleLocationsInfoEXT</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkSampleLocationsInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkSampleLocationsInfoEXT-sampleLocationsPerPixel-01526",
          "text": "<code>sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value that is set in <a href=\"#VkPhysicalDeviceSampleLocationsPropertiesEXT\">VkPhysicalDeviceSampleLocationsPropertiesEXT</a>::<code>sampleLocationSampleCounts</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSampleLocationsInfoEXT-sampleLocationsCount-01527",
          "text": "<code>sampleLocationsCount</code> <strong class=\"purple\">must</strong> equal <span class=\"eq\"><code>sampleLocationsPerPixel</code> × <code>sampleLocationGridSize.width</code> × <code>sampleLocationGridSize.height</code></span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSampleLocationsInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSampleLocationsInfoEXT-pSampleLocations-parameter",
          "text": "If <code>sampleLocationsCount</code> is not <code>0</code>, <code>pSampleLocations</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>sampleLocationsCount</code> <a href=\"#VkSampleLocationEXT\">VkSampleLocationEXT</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetSampleLocationsEnableEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetSampleLocationsEnableEXT-None-09423",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>The <a href=\"#features-extendedDynamicState3SampleLocationsEnable\"><code>extendedDynamicState3SampleLocationsEnable</code></a> feature is\nenabled</p>\n</li>\n<li>\n<p>The <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetSampleLocationsEnableEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetSampleLocationsEnableEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetSampleLocationsEnableEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetSampleLocationsEnableEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetSampleLocationsEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetSampleLocationsEXT-variableSampleLocations-01530",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetSampleLocationsEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetSampleLocationsEXT-pSampleLocationsInfo-parameter",
          "text": "<code>pSampleLocationsInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSampleLocationsInfoEXT\">VkSampleLocationsInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetSampleLocationsEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetSampleLocationsEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetSampleLocationsEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceFragmentShadingRatesKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceFragmentShadingRatesKHR-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceFragmentShadingRatesKHR-pFragmentShadingRateCount-parameter",
          "text": "<code>pFragmentShadingRateCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceFragmentShadingRatesKHR-pFragmentShadingRates-parameter",
          "text": "If the value referenced by <code>pFragmentShadingRateCount</code> is not <code>0</code>, and <code>pFragmentShadingRates</code> is not <code>NULL</code>, <code>pFragmentShadingRates</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pFragmentShadingRateCount</code> <a href=\"#VkPhysicalDeviceFragmentShadingRateKHR\">VkPhysicalDeviceFragmentShadingRateKHR</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceFragmentShadingRateKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceFragmentShadingRateKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceFragmentShadingRateKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineFragmentShadingRateStateCreateInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkPipelineFragmentShadingRateStateCreateInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetFragmentShadingRateKHR": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-pipelineFragmentShadingRate-04507",
          "text": "If <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a> is not enabled, <code>pFragmentSize-&gt;width</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-pipelineFragmentShadingRate-04508",
          "text": "If <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a> is not enabled, <code>pFragmentSize-&gt;height</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-pipelineFragmentShadingRate-04509",
          "text": "One of <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a>, <a href=\"#features-primitiveFragmentShadingRate\"><code>primitiveFragmentShadingRate</code></a>, or <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-primitiveFragmentShadingRate-04510",
          "text": "If the <a href=\"#features-primitiveFragmentShadingRate\"><code>primitiveFragmentShadingRate</code></a> feature is not enabled, <code>combinerOps</code>[0] <strong class=\"purple\">must</strong> be <code>VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-attachmentFragmentShadingRate-04511",
          "text": "If the <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> feature is not enabled, <code>combinerOps</code>[1] <strong class=\"purple\">must</strong> be <code>VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-fragmentSizeNonTrivialCombinerOps-04512",
          "text": "If the <a href=\"#limits-fragmentShadingRateNonTrivialCombinerOps\"><code>fragmentSizeNonTrivialCombinerOps</code></a> limit is not supported, elements of <code>combinerOps</code> <strong class=\"purple\">must</strong> be either <code>VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR</code> or <code>VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04513",
          "text": "<code>pFragmentSize-&gt;width</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04514",
          "text": "<code>pFragmentSize-&gt;height</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04515",
          "text": "<code>pFragmentSize-&gt;width</code> <strong class=\"purple\">must</strong> be a power-of-two value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04516",
          "text": "<code>pFragmentSize-&gt;height</code> <strong class=\"purple\">must</strong> be a power-of-two value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04517",
          "text": "<code>pFragmentSize-&gt;width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04518",
          "text": "<code>pFragmentSize-&gt;height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-parameter",
          "text": "<code>pFragmentSize</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkExtent2D\">VkExtent2D</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-combinerOps-parameter",
          "text": "Each element of <code>combinerOps</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFragmentShadingRateCombinerOpKHR\">VkFragmentShadingRateCombinerOpKHR</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineFragmentShadingRateEnumStateCreateInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkPipelineFragmentShadingRateEnumStateCreateInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetFragmentShadingRateEnumNV": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetFragmentShadingRateEnumNV-pipelineFragmentShadingRate-04576",
          "text": "If <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a> is not enabled, <code>shadingRate</code> <strong class=\"purple\">must</strong> be <code>VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetFragmentShadingRateEnumNV-supersampleFragmentShadingRates-04577",
          "text": "If <a href=\"#features-supersampleFragmentShadingRates\"><code>supersampleFragmentShadingRates</code></a> is not enabled, <code>shadingRate</code> <strong class=\"purple\">must</strong> not be <code>VK_FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV</code>, <code>VK_FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV</code>, <code>VK_FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV</code>, or <code>VK_FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetFragmentShadingRateEnumNV-noInvocationFragmentShadingRates-04578",
          "text": "If <a href=\"#features-noInvocationFragmentShadingRates\"><code>noInvocationFragmentShadingRates</code></a> is not enabled, <code>shadingRate</code> <strong class=\"purple\">must</strong> not be <code>VK_FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetFragmentShadingRateEnumNV-fragmentShadingRateEnums-04579",
          "text": "The <a href=\"#features-fragmentShadingRateEnums\"><code>fragmentShadingRateEnums</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetFragmentShadingRateEnumNV-pipelineFragmentShadingRate-04580",
          "text": "One of the <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a>, <a href=\"#features-primitiveFragmentShadingRate\"><code>primitiveFragmentShadingRate</code></a>, or <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> features <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetFragmentShadingRateEnumNV-primitiveFragmentShadingRate-04581",
          "text": "If the <a href=\"#features-primitiveFragmentShadingRate\"><code>primitiveFragmentShadingRate</code></a> feature is not enabled, <code>combinerOps</code>[0] <strong class=\"purple\">must</strong> be <code>VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetFragmentShadingRateEnumNV-attachmentFragmentShadingRate-04582",
          "text": "If the <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> feature is not enabled, <code>combinerOps</code>[1] <strong class=\"purple\">must</strong> be <code>VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetFragmentShadingRateEnumNV-fragmentSizeNonTrivialCombinerOps-04583",
          "text": "If the <a href=\"#limits-fragmentShadingRateNonTrivialCombinerOps\"><code>fragmentSizeNonTrivialCombinerOps</code></a> limit is not supported, elements of <code>combinerOps</code> <strong class=\"purple\">must</strong> be either <code>VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR</code> or <code>VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetFragmentShadingRateEnumNV-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetFragmentShadingRateEnumNV-shadingRate-parameter",
          "text": "<code>shadingRate</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFragmentShadingRateNV\">VkFragmentShadingRateNV</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetFragmentShadingRateEnumNV-combinerOps-parameter",
          "text": "Each element of <code>combinerOps</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFragmentShadingRateCombinerOpKHR\">VkFragmentShadingRateCombinerOpKHR</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetFragmentShadingRateEnumNV-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetFragmentShadingRateEnumNV-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetFragmentShadingRateEnumNV-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineViewportShadingRateImageStateCreateInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-viewportCount-02054",
          "text": "If the <a href=\"#features-multiViewport\"><code>multiViewport</code></a> feature is not enabled, <code>viewportCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-viewportCount-02055",
          "text": "<code>viewportCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-shadingRateImageEnable-02056",
          "text": "If <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater or equal to the <code>viewportCount</code> member of <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdBindShadingRateImageNV": {
      "core": [
        {
          "vuid": "VUID-vkCmdBindShadingRateImageNV-None-02058",
          "text": "The <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-02059",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-02060",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-02061",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-02062",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindShadingRateImageNV-imageLayout-02063",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindShadingRateImageNV-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-parameter",
          "text": "If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>imageView</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageView\">VkImageView</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindShadingRateImageNV-imageLayout-parameter",
          "text": "<code>imageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindShadingRateImageNV-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindShadingRateImageNV-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindShadingRateImageNV-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindShadingRateImageNV-commonparent",
          "text": "Both of <code>commandBuffer</code>, and <code>imageView</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetShadingRateImageEnableNV": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetShadingRateImageEnableNV-None-09423",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>The <a href=\"#features-extendedDynamicState3ShadingRateImageEnable\"><code>extendedDynamicState3ShadingRateImageEnable</code></a> feature is\nenabled</p>\n</li>\n<li>\n<p>The <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetShadingRateImageEnableNV-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetShadingRateImageEnableNV-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetShadingRateImageEnableNV-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetShadingRateImageEnableNV-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetViewportShadingRatePaletteNV": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-None-02064",
          "text": "The <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-firstViewport-02067",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-firstViewport-02068",
          "text": "If the <a href=\"#features-multiViewport\"><code>multiViewport</code></a> feature is not enabled, <code>firstViewport</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-viewportCount-02069",
          "text": "If the <a href=\"#features-multiViewport\"><code>multiViewport</code></a> feature is not enabled, <code>viewportCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-pShadingRatePalettes-parameter",
          "text": "<code>pShadingRatePalettes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> valid <a href=\"#VkShadingRatePaletteNV\">VkShadingRatePaletteNV</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-viewportCount-arraylength",
          "text": "<code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkShadingRatePaletteNV": {
      "core": [
        {
          "vuid": "VUID-VkShadingRatePaletteNV-shadingRatePaletteEntryCount-02071",
          "text": "<code>shadingRatePaletteEntryCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceShadingRateImagePropertiesNV</code>::<code>shadingRatePaletteSize</code>, inclusive",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShadingRatePaletteNV-pShadingRatePaletteEntries-parameter",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkShadingRatePaletteNV-shadingRatePaletteEntryCount-arraylength",
          "text": "<code>shadingRatePaletteEntryCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineViewportCoarseSampleOrderStateCreateInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-sampleOrderType-02072",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-pCustomSampleOrders-02234",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-sampleOrderType-parameter",
          "text": "<code>sampleOrderType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCoarseSampleOrderTypeNV\">VkCoarseSampleOrderTypeNV</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-pCustomSampleOrders-parameter",
          "text": "If <code>customSampleOrderCount</code> is not <code>0</code>, <code>pCustomSampleOrders</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>customSampleOrderCount</code> valid <a href=\"#VkCoarseSampleOrderCustomNV\">VkCoarseSampleOrderCustomNV</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkCoarseSampleOrderCustomNV": {
      "core": [
        {
          "vuid": "VUID-VkCoarseSampleOrderCustomNV-shadingRate-02073",
          "text": "<code>shadingRate</code> <strong class=\"purple\">must</strong> be a shading rate that generates fragments with more than one pixel",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCoarseSampleOrderCustomNV-sampleCount-02074",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-02075",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-02076",
          "text": "<code>sampleLocationCount</code> <strong class=\"purple\">must</strong> be less than or equal to the value of <code>VkPhysicalDeviceShadingRateImagePropertiesNV</code>::<code>shadingRateMaxCoarseSamples</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCoarseSampleOrderCustomNV-pSampleLocations-02077",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCoarseSampleOrderCustomNV-shadingRate-parameter",
          "text": "<code>shadingRate</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShadingRatePaletteEntryNV\">VkShadingRatePaletteEntryNV</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCoarseSampleOrderCustomNV-pSampleLocations-parameter",
          "text": "<code>pSampleLocations</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>sampleLocationCount</code> <a href=\"#VkCoarseSampleLocationNV\">VkCoarseSampleLocationNV</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-arraylength",
          "text": "<code>sampleLocationCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkCoarseSampleLocationNV": {
      "core": [
        {
          "vuid": "VUID-VkCoarseSampleLocationNV-pixelX-02078",
          "text": "<code>pixelX</code> <strong class=\"purple\">must</strong> be less than the width (in pixels) of the fragment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCoarseSampleLocationNV-pixelY-02079",
          "text": "<code>pixelY</code> <strong class=\"purple\">must</strong> be less than the height (in pixels) of the fragment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCoarseSampleLocationNV-sample-02080",
          "text": "<code>sample</code> <strong class=\"purple\">must</strong> be less than the number of coverage samples in each pixel belonging to the fragment",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetCoarseSampleOrderNV": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-sampleOrderType-02081",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-pCustomSampleOrders-02235",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-sampleOrderType-parameter",
          "text": "<code>sampleOrderType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCoarseSampleOrderTypeNV\">VkCoarseSampleOrderTypeNV</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-pCustomSampleOrders-parameter",
          "text": "If <code>customSampleOrderCount</code> is not <code>0</code>, <code>pCustomSampleOrders</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>customSampleOrderCount</code> valid <a href=\"#VkCoarseSampleOrderCustomNV\">VkCoarseSampleOrderCustomNV</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineRasterizationLineStateCreateInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoKHR-lineRasterizationMode-02768",
          "text": "If <code>lineRasterizationMode</code> is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR</code>, then the <a href=\"#features-rectangularLines\"><code>rectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoKHR-lineRasterizationMode-02769",
          "text": "If <code>lineRasterizationMode</code> is <code>VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR</code>, then the <a href=\"#features-bresenhamLines\"><code>bresenhamLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoKHR-lineRasterizationMode-02770",
          "text": "If <code>lineRasterizationMode</code> is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR</code>, then the <a href=\"#features-smoothLines\"><code>smoothLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoKHR-stippledLineEnable-02771",
          "text": "If <code>stippledLineEnable</code> is <code>VK_TRUE</code> and <code>lineRasterizationMode</code> is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoKHR-stippledLineEnable-02772",
          "text": "If <code>stippledLineEnable</code> is <code>VK_TRUE</code> and <code>lineRasterizationMode</code> is <code>VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR</code>, then the <a href=\"#features-stippledBresenhamLines\"><code>stippledBresenhamLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoKHR-stippledLineEnable-02773",
          "text": "If <code>stippledLineEnable</code> is <code>VK_TRUE</code> and <code>lineRasterizationMode</code> is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR</code>, then the <a href=\"#features-stippledSmoothLines\"><code>stippledSmoothLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoKHR-stippledLineEnable-02774",
          "text": "If <code>stippledLineEnable</code> is <code>VK_TRUE</code> and <code>lineRasterizationMode</code> is <code>VK_LINE_RASTERIZATION_MODE_DEFAULT_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled and <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>strictLines</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoKHR-lineRasterizationMode-parameter",
          "text": "<code>lineRasterizationMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkLineRasterizationModeKHR\">VkLineRasterizationModeKHR</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetLineRasterizationModeEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetLineRasterizationModeEXT-None-09423",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>The <a href=\"#features-extendedDynamicState3LineRasterizationMode\"><code>extendedDynamicState3LineRasterizationMode</code></a> feature is\nenabled</p>\n</li>\n<li>\n<p>The <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetLineRasterizationModeEXT-lineRasterizationMode-07418",
          "text": "If <code>lineRasterizationMode</code> is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR</code>, then the <a href=\"#features-rectangularLines\"><code>rectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetLineRasterizationModeEXT-lineRasterizationMode-07419",
          "text": "If <code>lineRasterizationMode</code> is <code>VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR</code>, then the <a href=\"#features-bresenhamLines\"><code>bresenhamLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetLineRasterizationModeEXT-lineRasterizationMode-07420",
          "text": "If <code>lineRasterizationMode</code> is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR</code>, then the <a href=\"#features-smoothLines\"><code>smoothLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetLineRasterizationModeEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetLineRasterizationModeEXT-lineRasterizationMode-parameter",
          "text": "<code>lineRasterizationMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkLineRasterizationModeEXT\">VkLineRasterizationModeEXT</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetLineRasterizationModeEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetLineRasterizationModeEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetLineRasterizationModeEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetLineStippleEnableEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetLineStippleEnableEXT-None-09423",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>The <a href=\"#features-extendedDynamicState3LineStippleEnable\"><code>extendedDynamicState3LineStippleEnable</code></a> feature is\nenabled</p>\n</li>\n<li>\n<p>The <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetLineStippleEnableEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetLineStippleEnableEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetLineStippleEnableEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetLineStippleEnableEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetLineWidth": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetLineWidth-lineWidth-00788",
          "text": "If the <a href=\"#features-wideLines\"><code>wideLines</code></a> feature is not enabled, <code>lineWidth</code> <strong class=\"purple\">must</strong> be <code>1.0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetLineWidth-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetLineWidth-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetLineWidth-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetLineWidth-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetLineStippleKHR": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetLineStippleKHR-lineStippleFactor-02776",
          "text": "<code>lineStippleFactor</code> <strong class=\"purple\">must</strong> be in the range <span class=\"eq\">[1,256]</span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetLineStippleKHR-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetLineStippleKHR-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetLineStippleKHR-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetLineStippleKHR-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetFrontFace": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetFrontFace-None-08971",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <a href=\"#features-extendedDynamicState\"><code>extendedDynamicState</code></a>\nfeature is enabled</p>\n</li>\n<li>\n<p>the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n<li>\n<p>the value of <a href=\"#VkApplicationInfo\">VkApplicationInfo</a>::<code>apiVersion</code> used to create\nthe <a href=\"#VkInstance\">VkInstance</a> parent of <code>commandBuffer</code> is greater than or\nequal to Version 1.3</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetFrontFace-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetFrontFace-frontFace-parameter",
          "text": "<code>frontFace</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFrontFace\">VkFrontFace</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetFrontFace-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetFrontFace-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetFrontFace-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetCullMode": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetCullMode-None-08971",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <a href=\"#features-extendedDynamicState\"><code>extendedDynamicState</code></a>\nfeature is enabled</p>\n</li>\n<li>\n<p>the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n<li>\n<p>the value of <a href=\"#VkApplicationInfo\">VkApplicationInfo</a>::<code>apiVersion</code> used to create\nthe <a href=\"#VkInstance\">VkInstance</a> parent of <code>commandBuffer</code> is greater than or\nequal to Version 1.3</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCullMode-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCullMode-cullMode-parameter",
          "text": "<code>cullMode</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCullModeFlagBits\">VkCullModeFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCullMode-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCullMode-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCullMode-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetPolygonModeEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetPolygonModeEXT-None-09423",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>The <a href=\"#features-extendedDynamicState3PolygonMode\"><code>extendedDynamicState3PolygonMode</code></a> feature is\nenabled</p>\n</li>\n<li>\n<p>The <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetPolygonModeEXT-fillModeNonSolid-07424",
          "text": "If the <a href=\"#features-fillModeNonSolid\"><code>fillModeNonSolid</code></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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetPolygonModeEXT-polygonMode-07425",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetPolygonModeEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetPolygonModeEXT-polygonMode-parameter",
          "text": "<code>polygonMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPolygonMode\">VkPolygonMode</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetPolygonModeEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetPolygonModeEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetPolygonModeEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetDepthBiasEnable": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetDepthBiasEnable-None-08970",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <a href=\"#features-extendedDynamicState2\"><code>extendedDynamicState2</code></a>\nfeature is enabled</p>\n</li>\n<li>\n<p>the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n<li>\n<p>the value of <a href=\"#VkApplicationInfo\">VkApplicationInfo</a>::<code>apiVersion</code> used to create\nthe <a href=\"#VkInstance\">VkInstance</a> parent of <code>commandBuffer</code> is greater than or\nequal to Version 1.3</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthBiasEnable-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthBiasEnable-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthBiasEnable-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthBiasEnable-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetDepthBias": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetDepthBias-depthBiasClamp-00790",
          "text": "If the <a href=\"#features-depthBiasClamp\"><code>depthBiasClamp</code></a> feature is not enabled, <code>depthBiasClamp</code> <strong class=\"purple\">must</strong> be <code>0.0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthBias-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthBias-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthBias-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthBias-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkDepthBiasRepresentationInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkDepthBiasRepresentationInfoEXT-leastRepresentableValueForceUnormRepresentation-08947",
          "text": "If the <a href=\"#features-leastRepresentableValueForceUnormRepresentation\"><code>leastRepresentableValueForceUnormRepresentation</code></a> feature is not enabled, <code>depthBiasRepresentation</code> <strong class=\"purple\">must</strong> not be <code>VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORCE_UNORM_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDepthBiasRepresentationInfoEXT-floatRepresentation-08948",
          "text": "If the <a href=\"#features-floatRepresentation\"><code>floatRepresentation</code></a> feature is not enabled, <code>depthBiasRepresentation</code> <strong class=\"purple\">must</strong> not be <code>VK_DEPTH_BIAS_REPRESENTATION_FLOAT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDepthBiasRepresentationInfoEXT-depthBiasExact-08949",
          "text": "If the <a href=\"#features-depthBiasExact\"><code>depthBiasExact</code></a> feature is not enabled, <code>depthBiasExact</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDepthBiasRepresentationInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDepthBiasRepresentationInfoEXT-depthBiasRepresentation-parameter",
          "text": "<code>depthBiasRepresentation</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDepthBiasRepresentationEXT\">VkDepthBiasRepresentationEXT</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkDepthBiasInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkDepthBiasInfoEXT-depthBiasClamp-08950",
          "text": "If the <a href=\"#features-depthBiasClamp\"><code>depthBiasClamp</code></a> feature is not enabled, <code>depthBiasClamp</code> <strong class=\"purple\">must</strong> be <code>0.0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDepthBiasInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDepthBiasInfoEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDepthBiasRepresentationInfoEXT\">VkDepthBiasRepresentationInfoEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDepthBiasInfoEXT-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetDepthBias2EXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetDepthBias2EXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthBias2EXT-pDepthBiasInfo-parameter",
          "text": "<code>pDepthBiasInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDepthBiasInfoEXT\">VkDepthBiasInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthBias2EXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthBias2EXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthBias2EXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineRasterizationConservativeStateCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-extraPrimitiveOverestimationSize-01769",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-conservativeRasterizationMode-parameter",
          "text": "<code>conservativeRasterizationMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkConservativeRasterizationModeEXT\">VkConservativeRasterizationModeEXT</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetConservativeRasterizationModeEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetConservativeRasterizationModeEXT-None-09423",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>The <a href=\"#features-extendedDynamicState3ConservativeRasterizationMode\"><code>extendedDynamicState3ConservativeRasterizationMode</code></a> feature is\nenabled</p>\n</li>\n<li>\n<p>The <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetConservativeRasterizationModeEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetConservativeRasterizationModeEXT-conservativeRasterizationMode-parameter",
          "text": "<code>conservativeRasterizationMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkConservativeRasterizationModeEXT\">VkConservativeRasterizationModeEXT</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetConservativeRasterizationModeEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetConservativeRasterizationModeEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetConservativeRasterizationModeEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetExtraPrimitiveOverestimationSizeEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetExtraPrimitiveOverestimationSizeEXT-None-09423",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>The <a href=\"#features-extendedDynamicState3ExtraPrimitiveOverestimationSize\"><code>extendedDynamicState3ExtraPrimitiveOverestimationSize</code></a> feature is\nenabled</p>\n</li>\n<li>\n<p>The <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetExtraPrimitiveOverestimationSizeEXT-extraPrimitiveOverestimationSize-07428",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetExtraPrimitiveOverestimationSizeEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetExtraPrimitiveOverestimationSizeEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetExtraPrimitiveOverestimationSizeEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetExtraPrimitiveOverestimationSizeEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineDiscardRectangleStateCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-discardRectangleCount-00582",
          "text": "<code>discardRectangleCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDiscardRectanglePropertiesEXT</code>::<code>maxDiscardRectangles</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-discardRectangleMode-parameter",
          "text": "<code>discardRectangleMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDiscardRectangleModeEXT\">VkDiscardRectangleModeEXT</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetDiscardRectangleEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetDiscardRectangleEXT-firstDiscardRectangle-00585",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDiscardRectangleEXT-x-00587",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDiscardRectangleEXT-offset-00588",
          "text": "Evaluation of <span class=\"eq\">(<code>offset.x</code> +  <code>extent.width</code>)</span> in each <a href=\"#VkRect2D\">VkRect2D</a> element of <code>pDiscardRectangles</code> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDiscardRectangleEXT-offset-00589",
          "text": "Evaluation of <span class=\"eq\">(<code>offset.y</code> +  <code>extent.height</code>)</span> in each <a href=\"#VkRect2D\">VkRect2D</a> element of <code>pDiscardRectangles</code> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDiscardRectangleEXT-viewportScissor2D-04788",
          "text": "If this command is recorded in a secondary command buffer with <a href=\"#VkCommandBufferInheritanceViewportScissorInfoNV\">VkCommandBufferInheritanceViewportScissorInfoNV</a>::<code>viewportScissor2D</code> enabled, then this function <strong class=\"purple\">must</strong> not be called",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDiscardRectangleEXT-pDiscardRectangles-parameter",
          "text": "<code>pDiscardRectangles</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>discardRectangleCount</code> <a href=\"#VkRect2D\">VkRect2D</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDiscardRectangleEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDiscardRectangleEXT-discardRectangleCount-arraylength",
          "text": "<code>discardRectangleCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetDiscardRectangleEnableEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetDiscardRectangleEnableEXT-specVersion-07851",
          "text": "The <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension <strong class=\"purple\">must</strong> be enabled, and the implementation <strong class=\"purple\">must</strong> support at least <code>specVersion</code> <code>2</code> of this extension",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDiscardRectangleEnableEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDiscardRectangleEnableEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDiscardRectangleEnableEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDiscardRectangleEnableEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetDiscardRectangleModeEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetDiscardRectangleModeEXT-specVersion-07852",
          "text": "The <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension <strong class=\"purple\">must</strong> be enabled, and the implementation <strong class=\"purple\">must</strong> support at least <code>specVersion</code> <code>2</code> of this extension",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDiscardRectangleModeEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDiscardRectangleModeEXT-discardRectangleMode-parameter",
          "text": "<code>discardRectangleMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDiscardRectangleModeEXT\">VkDiscardRectangleModeEXT</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDiscardRectangleModeEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDiscardRectangleModeEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDiscardRectangleModeEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetScissor": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetScissor-firstScissor-00592",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetScissor-firstScissor-00593",
          "text": "If the <a href=\"#features-multiViewport\"><code>multiViewport</code></a> feature is not enabled, <code>firstScissor</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetScissor-scissorCount-00594",
          "text": "If the <a href=\"#features-multiViewport\"><code>multiViewport</code></a> feature is not enabled, <code>scissorCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetScissor-x-00595",
          "text": "The <code>x</code> and <code>y</code> members of <code>offset</code> member of any element of <code>pScissors</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetScissor-offset-00596",
          "text": "Evaluation of <span class=\"eq\">(<code>offset.x</code> +  <code>extent.width</code>)</span> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow for any element of <code>pScissors</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetScissor-offset-00597",
          "text": "Evaluation of <span class=\"eq\">(<code>offset.y</code> +  <code>extent.height</code>)</span> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow for any element of <code>pScissors</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetScissor-viewportScissor2D-04789",
          "text": "If this command is recorded in a secondary command buffer with <a href=\"#VkCommandBufferInheritanceViewportScissorInfoNV\">VkCommandBufferInheritanceViewportScissorInfoNV</a>::<code>viewportScissor2D</code> enabled, then this function <strong class=\"purple\">must</strong> not be called",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetScissor-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetScissor-pScissors-parameter",
          "text": "<code>pScissors</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>scissorCount</code> <a href=\"#VkRect2D\">VkRect2D</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetScissor-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetScissor-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetScissor-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetScissor-scissorCount-arraylength",
          "text": "<code>scissorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineViewportExclusiveScissorStateCreateInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02027",
          "text": "If the <a href=\"#features-multiViewport\"><code>multiViewport</code></a> feature is not enabled, <code>exclusiveScissorCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02028",
          "text": "<code>exclusiveScissorCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02029",
          "text": "<code>exclusiveScissorCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or greater than or equal to the <code>viewportCount</code> member of <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetExclusiveScissorNV": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetExclusiveScissorNV-None-02031",
          "text": "The <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetExclusiveScissorNV-firstExclusiveScissor-02034",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetExclusiveScissorNV-firstExclusiveScissor-02035",
          "text": "If the <a href=\"#features-multiViewport\"><code>multiViewport</code></a> feature is not enabled, <code>firstExclusiveScissor</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetExclusiveScissorNV-exclusiveScissorCount-02036",
          "text": "If the <a href=\"#features-multiViewport\"><code>multiViewport</code></a> feature is not enabled, <code>exclusiveScissorCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetExclusiveScissorNV-x-02037",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetExclusiveScissorNV-offset-02038",
          "text": "Evaluation of <span class=\"eq\">(<code>offset.x</code> +  <code>extent.width</code>)</span> for each member of <code>pExclusiveScissors</code> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetExclusiveScissorNV-offset-02039",
          "text": "Evaluation of <span class=\"eq\">(<code>offset.y</code> +  <code>extent.height</code>)</span> for each member of <code>pExclusiveScissors</code> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetExclusiveScissorNV-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetExclusiveScissorNV-pExclusiveScissors-parameter",
          "text": "<code>pExclusiveScissors</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>exclusiveScissorCount</code> <a href=\"#VkRect2D\">VkRect2D</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetExclusiveScissorNV-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetExclusiveScissorNV-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetExclusiveScissorNV-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetExclusiveScissorNV-exclusiveScissorCount-arraylength",
          "text": "<code>exclusiveScissorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetExclusiveScissorEnableNV": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetExclusiveScissorEnableNV-exclusiveScissor-07853",
          "text": "The <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature <strong class=\"purple\">must</strong> be enabled, and the implementation <strong class=\"purple\">must</strong> support at least <code>specVersion</code> <code>2</code> of the <code><a href=\"#VK_NV_scissor_exclusive\">VK_NV_scissor_exclusive</a></code> extension",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetExclusiveScissorEnableNV-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetExclusiveScissorEnableNV-pExclusiveScissorEnables-parameter",
          "text": "<code>pExclusiveScissorEnables</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>exclusiveScissorCount</code> <a href=\"#VkBool32\">VkBool32</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetExclusiveScissorEnableNV-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetExclusiveScissorEnableNV-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetExclusiveScissorEnableNV-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetExclusiveScissorEnableNV-exclusiveScissorCount-arraylength",
          "text": "<code>exclusiveScissorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetSampleMaskEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetSampleMaskEXT-None-09423",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>The <a href=\"#features-extendedDynamicState3SampleMask\"><code>extendedDynamicState3SampleMask</code></a> feature is\nenabled</p>\n</li>\n<li>\n<p>The <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetSampleMaskEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetSampleMaskEXT-samples-parameter",
          "text": "<code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetSampleMaskEXT-pSampleMask-parameter",
          "text": "<code>pSampleMask</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of \\(\\lceil{\\mathit{samples} \\over 32}\\rceil\\) <a href=\"#VkSampleMask\">VkSampleMask</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetSampleMaskEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetSampleMaskEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetSampleMaskEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetAlphaToCoverageEnableEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetAlphaToCoverageEnableEXT-None-09423",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>The <a href=\"#features-extendedDynamicState3AlphaToCoverageEnable\"><code>extendedDynamicState3AlphaToCoverageEnable</code></a> feature is\nenabled</p>\n</li>\n<li>\n<p>The <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetAlphaToCoverageEnableEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetAlphaToCoverageEnableEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetAlphaToCoverageEnableEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetAlphaToCoverageEnableEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetAlphaToOneEnableEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetAlphaToOneEnableEXT-None-09423",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>The <a href=\"#features-extendedDynamicState3AlphaToOneEnable\"><code>extendedDynamicState3AlphaToOneEnable</code></a> feature is\nenabled</p>\n</li>\n<li>\n<p>The <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetAlphaToOneEnableEXT-alphaToOne-07607",
          "text": "If the <a href=\"#features-alphaToOne\"><code>alphaToOne</code></a> feature is not enabled, <code>alphaToOneEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetAlphaToOneEnableEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetAlphaToOneEnableEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetAlphaToOneEnableEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetAlphaToOneEnableEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineDepthStencilStateCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-depthBoundsTestEnable-00598",
          "text": "If the <a href=\"#features-depthBounds\"><code>depthBounds</code></a> feature is not enabled, <code>depthBoundsTestEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-separateStencilMaskRef-04453",
          "text": "If the <code><a href=\"#VK_KHR_portability_subset\">VK_KHR_portability_subset</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>separateStencilMaskRef</code> is <code>VK_FALSE</code>, and the value of <a href=\"#VkPipelineDepthStencilStateCreateInfo\">VkPipelineDepthStencilStateCreateInfo</a>::<code>stencilTestEnable</code> is <code>VK_TRUE</code>, and the value of <a href=\"#VkPipelineRasterizationStateCreateInfo\">VkPipelineRasterizationStateCreateInfo</a>::<code>cullMode</code> is <code>VK_CULL_MODE_NONE</code>, the value of <code>reference</code> in each of the <a href=\"#VkStencilOpState\">VkStencilOpState</a> structs in <code>front</code> and <code>back</code> <strong class=\"purple\">must</strong> be the same",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-rasterizationOrderDepthAttachmentAccess-06463",
          "text": "If the <a href=\"#features-rasterizationOrderDepthAttachmentAccess\"><code>rasterizationOrderDepthAttachmentAccess</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-rasterizationOrderStencilAttachmentAccess-06464",
          "text": "If the <a href=\"#features-rasterizationOrderStencilAttachmentAccess\"><code>rasterizationOrderStencilAttachmentAccess</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineDepthStencilStateCreateFlagBits\">VkPipelineDepthStencilStateCreateFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-depthCompareOp-parameter",
          "text": "<code>depthCompareOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCompareOp\">VkCompareOp</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-front-parameter",
          "text": "<code>front</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOpState\">VkStencilOpState</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-back-parameter",
          "text": "<code>back</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOpState\">VkStencilOpState</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetDepthBoundsTestEnable": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetDepthBoundsTestEnable-None-08971",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <a href=\"#features-extendedDynamicState\"><code>extendedDynamicState</code></a>\nfeature is enabled</p>\n</li>\n<li>\n<p>the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n<li>\n<p>the value of <a href=\"#VkApplicationInfo\">VkApplicationInfo</a>::<code>apiVersion</code> used to create\nthe <a href=\"#VkInstance\">VkInstance</a> parent of <code>commandBuffer</code> is greater than or\nequal to Version 1.3</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthBoundsTestEnable-depthBounds-10010",
          "text": "If the <a href=\"#features-depthBounds\"><code>depthBounds</code></a> feature is not enabled, <code>depthBoundsTestEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthBoundsTestEnable-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthBoundsTestEnable-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthBoundsTestEnable-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthBoundsTestEnable-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetDepthBounds": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetDepthBounds-minDepthBounds-00600",
          "text": "If the <code><a href=\"#VK_EXT_depth_range_unrestricted\">VK_EXT_depth_range_unrestricted</a></code> extension is not enabled <code>minDepthBounds</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthBounds-maxDepthBounds-00601",
          "text": "If the <code><a href=\"#VK_EXT_depth_range_unrestricted\">VK_EXT_depth_range_unrestricted</a></code> extension is not enabled <code>maxDepthBounds</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthBounds-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthBounds-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthBounds-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthBounds-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetStencilTestEnable": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetStencilTestEnable-None-08971",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <a href=\"#features-extendedDynamicState\"><code>extendedDynamicState</code></a>\nfeature is enabled</p>\n</li>\n<li>\n<p>the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n<li>\n<p>the value of <a href=\"#VkApplicationInfo\">VkApplicationInfo</a>::<code>apiVersion</code> used to create\nthe <a href=\"#VkInstance\">VkInstance</a> parent of <code>commandBuffer</code> is greater than or\nequal to Version 1.3</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetStencilTestEnable-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetStencilTestEnable-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetStencilTestEnable-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetStencilTestEnable-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetStencilOp": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetStencilOp-None-08971",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <a href=\"#features-extendedDynamicState\"><code>extendedDynamicState</code></a>\nfeature is enabled</p>\n</li>\n<li>\n<p>the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n<li>\n<p>the value of <a href=\"#VkApplicationInfo\">VkApplicationInfo</a>::<code>apiVersion</code> used to create\nthe <a href=\"#VkInstance\">VkInstance</a> parent of <code>commandBuffer</code> is greater than or\nequal to Version 1.3</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetStencilOp-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetStencilOp-faceMask-parameter",
          "text": "<code>faceMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkStencilFaceFlagBits\">VkStencilFaceFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetStencilOp-faceMask-requiredbitmask",
          "text": "<code>faceMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetStencilOp-failOp-parameter",
          "text": "<code>failOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOp\">VkStencilOp</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetStencilOp-passOp-parameter",
          "text": "<code>passOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOp\">VkStencilOp</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetStencilOp-depthFailOp-parameter",
          "text": "<code>depthFailOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOp\">VkStencilOp</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetStencilOp-compareOp-parameter",
          "text": "<code>compareOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCompareOp\">VkCompareOp</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetStencilOp-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetStencilOp-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetStencilOp-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkStencilOpState": {
      "core": [
        {
          "vuid": "VUID-VkStencilOpState-failOp-parameter",
          "text": "<code>failOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOp\">VkStencilOp</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkStencilOpState-passOp-parameter",
          "text": "<code>passOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOp\">VkStencilOp</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkStencilOpState-depthFailOp-parameter",
          "text": "<code>depthFailOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOp\">VkStencilOp</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkStencilOpState-compareOp-parameter",
          "text": "<code>compareOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCompareOp\">VkCompareOp</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetStencilCompareMask": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetStencilCompareMask-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetStencilCompareMask-faceMask-parameter",
          "text": "<code>faceMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkStencilFaceFlagBits\">VkStencilFaceFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetStencilCompareMask-faceMask-requiredbitmask",
          "text": "<code>faceMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetStencilCompareMask-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetStencilCompareMask-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetStencilCompareMask-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetStencilWriteMask": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetStencilWriteMask-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetStencilWriteMask-faceMask-parameter",
          "text": "<code>faceMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkStencilFaceFlagBits\">VkStencilFaceFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetStencilWriteMask-faceMask-requiredbitmask",
          "text": "<code>faceMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetStencilWriteMask-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetStencilWriteMask-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetStencilWriteMask-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetStencilReference": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetStencilReference-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetStencilReference-faceMask-parameter",
          "text": "<code>faceMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkStencilFaceFlagBits\">VkStencilFaceFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetStencilReference-faceMask-requiredbitmask",
          "text": "<code>faceMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetStencilReference-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetStencilReference-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetStencilReference-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineViewportDepthClampControlCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkPipelineViewportDepthClampControlCreateInfoEXT-pDepthClampRange-09646",
          "text": "If <code>depthClampMode</code> is set to <code>VK_DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT</code>, and the pipeline is not created with <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT</code>, then <code>pDepthClampRange</code> must be a valid pointer to a valid <code>VkDepthClampRangeEXT</code> structure.",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineViewportDepthClampControlCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineViewportDepthClampControlCreateInfoEXT-depthClampMode-parameter",
          "text": "<code>depthClampMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDepthClampModeEXT\">VkDepthClampModeEXT</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineViewportDepthClampControlCreateInfoEXT-pDepthClampRange-parameter",
          "text": "If <code>pDepthClampRange</code> is not <code>NULL</code>, <code>pDepthClampRange</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDepthClampRangeEXT\">VkDepthClampRangeEXT</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetDepthClampRangeEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetDepthClampRangeEXT-pDepthClampRange-09647",
          "text": "If <code>depthClampMode</code> is set to <code>VK_DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT</code>, then <code>pDepthClampRange</code> must be a valid pointer to a valid <code>VkDepthClampRangeEXT</code> structure.",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthClampRangeEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthClampRangeEXT-depthClampMode-parameter",
          "text": "<code>depthClampMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDepthClampModeEXT\">VkDepthClampModeEXT</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthClampRangeEXT-pDepthClampRange-parameter",
          "text": "If <code>pDepthClampRange</code> is not <code>NULL</code>, <code>pDepthClampRange</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDepthClampRangeEXT\">VkDepthClampRangeEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthClampRangeEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthClampRangeEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthClampRangeEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkDepthClampRangeEXT": {
      "core": [
        {
          "vuid": "VUID-VkDepthClampRangeEXT-pDepthClampRange-00999",
          "text": "<code>minDepthClamp</code> <strong class=\"purple\">must</strong> be less than or equal to <code>maxDepthClamp</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDepthClampRangeEXT-pDepthClampRange-09648",
          "text": "If the <code><a href=\"#VK_EXT_depth_range_unrestricted\">VK_EXT_depth_range_unrestricted</a></code> extension is not enabled, <code>minDepthClamp</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>0.0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDepthClampRangeEXT-pDepthClampRange-09649",
          "text": "If the <code><a href=\"#VK_EXT_depth_range_unrestricted\">VK_EXT_depth_range_unrestricted</a></code> extension is not enabled, <code>maxDepthClamp</code> <strong class=\"purple\">must</strong> be less than or equal to <code>1.0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetDepthTestEnable": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetDepthTestEnable-None-08971",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <a href=\"#features-extendedDynamicState\"><code>extendedDynamicState</code></a>\nfeature is enabled</p>\n</li>\n<li>\n<p>the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n<li>\n<p>the value of <a href=\"#VkApplicationInfo\">VkApplicationInfo</a>::<code>apiVersion</code> used to create\nthe <a href=\"#VkInstance\">VkInstance</a> parent of <code>commandBuffer</code> is greater than or\nequal to Version 1.3</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthTestEnable-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthTestEnable-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthTestEnable-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthTestEnable-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetDepthCompareOp": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetDepthCompareOp-None-08971",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <a href=\"#features-extendedDynamicState\"><code>extendedDynamicState</code></a>\nfeature is enabled</p>\n</li>\n<li>\n<p>the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n<li>\n<p>the value of <a href=\"#VkApplicationInfo\">VkApplicationInfo</a>::<code>apiVersion</code> used to create\nthe <a href=\"#VkInstance\">VkInstance</a> parent of <code>commandBuffer</code> is greater than or\nequal to Version 1.3</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthCompareOp-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthCompareOp-depthCompareOp-parameter",
          "text": "<code>depthCompareOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCompareOp\">VkCompareOp</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthCompareOp-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthCompareOp-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthCompareOp-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetDepthWriteEnable": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetDepthWriteEnable-None-08971",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <a href=\"#features-extendedDynamicState\"><code>extendedDynamicState</code></a>\nfeature is enabled</p>\n</li>\n<li>\n<p>the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n<li>\n<p>the value of <a href=\"#VkApplicationInfo\">VkApplicationInfo</a>::<code>apiVersion</code> used to create\nthe <a href=\"#VkInstance\">VkInstance</a> parent of <code>commandBuffer</code> is greater than or\nequal to Version 1.3</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthWriteEnable-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthWriteEnable-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthWriteEnable-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetDepthWriteEnable-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineRepresentativeFragmentTestStateCreateInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkPipelineRepresentativeFragmentTestStateCreateInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetRepresentativeFragmentTestEnableNV": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetRepresentativeFragmentTestEnableNV-None-09423",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>The <a href=\"#features-extendedDynamicState3RepresentativeFragmentTestEnable\"><code>extendedDynamicState3RepresentativeFragmentTestEnable</code></a> feature is\nenabled</p>\n</li>\n<li>\n<p>The <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRepresentativeFragmentTestEnableNV-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRepresentativeFragmentTestEnableNV-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRepresentativeFragmentTestEnableNV-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetRepresentativeFragmentTestEnableNV-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineCoverageToColorStateCreateInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkPipelineCoverageToColorStateCreateInfoNV-coverageToColorEnable-01404",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineCoverageToColorStateCreateInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineCoverageToColorStateCreateInfoNV-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetCoverageToColorEnableNV": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetCoverageToColorEnableNV-None-09423",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>The <a href=\"#features-extendedDynamicState3CoverageToColorEnable\"><code>extendedDynamicState3CoverageToColorEnable</code></a> feature is\nenabled</p>\n</li>\n<li>\n<p>The <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCoverageToColorEnableNV-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCoverageToColorEnableNV-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCoverageToColorEnableNV-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCoverageToColorEnableNV-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetCoverageToColorLocationNV": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetCoverageToColorLocationNV-None-09423",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>The <a href=\"#features-extendedDynamicState3CoverageToColorLocation\"><code>extendedDynamicState3CoverageToColorLocation</code></a> feature is\nenabled</p>\n</li>\n<li>\n<p>The <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCoverageToColorLocationNV-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCoverageToColorLocationNV-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCoverageToColorLocationNV-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCoverageToColorLocationNV-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineCoverageReductionStateCreateInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkPipelineCoverageReductionStateCreateInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineCoverageReductionStateCreateInfoNV-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineCoverageReductionStateCreateInfoNV-coverageReductionMode-parameter",
          "text": "<code>coverageReductionMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCoverageReductionModeNV\">VkCoverageReductionModeNV</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetCoverageReductionModeNV": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetCoverageReductionModeNV-None-09423",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>The <a href=\"#features-extendedDynamicState3CoverageReductionMode\"><code>extendedDynamicState3CoverageReductionMode</code></a> feature is\nenabled</p>\n</li>\n<li>\n<p>The <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCoverageReductionModeNV-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCoverageReductionModeNV-coverageReductionMode-parameter",
          "text": "<code>coverageReductionMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCoverageReductionModeNV\">VkCoverageReductionModeNV</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCoverageReductionModeNV-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCoverageReductionModeNV-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCoverageReductionModeNV-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV-pCombinationCount-parameter",
          "text": "<code>pCombinationCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV-pCombinations-parameter",
          "text": "If the value referenced by <code>pCombinationCount</code> is not <code>0</code>, and <code>pCombinations</code> is not <code>NULL</code>, <code>pCombinations</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pCombinationCount</code> <a href=\"#VkFramebufferMixedSamplesCombinationNV\">VkFramebufferMixedSamplesCombinationNV</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkFramebufferMixedSamplesCombinationNV": {
      "core": [
        {
          "vuid": "VUID-VkFramebufferMixedSamplesCombinationNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFramebufferMixedSamplesCombinationNV-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineCoverageModulationStateCreateInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-coverageModulationTableEnable-01405",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-coverageModulationMode-parameter",
          "text": "<code>coverageModulationMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCoverageModulationModeNV\">VkCoverageModulationModeNV</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetCoverageModulationModeNV": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetCoverageModulationModeNV-None-09423",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>The <a href=\"#features-extendedDynamicState3CoverageModulationMode\"><code>extendedDynamicState3CoverageModulationMode</code></a> feature is\nenabled</p>\n</li>\n<li>\n<p>The <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCoverageModulationModeNV-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCoverageModulationModeNV-coverageModulationMode-parameter",
          "text": "<code>coverageModulationMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCoverageModulationModeNV\">VkCoverageModulationModeNV</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCoverageModulationModeNV-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCoverageModulationModeNV-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCoverageModulationModeNV-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetCoverageModulationTableEnableNV": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetCoverageModulationTableEnableNV-None-09423",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>The <a href=\"#features-extendedDynamicState3CoverageModulationTableEnable\"><code>extendedDynamicState3CoverageModulationTableEnable</code></a> feature is\nenabled</p>\n</li>\n<li>\n<p>The <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCoverageModulationTableEnableNV-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCoverageModulationTableEnableNV-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCoverageModulationTableEnableNV-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCoverageModulationTableEnableNV-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetCoverageModulationTableNV": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetCoverageModulationTableNV-None-09423",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>The <a href=\"#features-extendedDynamicState3CoverageModulationTable\"><code>extendedDynamicState3CoverageModulationTable</code></a> feature is\nenabled</p>\n</li>\n<li>\n<p>The <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCoverageModulationTableNV-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCoverageModulationTableNV-pCoverageModulationTable-parameter",
          "text": "<code>pCoverageModulationTable</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>coverageModulationTableCount</code> <code>float</code> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCoverageModulationTableNV-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCoverageModulationTableNV-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCoverageModulationTableNV-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCoverageModulationTableNV-coverageModulationTableCount-arraylength",
          "text": "<code>coverageModulationTableCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineColorBlendStateCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-00605",
          "text": "If the <a href=\"#features-independentBlend\"><code>independentBlend</code></a> feature is not enabled, all elements of <code>pAttachments</code> <strong class=\"purple\">must</strong> be identical",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-logicOpEnable-00606",
          "text": "If the <a href=\"#features-logicOp\"><code>logicOp</code></a> feature is not enabled, <code>logicOpEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-logicOpEnable-00607",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-rasterizationOrderColorAttachmentAccess-06465",
          "text": "If the <a href=\"#features-rasterizationOrderColorAttachmentAccess\"><code>rasterizationOrderColorAttachmentAccess</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-07353",
          "text": "If <code>attachmentCount</code> is not <code>0</code> , and any of <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code>, <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code>, <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code>, or <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> are not set, <code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <a href=\"#VkPipelineColorBlendAttachmentState\">VkPipelineColorBlendAttachmentState</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-pNext-pNext",
          "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=\"#VkPipelineColorBlendAdvancedStateCreateInfoEXT\">VkPipelineColorBlendAdvancedStateCreateInfoEXT</a> or <a href=\"#VkPipelineColorWriteCreateInfoEXT\">VkPipelineColorWriteCreateInfoEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineColorBlendStateCreateFlagBits\">VkPipelineColorBlendStateCreateFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-parameter",
          "text": "If <code>attachmentCount</code> is not <code>0</code>, and <code>pAttachments</code> is not <code>NULL</code>, <code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <a href=\"#VkPipelineColorBlendAttachmentState\">VkPipelineColorBlendAttachmentState</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineColorBlendAttachmentState": {
      "core": [
        {
          "vuid": "VUID-VkPipelineColorBlendAttachmentState-srcColorBlendFactor-00608",
          "text": "If the <a href=\"#features-dualSrcBlend\"><code>dualSrcBlend</code></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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineColorBlendAttachmentState-dstColorBlendFactor-00609",
          "text": "If the <a href=\"#features-dualSrcBlend\"><code>dualSrcBlend</code></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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineColorBlendAttachmentState-srcAlphaBlendFactor-00610",
          "text": "If the <a href=\"#features-dualSrcBlend\"><code>dualSrcBlend</code></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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineColorBlendAttachmentState-dstAlphaBlendFactor-00611",
          "text": "If the <a href=\"#features-dualSrcBlend\"><code>dualSrcBlend</code></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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-01406",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineColorBlendAttachmentState-advancedBlendIndependentBlend-01407",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineColorBlendAttachmentState-advancedBlendIndependentBlend-01408",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineColorBlendAttachmentState-advancedBlendAllOperations-01409",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-01410",
          "text": "If <code>colorBlendOp</code> or <code>alphaBlendOp</code> is an <a href=\"#framebuffer-blend-advanced\">advanced blend operation</a>, then <code>colorAttachmentCount</code> of the subpass this pipeline is compiled against <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT\">VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT</a>::<code>advancedBlendMaxColorAttachments</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineColorBlendAttachmentState-constantAlphaColorBlendFactors-04454",
          "text": "If the <code><a href=\"#VK_KHR_portability_subset\">VK_KHR_portability_subset</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>constantAlphaColorBlendFactors</code> is <code>VK_FALSE</code>, <code>srcColorBlendFactor</code> <strong class=\"purple\">must</strong> not be <code>VK_BLEND_FACTOR_CONSTANT_ALPHA</code> or <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineColorBlendAttachmentState-constantAlphaColorBlendFactors-04455",
          "text": "If the <code><a href=\"#VK_KHR_portability_subset\">VK_KHR_portability_subset</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>constantAlphaColorBlendFactors</code> is <code>VK_FALSE</code>, <code>dstColorBlendFactor</code> <strong class=\"purple\">must</strong> not be <code>VK_BLEND_FACTOR_CONSTANT_ALPHA</code> or <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineColorBlendAttachmentState-srcColorBlendFactor-parameter",
          "text": "<code>srcColorBlendFactor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendFactor\">VkBlendFactor</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineColorBlendAttachmentState-dstColorBlendFactor-parameter",
          "text": "<code>dstColorBlendFactor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendFactor\">VkBlendFactor</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-parameter",
          "text": "<code>colorBlendOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendOp\">VkBlendOp</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineColorBlendAttachmentState-srcAlphaBlendFactor-parameter",
          "text": "<code>srcAlphaBlendFactor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendFactor\">VkBlendFactor</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineColorBlendAttachmentState-dstAlphaBlendFactor-parameter",
          "text": "<code>dstAlphaBlendFactor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendFactor\">VkBlendFactor</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineColorBlendAttachmentState-alphaBlendOp-parameter",
          "text": "<code>alphaBlendOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendOp\">VkBlendOp</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineColorBlendAttachmentState-colorWriteMask-parameter",
          "text": "<code>colorWriteMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkColorComponentFlagBits\">VkColorComponentFlagBits</a> values",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetColorBlendEnableEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetColorBlendEnableEXT-None-09423",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>The <a href=\"#features-extendedDynamicState3ColorBlendEnable\"><code>extendedDynamicState3ColorBlendEnable</code></a> feature is\nenabled</p>\n</li>\n<li>\n<p>The <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetColorBlendEnableEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetColorBlendEnableEXT-pColorBlendEnables-parameter",
          "text": "<code>pColorBlendEnables</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> <a href=\"#VkBool32\">VkBool32</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetColorBlendEnableEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetColorBlendEnableEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetColorBlendEnableEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetColorBlendEnableEXT-attachmentCount-arraylength",
          "text": "<code>attachmentCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetColorBlendEquationEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetColorBlendEquationEXT-None-09423",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>The <a href=\"#features-extendedDynamicState3ColorBlendEquation\"><code>extendedDynamicState3ColorBlendEquation</code></a> feature is\nenabled</p>\n</li>\n<li>\n<p>The <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetColorBlendEquationEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetColorBlendEquationEXT-pColorBlendEquations-parameter",
          "text": "<code>pColorBlendEquations</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <a href=\"#VkColorBlendEquationEXT\">VkColorBlendEquationEXT</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetColorBlendEquationEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetColorBlendEquationEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetColorBlendEquationEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetColorBlendEquationEXT-attachmentCount-arraylength",
          "text": "<code>attachmentCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkColorBlendEquationEXT": {
      "core": [
        {
          "vuid": "VUID-VkColorBlendEquationEXT-dualSrcBlend-07357",
          "text": "If the <a href=\"#features-dualSrcBlend\"><code>dualSrcBlend</code></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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkColorBlendEquationEXT-dualSrcBlend-07358",
          "text": "If the <a href=\"#features-dualSrcBlend\"><code>dualSrcBlend</code></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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkColorBlendEquationEXT-dualSrcBlend-07359",
          "text": "If the <a href=\"#features-dualSrcBlend\"><code>dualSrcBlend</code></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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkColorBlendEquationEXT-dualSrcBlend-07360",
          "text": "If the <a href=\"#features-dualSrcBlend\"><code>dualSrcBlend</code></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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkColorBlendEquationEXT-colorBlendOp-07361",
          "text": "<code>colorBlendOp</code> and <code>alphaBlendOp</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_MULTIPLY_EXT</code>, <code>VK_BLEND_OP_SCREEN_EXT</code>, <code>VK_BLEND_OP_OVERLAY_EXT</code>, <code>VK_BLEND_OP_DARKEN_EXT</code>, <code>VK_BLEND_OP_LIGHTEN_EXT</code>, <code>VK_BLEND_OP_COLORDODGE_EXT</code>, <code>VK_BLEND_OP_COLORBURN_EXT</code>, <code>VK_BLEND_OP_HARDLIGHT_EXT</code>, <code>VK_BLEND_OP_SOFTLIGHT_EXT</code>, <code>VK_BLEND_OP_DIFFERENCE_EXT</code>, <code>VK_BLEND_OP_EXCLUSION_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_HSL_HUE_EXT</code>, <code>VK_BLEND_OP_HSL_SATURATION_EXT</code>, <code>VK_BLEND_OP_HSL_COLOR_EXT</code>, <code>VK_BLEND_OP_HSL_LUMINOSITY_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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkColorBlendEquationEXT-constantAlphaColorBlendFactors-07362",
          "text": "If the <code><a href=\"#VK_KHR_portability_subset\">VK_KHR_portability_subset</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>constantAlphaColorBlendFactors</code> is <code>VK_FALSE</code>, <code>srcColorBlendFactor</code> <strong class=\"purple\">must</strong> not be <code>VK_BLEND_FACTOR_CONSTANT_ALPHA</code> or <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkColorBlendEquationEXT-constantAlphaColorBlendFactors-07363",
          "text": "If the <code><a href=\"#VK_KHR_portability_subset\">VK_KHR_portability_subset</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>constantAlphaColorBlendFactors</code> is <code>VK_FALSE</code>, <code>dstColorBlendFactor</code> <strong class=\"purple\">must</strong> not be <code>VK_BLEND_FACTOR_CONSTANT_ALPHA</code> or <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkColorBlendEquationEXT-srcColorBlendFactor-parameter",
          "text": "<code>srcColorBlendFactor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendFactor\">VkBlendFactor</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkColorBlendEquationEXT-dstColorBlendFactor-parameter",
          "text": "<code>dstColorBlendFactor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendFactor\">VkBlendFactor</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkColorBlendEquationEXT-colorBlendOp-parameter",
          "text": "<code>colorBlendOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendOp\">VkBlendOp</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkColorBlendEquationEXT-srcAlphaBlendFactor-parameter",
          "text": "<code>srcAlphaBlendFactor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendFactor\">VkBlendFactor</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkColorBlendEquationEXT-dstAlphaBlendFactor-parameter",
          "text": "<code>dstAlphaBlendFactor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendFactor\">VkBlendFactor</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkColorBlendEquationEXT-alphaBlendOp-parameter",
          "text": "<code>alphaBlendOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendOp\">VkBlendOp</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetColorWriteMaskEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetColorWriteMaskEXT-None-09423",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>The <a href=\"#features-extendedDynamicState3ColorWriteMask\"><code>extendedDynamicState3ColorWriteMask</code></a> feature is\nenabled</p>\n</li>\n<li>\n<p>The <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetColorWriteMaskEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetColorWriteMaskEXT-pColorWriteMasks-parameter",
          "text": "<code>pColorWriteMasks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid combinations of <a href=\"#VkColorComponentFlagBits\">VkColorComponentFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetColorWriteMaskEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetColorWriteMaskEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetColorWriteMaskEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetColorWriteMaskEXT-attachmentCount-arraylength",
          "text": "<code>attachmentCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetBlendConstants": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetBlendConstants-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetBlendConstants-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetBlendConstants-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetBlendConstants-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineColorBlendAdvancedStateCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-srcPremultiplied-01424",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-dstPremultiplied-01425",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-blendOverlap-01426",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-blendOverlap-parameter",
          "text": "<code>blendOverlap</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendOverlapEXT\">VkBlendOverlapEXT</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetColorBlendAdvancedEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetColorBlendAdvancedEXT-None-09423",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>The <a href=\"#features-extendedDynamicState3ColorBlendAdvanced\"><code>extendedDynamicState3ColorBlendAdvanced</code></a> feature is\nenabled</p>\n</li>\n<li>\n<p>The <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetColorBlendAdvancedEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetColorBlendAdvancedEXT-pColorBlendAdvanced-parameter",
          "text": "<code>pColorBlendAdvanced</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <a href=\"#VkColorBlendAdvancedEXT\">VkColorBlendAdvancedEXT</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetColorBlendAdvancedEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetColorBlendAdvancedEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetColorBlendAdvancedEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetColorBlendAdvancedEXT-attachmentCount-arraylength",
          "text": "<code>attachmentCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkColorBlendAdvancedEXT": {
      "core": [
        {
          "vuid": "VUID-VkColorBlendAdvancedEXT-srcPremultiplied-07505",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkColorBlendAdvancedEXT-dstPremultiplied-07506",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkColorBlendAdvancedEXT-blendOverlap-07507",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkColorBlendAdvancedEXT-advancedBlendOp-parameter",
          "text": "<code>advancedBlendOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendOp\">VkBlendOp</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkColorBlendAdvancedEXT-blendOverlap-parameter",
          "text": "<code>blendOverlap</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendOverlapEXT\">VkBlendOverlapEXT</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetLogicOpEnableEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetLogicOpEnableEXT-None-09423",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>The <a href=\"#features-extendedDynamicState3LogicOpEnable\"><code>extendedDynamicState3LogicOpEnable</code></a> feature is\nenabled</p>\n</li>\n<li>\n<p>The <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetLogicOpEnableEXT-logicOp-07366",
          "text": "If the <a href=\"#features-logicOp\"><code>logicOp</code></a> feature is not enabled, <code>logicOpEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetLogicOpEnableEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetLogicOpEnableEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetLogicOpEnableEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetLogicOpEnableEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetLogicOpEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetLogicOpEXT-None-09422",
          "text": "At least one of the following <strong class=\"purple\">must</strong> be true:<div class=\"ulist\">\n<ul>\n<li>\n<p>The <a href=\"#features-extendedDynamicState2LogicOp\"><code>extendedDynamicState2LogicOp</code></a> feature is\nenabled</p>\n</li>\n<li>\n<p>The <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is enabled</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetLogicOpEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetLogicOpEXT-logicOp-parameter",
          "text": "<code>logicOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkLogicOp\">VkLogicOp</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetLogicOpEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetLogicOpEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetLogicOpEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineColorWriteCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkPipelineColorWriteCreateInfoEXT-pAttachments-04801",
          "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is not enabled, all elements of <code>pColorWriteEnables</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineColorWriteCreateInfoEXT-attachmentCount-07608",
          "text": "If the pipeline is being created with <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code>, <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code>, <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code>, or <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic states not set, <code>attachmentCount</code> <strong class=\"purple\">must</strong> be equal to the <code>attachmentCount</code> member of the <code>VkPipelineColorBlendStateCreateInfo</code> structure specified during pipeline creation",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineColorWriteCreateInfoEXT-attachmentCount-06655",
          "text": "<code>attachmentCount</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>maxColorAttachments</code> member of <code>VkPhysicalDeviceLimits</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineColorWriteCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineColorWriteCreateInfoEXT-pColorWriteEnables-parameter",
          "text": "If <code>attachmentCount</code> is not <code>0</code>, <code>pColorWriteEnables</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> <a href=\"#VkBool32\">VkBool32</a> values",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetColorWriteEnableEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetColorWriteEnableEXT-None-04803",
          "text": "The <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetColorWriteEnableEXT-attachmentCount-06656",
          "text": "<code>attachmentCount</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>maxColorAttachments</code> member of <code>VkPhysicalDeviceLimits</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetColorWriteEnableEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetColorWriteEnableEXT-pColorWriteEnables-parameter",
          "text": "<code>pColorWriteEnables</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> <a href=\"#VkBool32\">VkBool32</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetColorWriteEnableEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetColorWriteEnableEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetColorWriteEnableEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetColorWriteEnableEXT-attachmentCount-arraylength",
          "text": "<code>attachmentCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetFramebufferTilePropertiesQCOM": {
      "core": [
        {
          "vuid": "VUID-vkGetFramebufferTilePropertiesQCOM-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetFramebufferTilePropertiesQCOM-framebuffer-parameter",
          "text": "<code>framebuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFramebuffer\">VkFramebuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetFramebufferTilePropertiesQCOM-pPropertiesCount-parameter",
          "text": "<code>pPropertiesCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetFramebufferTilePropertiesQCOM-pProperties-parameter",
          "text": "If the value referenced by <code>pPropertiesCount</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>pPropertiesCount</code> <a href=\"#VkTilePropertiesQCOM\">VkTilePropertiesQCOM</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetFramebufferTilePropertiesQCOM-framebuffer-parent",
          "text": "<code>framebuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdDispatch": {
      "core": [
        {
          "vuid": "VUID-vkCmdDispatch-magFilter-04553",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-magFilter-09598",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-mipmapMode-04770",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-mipmapMode-09599",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-unnormalizedCoordinates-09635",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>levelCount</code> and <code>layerCount</code> <strong class=\"purple\">must</strong> be 1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-unnormalizedCoordinates-09636",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_VIEW_TYPE_1D</code> or <code>VK_IMAGE_VIEW_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-None-06479",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is sampled with <a href=\"#textures-depth-compare-operation\">depth comparison</a>, 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_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-None-02691",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed using atomic operations as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-None-07888",
          "text": "If a <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> descriptor is accessed using atomic operations as a result of this command, then the storage texel buffer&#8217;s <a href=\"#resources-buffer-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-None-02692",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-None-02693",
          "text": "If the <a href=\"#VK_EXT_filter_cubic\">VK_EXT_filter_cubic</a> extension is not enabled and any <a href=\"#VkImageView\">VkImageView</a> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, it <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-filterCubic-02694",
          "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 <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubic</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-filterCubicMinmax-02695",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubicMinmax</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-cubicRangeClamp-09212",
          "text": "If the <a href=\"#features-filter-cubic-range-clamp\"><code>cubicRangeClamp</code></a> feature is not enabled, then 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=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-reductionMode-09213",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with a <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code> as a result of this command <strong class=\"purple\">must</strong> sample with <code>VK_FILTER_CUBIC_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-selectableCubicWeights-09214",
          "text": "If the <a href=\"#features-filter-cubic-weight-selection\"><code>selectableCubicWeights</code></a> feature is not enabled, then 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 href=\"#VkSamplerCubicWeightsCreateInfoQCOM\">VkSamplerCubicWeightsCreateInfoQCOM</a>::<code>cubicWeights</code> equal to <code>VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-flags-02696",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-OpTypeImage-07027",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being written as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-OpTypeImage-07028",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being read as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-OpTypeImage-07029",
          "text": "For any <a href=\"#VkBufferView\">VkBufferView</a> being written as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-OpTypeImage-07030",
          "text": "Any <a href=\"#VkBufferView\">VkBufferView</a> being read as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code> then the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-None-08600",
          "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-None-08601",
          "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-None-10068",
          "text": "For each array of resources that is used by <a href=\"#shaders-binding\">a bound shader</a>, the indices used to access members of the array <strong class=\"purple\">must</strong> be less than the descriptor count for the identified binding in the descriptor sets used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-maintenance4-08602",
          "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-None-08114",
          "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-None-08115",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created without <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-None-08116",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-None-08604",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-None-08117",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-None-08119",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkPipeline\">VkPipeline</a> created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-None-08605",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkShaderEXT\">VkShaderEXT</a> created with a <code>VkDescriptorSetLayout</code> that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-None-08606",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is not enabled, a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-None-08608",
          "text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state specified statically in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-None-08609",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <a href=\"#VkImage\">VkImage</a> with a <a href=\"#VkImageView\">VkImageView</a> 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-None-08610",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-None-08611",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-None-08607",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-uniformBuffers-06935",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-None-08612",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-storageBuffers-06936",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>storageBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-None-08613",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-commandBuffer-02707",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, any resource accessed by <a href=\"#shaders-binding\">bound shaders</a> <strong class=\"purple\">must</strong> not be a protected resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-None-06550",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> only be used with <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-ConstOffset-06551",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> not use the <code>ConstOffset</code> and <code>Offset</code> operands",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-viewType-07752",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> match the <code>Dim</code> operand of the <code>OpTypeImage</code> as described in <a href=\"#spirvenv-image-dimensions\">Compatibility Between SPIR-V Image Dimensions and Vulkan ImageView Types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-format-07753",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the <a href=\"#formats-numericformat\">numeric type</a> of the image view&#8217;s <code>format</code> and the <code>Sampled</code> <code>Type</code> operand of the <code>OpTypeImage</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-OpImageWrite-08795",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with a format other than <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-OpImageWrite-08796",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with the format <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have four components",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-OpImageWrite-04469",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the buffer view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-SampledType-04470",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-SampledType-04471",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-SampledType-04472",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-SampledType-04473",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-sparseImageInt64Atomics-04474",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-sparseImageInt64Atomics-04475",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-OpImageWeightedSampleQCOM-06971",
          "text": "If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-OpImageWeightedSampleQCOM-06972",
          "text": "If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image 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_2_WEIGHT_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-OpImageBoxFilterQCOM-06973",
          "text": "If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-OpImageBlockMatchSSDQCOM-06974",
          "text": "If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-OpImageBlockMatchSADQCOM-06975",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-OpImageBlockMatchSADQCOM-06976",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-OpImageWeightedSampleQCOM-06977",
          "text": "If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-OpImageWeightedSampleQCOM-06978",
          "text": "If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-OpImageBlockMatchWindow-09215",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-OpImageBlockMatchWindow-09216",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s format <strong class=\"purple\">must</strong> be a single-component format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-OpImageBlockMatchWindow-09217",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-None-07288",
          "text": "Any shader invocation executed by this command <strong class=\"purple\">must</strong> <a href=\"#shaders-termination\">terminate</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-None-09600",
          "text": "If a descriptor with type equal to any of <code>VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> is accessed as a result of this command, the image subresource identified by that descriptor <strong class=\"purple\">must</strong> be in the image layout identified when the descriptor was written",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-commandBuffer-02712",
          "text": "If <code>commandBuffer</code> is a protected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, any resource written to by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be an unprotected resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-commandBuffer-02713",
          "text": "If <code>commandBuffer</code> is a protected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, pipeline stages other than the framebuffer-space and compute stages in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not write to any resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-commandBuffer-04617",
          "text": "If any of the shader stages of the <code>VkPipeline</code> bound to the pipeline bind point used by this command uses the <a href=\"#spirvenv-capabilities-table-RayQueryKHR\"><code>RayQueryKHR</code></a> capability, then <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-groupCountX-00386",
          "text": "<code>groupCountX</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-groupCountY-00387",
          "text": "<code>groupCountY</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-groupCountZ-00388",
          "text": "<code>groupCountZ</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatch-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdDispatchIndirect": {
      "core": [
        {
          "vuid": "VUID-vkCmdDispatchIndirect-magFilter-04553",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-magFilter-09598",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-mipmapMode-04770",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-mipmapMode-09599",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-unnormalizedCoordinates-09635",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>levelCount</code> and <code>layerCount</code> <strong class=\"purple\">must</strong> be 1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-unnormalizedCoordinates-09636",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_VIEW_TYPE_1D</code> or <code>VK_IMAGE_VIEW_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-None-06479",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is sampled with <a href=\"#textures-depth-compare-operation\">depth comparison</a>, 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_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-None-02691",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed using atomic operations as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-None-07888",
          "text": "If a <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> descriptor is accessed using atomic operations as a result of this command, then the storage texel buffer&#8217;s <a href=\"#resources-buffer-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-None-02692",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-None-02693",
          "text": "If the <a href=\"#VK_EXT_filter_cubic\">VK_EXT_filter_cubic</a> extension is not enabled and any <a href=\"#VkImageView\">VkImageView</a> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, it <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-filterCubic-02694",
          "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 <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubic</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-filterCubicMinmax-02695",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubicMinmax</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-cubicRangeClamp-09212",
          "text": "If the <a href=\"#features-filter-cubic-range-clamp\"><code>cubicRangeClamp</code></a> feature is not enabled, then 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=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-reductionMode-09213",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with a <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code> as a result of this command <strong class=\"purple\">must</strong> sample with <code>VK_FILTER_CUBIC_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-selectableCubicWeights-09214",
          "text": "If the <a href=\"#features-filter-cubic-weight-selection\"><code>selectableCubicWeights</code></a> feature is not enabled, then 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 href=\"#VkSamplerCubicWeightsCreateInfoQCOM\">VkSamplerCubicWeightsCreateInfoQCOM</a>::<code>cubicWeights</code> equal to <code>VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-flags-02696",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-OpTypeImage-07027",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being written as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-OpTypeImage-07028",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being read as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-OpTypeImage-07029",
          "text": "For any <a href=\"#VkBufferView\">VkBufferView</a> being written as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-OpTypeImage-07030",
          "text": "Any <a href=\"#VkBufferView\">VkBufferView</a> being read as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code> then the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-None-08600",
          "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-None-08601",
          "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-None-10068",
          "text": "For each array of resources that is used by <a href=\"#shaders-binding\">a bound shader</a>, the indices used to access members of the array <strong class=\"purple\">must</strong> be less than the descriptor count for the identified binding in the descriptor sets used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-maintenance4-08602",
          "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-None-08114",
          "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-None-08115",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created without <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-None-08116",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-None-08604",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-None-08117",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-None-08119",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkPipeline\">VkPipeline</a> created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-None-08605",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkShaderEXT\">VkShaderEXT</a> created with a <code>VkDescriptorSetLayout</code> that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-None-08606",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is not enabled, a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-None-08608",
          "text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state specified statically in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-None-08609",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <a href=\"#VkImage\">VkImage</a> with a <a href=\"#VkImageView\">VkImageView</a> 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-None-08610",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-None-08611",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-None-08607",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-uniformBuffers-06935",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-None-08612",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-storageBuffers-06936",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>storageBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-None-08613",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-02707",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, any resource accessed by <a href=\"#shaders-binding\">bound shaders</a> <strong class=\"purple\">must</strong> not be a protected resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-None-06550",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> only be used with <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-ConstOffset-06551",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> not use the <code>ConstOffset</code> and <code>Offset</code> operands",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-viewType-07752",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> match the <code>Dim</code> operand of the <code>OpTypeImage</code> as described in <a href=\"#spirvenv-image-dimensions\">Compatibility Between SPIR-V Image Dimensions and Vulkan ImageView Types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-format-07753",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the <a href=\"#formats-numericformat\">numeric type</a> of the image view&#8217;s <code>format</code> and the <code>Sampled</code> <code>Type</code> operand of the <code>OpTypeImage</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-OpImageWrite-08795",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with a format other than <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-OpImageWrite-08796",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with the format <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have four components",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-OpImageWrite-04469",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the buffer view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-SampledType-04470",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-SampledType-04471",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-SampledType-04472",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-SampledType-04473",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-sparseImageInt64Atomics-04474",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-sparseImageInt64Atomics-04475",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-OpImageWeightedSampleQCOM-06971",
          "text": "If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-OpImageWeightedSampleQCOM-06972",
          "text": "If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image 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_2_WEIGHT_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-OpImageBoxFilterQCOM-06973",
          "text": "If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-OpImageBlockMatchSSDQCOM-06974",
          "text": "If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-OpImageBlockMatchSADQCOM-06975",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-OpImageBlockMatchSADQCOM-06976",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-OpImageWeightedSampleQCOM-06977",
          "text": "If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-OpImageWeightedSampleQCOM-06978",
          "text": "If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-OpImageBlockMatchWindow-09215",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-OpImageBlockMatchWindow-09216",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s format <strong class=\"purple\">must</strong> be a single-component format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-OpImageBlockMatchWindow-09217",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-None-07288",
          "text": "Any shader invocation executed by this command <strong class=\"purple\">must</strong> <a href=\"#shaders-termination\">terminate</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-None-09600",
          "text": "If a descriptor with type equal to any of <code>VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> is accessed as a result of this command, the image subresource identified by that descriptor <strong class=\"purple\">must</strong> be in the image layout identified when the descriptor was written",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-buffer-02708",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-buffer-02709",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-offset-02710",
          "text": "<code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-02711",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-offset-00407",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-buffer-parameter",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchIndirect-commonparent",
          "text": "Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkDispatchIndirectCommand": {
      "core": [
        {
          "vuid": "VUID-VkDispatchIndirectCommand-x-00417",
          "text": "<code>x</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDispatchIndirectCommand-y-00418",
          "text": "<code>y</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDispatchIndirectCommand-z-00419",
          "text": "<code>z</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdDispatchBase": {
      "core": [
        {
          "vuid": "VUID-vkCmdDispatchBase-magFilter-04553",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-magFilter-09598",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-mipmapMode-04770",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-mipmapMode-09599",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-unnormalizedCoordinates-09635",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>levelCount</code> and <code>layerCount</code> <strong class=\"purple\">must</strong> be 1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-unnormalizedCoordinates-09636",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_VIEW_TYPE_1D</code> or <code>VK_IMAGE_VIEW_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-None-06479",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is sampled with <a href=\"#textures-depth-compare-operation\">depth comparison</a>, 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_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-None-02691",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed using atomic operations as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-None-07888",
          "text": "If a <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> descriptor is accessed using atomic operations as a result of this command, then the storage texel buffer&#8217;s <a href=\"#resources-buffer-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-None-02692",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-None-02693",
          "text": "If the <a href=\"#VK_EXT_filter_cubic\">VK_EXT_filter_cubic</a> extension is not enabled and any <a href=\"#VkImageView\">VkImageView</a> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, it <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-filterCubic-02694",
          "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 <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubic</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-filterCubicMinmax-02695",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubicMinmax</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-cubicRangeClamp-09212",
          "text": "If the <a href=\"#features-filter-cubic-range-clamp\"><code>cubicRangeClamp</code></a> feature is not enabled, then 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=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-reductionMode-09213",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with a <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code> as a result of this command <strong class=\"purple\">must</strong> sample with <code>VK_FILTER_CUBIC_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-selectableCubicWeights-09214",
          "text": "If the <a href=\"#features-filter-cubic-weight-selection\"><code>selectableCubicWeights</code></a> feature is not enabled, then 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 href=\"#VkSamplerCubicWeightsCreateInfoQCOM\">VkSamplerCubicWeightsCreateInfoQCOM</a>::<code>cubicWeights</code> equal to <code>VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-flags-02696",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-OpTypeImage-07027",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being written as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-OpTypeImage-07028",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being read as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-OpTypeImage-07029",
          "text": "For any <a href=\"#VkBufferView\">VkBufferView</a> being written as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-OpTypeImage-07030",
          "text": "Any <a href=\"#VkBufferView\">VkBufferView</a> being read as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code> then the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-None-08600",
          "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-None-08601",
          "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-None-10068",
          "text": "For each array of resources that is used by <a href=\"#shaders-binding\">a bound shader</a>, the indices used to access members of the array <strong class=\"purple\">must</strong> be less than the descriptor count for the identified binding in the descriptor sets used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-maintenance4-08602",
          "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-None-08114",
          "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-None-08115",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created without <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-None-08116",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-None-08604",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-None-08117",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-None-08119",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkPipeline\">VkPipeline</a> created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-None-08605",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkShaderEXT\">VkShaderEXT</a> created with a <code>VkDescriptorSetLayout</code> that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-None-08606",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is not enabled, a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-None-08608",
          "text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state specified statically in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-None-08609",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <a href=\"#VkImage\">VkImage</a> with a <a href=\"#VkImageView\">VkImageView</a> 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-None-08610",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-None-08611",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-None-08607",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-uniformBuffers-06935",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-None-08612",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-storageBuffers-06936",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>storageBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-None-08613",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-commandBuffer-02707",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, any resource accessed by <a href=\"#shaders-binding\">bound shaders</a> <strong class=\"purple\">must</strong> not be a protected resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-None-06550",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> only be used with <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-ConstOffset-06551",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> not use the <code>ConstOffset</code> and <code>Offset</code> operands",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-viewType-07752",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> match the <code>Dim</code> operand of the <code>OpTypeImage</code> as described in <a href=\"#spirvenv-image-dimensions\">Compatibility Between SPIR-V Image Dimensions and Vulkan ImageView Types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-format-07753",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the <a href=\"#formats-numericformat\">numeric type</a> of the image view&#8217;s <code>format</code> and the <code>Sampled</code> <code>Type</code> operand of the <code>OpTypeImage</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-OpImageWrite-08795",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with a format other than <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-OpImageWrite-08796",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with the format <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have four components",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-OpImageWrite-04469",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the buffer view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-SampledType-04470",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-SampledType-04471",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-SampledType-04472",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-SampledType-04473",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-sparseImageInt64Atomics-04474",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-sparseImageInt64Atomics-04475",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-OpImageWeightedSampleQCOM-06971",
          "text": "If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-OpImageWeightedSampleQCOM-06972",
          "text": "If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image 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_2_WEIGHT_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-OpImageBoxFilterQCOM-06973",
          "text": "If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-OpImageBlockMatchSSDQCOM-06974",
          "text": "If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-OpImageBlockMatchSADQCOM-06975",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-OpImageBlockMatchSADQCOM-06976",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-OpImageWeightedSampleQCOM-06977",
          "text": "If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-OpImageWeightedSampleQCOM-06978",
          "text": "If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-OpImageBlockMatchWindow-09215",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-OpImageBlockMatchWindow-09216",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s format <strong class=\"purple\">must</strong> be a single-component format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-OpImageBlockMatchWindow-09217",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-None-07288",
          "text": "Any shader invocation executed by this command <strong class=\"purple\">must</strong> <a href=\"#shaders-termination\">terminate</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-None-09600",
          "text": "If a descriptor with type equal to any of <code>VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> is accessed as a result of this command, the image subresource identified by that descriptor <strong class=\"purple\">must</strong> be in the image layout identified when the descriptor was written",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-commandBuffer-02712",
          "text": "If <code>commandBuffer</code> is a protected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, any resource written to by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be an unprotected resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-commandBuffer-02713",
          "text": "If <code>commandBuffer</code> is a protected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, pipeline stages other than the framebuffer-space and compute stages in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not write to any resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-commandBuffer-04617",
          "text": "If any of the shader stages of the <code>VkPipeline</code> bound to the pipeline bind point used by this command uses the <a href=\"#spirvenv-capabilities-table-RayQueryKHR\"><code>RayQueryKHR</code></a> capability, then <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-baseGroupX-00421",
          "text": "<code>baseGroupX</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-baseGroupX-00422",
          "text": "<code>baseGroupY</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-baseGroupZ-00423",
          "text": "<code>baseGroupZ</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-groupCountX-00424",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-groupCountY-00425",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-groupCountZ-00426",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-baseGroupX-00427",
          "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 or the bound compute shader object <strong class=\"purple\">must</strong> have been created with the <code>VK_SHADER_CREATE_DISPATCH_BASE_BIT_EXT</code> flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchBase-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSubpassShadingHUAWEI": {
      "core": [
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-magFilter-04553",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-magFilter-09598",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-mipmapMode-04770",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-mipmapMode-09599",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-unnormalizedCoordinates-09635",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>levelCount</code> and <code>layerCount</code> <strong class=\"purple\">must</strong> be 1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-unnormalizedCoordinates-09636",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_VIEW_TYPE_1D</code> or <code>VK_IMAGE_VIEW_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-06479",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is sampled with <a href=\"#textures-depth-compare-operation\">depth comparison</a>, 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_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-02691",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed using atomic operations as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-07888",
          "text": "If a <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> descriptor is accessed using atomic operations as a result of this command, then the storage texel buffer&#8217;s <a href=\"#resources-buffer-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-02692",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-02693",
          "text": "If the <a href=\"#VK_EXT_filter_cubic\">VK_EXT_filter_cubic</a> extension is not enabled and any <a href=\"#VkImageView\">VkImageView</a> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, it <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-filterCubic-02694",
          "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 <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubic</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-filterCubicMinmax-02695",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubicMinmax</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-cubicRangeClamp-09212",
          "text": "If the <a href=\"#features-filter-cubic-range-clamp\"><code>cubicRangeClamp</code></a> feature is not enabled, then 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=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-reductionMode-09213",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with a <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code> as a result of this command <strong class=\"purple\">must</strong> sample with <code>VK_FILTER_CUBIC_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-selectableCubicWeights-09214",
          "text": "If the <a href=\"#features-filter-cubic-weight-selection\"><code>selectableCubicWeights</code></a> feature is not enabled, then 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 href=\"#VkSamplerCubicWeightsCreateInfoQCOM\">VkSamplerCubicWeightsCreateInfoQCOM</a>::<code>cubicWeights</code> equal to <code>VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-flags-02696",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-OpTypeImage-07027",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being written as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-OpTypeImage-07028",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being read as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-OpTypeImage-07029",
          "text": "For any <a href=\"#VkBufferView\">VkBufferView</a> being written as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-OpTypeImage-07030",
          "text": "Any <a href=\"#VkBufferView\">VkBufferView</a> being read as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code> then the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-08600",
          "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-08601",
          "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-10068",
          "text": "For each array of resources that is used by <a href=\"#shaders-binding\">a bound shader</a>, the indices used to access members of the array <strong class=\"purple\">must</strong> be less than the descriptor count for the identified binding in the descriptor sets used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-maintenance4-08602",
          "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-08114",
          "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-08115",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created without <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-08116",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-08604",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-08117",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-08119",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkPipeline\">VkPipeline</a> created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-08605",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkShaderEXT\">VkShaderEXT</a> created with a <code>VkDescriptorSetLayout</code> that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-08606",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is not enabled, a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-08608",
          "text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state specified statically in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-08609",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <a href=\"#VkImage\">VkImage</a> with a <a href=\"#VkImageView\">VkImageView</a> 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-08610",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-08611",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-08607",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-uniformBuffers-06935",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-08612",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-storageBuffers-06936",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>storageBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-08613",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-commandBuffer-02707",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, any resource accessed by <a href=\"#shaders-binding\">bound shaders</a> <strong class=\"purple\">must</strong> not be a protected resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-06550",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> only be used with <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-ConstOffset-06551",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> not use the <code>ConstOffset</code> and <code>Offset</code> operands",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-viewType-07752",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> match the <code>Dim</code> operand of the <code>OpTypeImage</code> as described in <a href=\"#spirvenv-image-dimensions\">Compatibility Between SPIR-V Image Dimensions and Vulkan ImageView Types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-format-07753",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the <a href=\"#formats-numericformat\">numeric type</a> of the image view&#8217;s <code>format</code> and the <code>Sampled</code> <code>Type</code> operand of the <code>OpTypeImage</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-OpImageWrite-08795",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with a format other than <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-OpImageWrite-08796",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with the format <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have four components",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-OpImageWrite-04469",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the buffer view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-SampledType-04470",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-SampledType-04471",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-SampledType-04472",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-SampledType-04473",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-sparseImageInt64Atomics-04474",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-sparseImageInt64Atomics-04475",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-OpImageWeightedSampleQCOM-06971",
          "text": "If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-OpImageWeightedSampleQCOM-06972",
          "text": "If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image 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_2_WEIGHT_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-OpImageBoxFilterQCOM-06973",
          "text": "If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-OpImageBlockMatchSSDQCOM-06974",
          "text": "If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-OpImageBlockMatchSADQCOM-06975",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-OpImageBlockMatchSADQCOM-06976",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-OpImageWeightedSampleQCOM-06977",
          "text": "If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-OpImageWeightedSampleQCOM-06978",
          "text": "If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-OpImageBlockMatchWindow-09215",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-OpImageBlockMatchWindow-09216",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s format <strong class=\"purple\">must</strong> be a single-component format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-OpImageBlockMatchWindow-09217",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-07288",
          "text": "Any shader invocation executed by this command <strong class=\"purple\">must</strong> <a href=\"#shaders-termination\">terminate</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-09600",
          "text": "If a descriptor with type equal to any of <code>VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> is accessed as a result of this command, the image subresource identified by that descriptor <strong class=\"purple\">must</strong> be in the image layout identified when the descriptor was written",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-04931",
          "text": "This command <strong class=\"purple\">must</strong> be called in a subpass with bind point <code>VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI</code>. No draw commands can be called in the same subpass. Only one <a href=\"#vkCmdSubpassShadingHUAWEI\">vkCmdSubpassShadingHUAWEI</a> command can be called in a subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSubpassShadingHUAWEI-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdCudaLaunchKernelNV": {
      "core": [
        {
          "vuid": "VUID-vkCmdCudaLaunchKernelNV-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCudaLaunchKernelNV-pLaunchInfo-parameter",
          "text": "<code>pLaunchInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCudaLaunchInfoNV\">VkCudaLaunchInfoNV</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCudaLaunchKernelNV-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCudaLaunchKernelNV-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCudaLaunchKernelNV-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkCudaLaunchInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkCudaLaunchInfoNV-gridDimX-09406",
          "text": "<code>gridDimX</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCudaLaunchInfoNV-gridDimY-09407",
          "text": "<code>gridDimY</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCudaLaunchInfoNV-gridDimZ-09408",
          "text": "<code>gridDimZ</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCudaLaunchInfoNV-paramCount-09409",
          "text": "<code>paramCount</code> <strong class=\"purple\">must</strong> be the total amount of parameters listed in the <code>pParams</code> table",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCudaLaunchInfoNV-pParams-09410",
          "text": "<code>pParams</code> <strong class=\"purple\">must</strong> be a pointer to a table of <code>paramCount</code> parameters, corresponding to the arguments of <code>function</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCudaLaunchInfoNV-extraCount-09411",
          "text": "<code>extraCount</code> <strong class=\"purple\">must</strong> be 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCudaLaunchInfoNV-pExtras-09412",
          "text": "<code>pExtras</code> <strong class=\"purple\">must</strong> be NULL",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCudaLaunchInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CUDA_LAUNCH_INFO_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCudaLaunchInfoNV-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCudaLaunchInfoNV-function-parameter",
          "text": "<code>function</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCudaFunctionNV\">VkCudaFunctionNV</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateIndirectCommandsLayoutEXT": {
      "core": [
        {
          "vuid": "VUID-vkCreateIndirectCommandsLayoutEXT-deviceGeneratedCommands-11089",
          "text": "The <a href=\"#features-deviceGeneratedCommandsEXT\"><code>VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT</code>::<code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateIndirectCommandsLayoutEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateIndirectCommandsLayoutEXT-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkIndirectCommandsLayoutCreateInfoEXT\">VkIndirectCommandsLayoutCreateInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateIndirectCommandsLayoutEXT-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateIndirectCommandsLayoutEXT-pIndirectCommandsLayout-parameter",
          "text": "<code>pIndirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkIndirectCommandsLayoutEXT\">VkIndirectCommandsLayoutEXT</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkIndirectCommandsLayoutCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-indirectStride-11090",
          "text": "<code>indirectStride</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>maxIndirectCommandsIndirectStride</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-shaderStages-11091",
          "text": "<code>shaderStages</code> <strong class=\"purple\">must</strong> only contain stages supported by <a href=\"#limits-supportedIndirectCommandsShaderStages\"><a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>supportedIndirectCommandsShaderStages</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-tokenCount-11092",
          "text": "<code>tokenCount</code> <strong class=\"purple\">must</strong> less than or equal to <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>maxIndirectCommandsTokenCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11093",
          "text": "The number of tokens in the <code>pTokens</code> array with <code>type</code> equal to <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT</code> <strong class=\"purple\">must</strong> be less than or equal to <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11145",
          "text": "The number of tokens in the <code>pTokens</code> array with <code>type</code> equal to <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT</code> <strong class=\"purple\">must</strong> be less than or equal to <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11094",
          "text": "The number of tokens in the <code>pTokens</code> array with <code>type</code> equal to <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT</code> <strong class=\"purple\">must</strong> be less than or equal to <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11095",
          "text": "If the action command token in the <code>pTokens</code> array is not an indexed draw token, then <code>pTokens</code> <strong class=\"purple\">must</strong> not contain a member with <code>type</code> set to <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11096",
          "text": "If the action command token in the <code>pTokens</code> array is not a non-mesh draw token, then <code>pTokens</code> <strong class=\"purple\">must</strong> not contain a member with <code>type</code> set to <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11097",
          "text": "If the <code>pTokens</code> array contains multiple tokens with <code>type</code> equal to <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT</code>, then there <strong class=\"purple\">must</strong> be no duplicate <a href=\"#VkIndirectCommandsVertexBufferTokenEXT\">VkIndirectCommandsVertexBufferTokenEXT</a>::<code>vertexBindingUnit</code> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11099",
          "text": "For all <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT</code> and <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT</code> type tokens in <code>pTokens</code>, there <strong class=\"purple\">must</strong> be no overlapping ranges between any specified push constant ranges",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11100",
          "text": "The action command token <strong class=\"purple\">must</strong> be the last token in the <code>pTokens</code> array",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11139",
          "text": "If the <code>pTokens</code> array contains a <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT</code> token, then this token <strong class=\"purple\">must</strong> be the first token in the array",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11101",
          "text": "For any element of <code>pTokens</code>, if <code>type</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT</code> or <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT</code> and the <a href=\"#features-dynamicGeneratedPipelineLayout\"><code>dynamicGeneratedPipelineLayout</code></a> is not enabled, then the <code>pipelineLayout</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11102",
          "text": "For any element of <code>pTokens</code>, if <code>type</code> is either <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT</code> or <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT</code> and <code>pipelineLayout</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkPipelineLayoutCreateInfo\">VkPipelineLayoutCreateInfo</a> struct",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11103",
          "text": "For any element of <code>pTokens</code>, the <code>offset</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>offset</code> member of the previous tokens",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11104",
          "text": "For any element of <code>pTokens</code>, if <code>type</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT</code>, or <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT</code>, then <code>shaderStages</code> <strong class=\"purple\">must</strong> contain graphics stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11105",
          "text": "For any element of <code>pTokens</code>, if <code>type</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT</code>, then <code>shaderStages</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_STAGE_COMPUTE_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11106",
          "text": "For any element of <code>pTokens</code>, if <code>type</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT</code> or <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT</code>, then <code>shaderStages</code> <strong class=\"purple\">must</strong> contain <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11107",
          "text": "For any element of <code>pTokens</code>, if <code>type</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT</code> or <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT</code>, then the <code>shaderStages</code> <strong class=\"purple\">must</strong> contain <code>VK_SHADER_STAGE_MESH_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-11108",
          "text": "For any element of <code>pTokens</code>, if <code>type</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT</code>, then <code>shaderStages</code> <strong class=\"purple\">must</strong> contain ray tracing stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-shaderStages-11109",
          "text": "If <code>shaderStages</code> contains graphics stages then the state tokens in     <code>pTokens</code> <strong class=\"purple\">must</strong> not include <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT</code>,     <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-shaderStages-11110",
          "text": "If <code>shaderStages</code> is <code>VK_SHADER_STAGE_COMPUTE_BIT</code> then the state tokens in <code>pTokens</code> <strong class=\"purple\">must</strong> only include <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT</code>, or <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-shaderStages-11111",
          "text": "If <code>shaderStages</code> contains ray tracing stages then the state tokens in <code>pTokens</code> <strong class=\"purple\">must</strong> only include <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT</code>, or <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-shaderStages-11112",
          "text": "The <code>shaderStages</code> <strong class=\"purple\">must</strong> only contain stages from one of the following:<div class=\"ulist\">\n<ul>\n<li>\n<p>graphics stages</p>\n</li>\n<li>\n<p><code>VK_SHADER_STAGE_COMPUTE_BIT</code></p>\n</li>\n<li>\n<p>mesh stages and <code>VK_SHADER_STAGE_FRAGMENT_BIT</code></p>\n</li>\n<li>\n<p>ray tracing stages</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-shaderStages-11113",
          "text": "If <code>shaderStages</code> contains <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>, then <code>shaderStages</code> <strong class=\"purple\">must</strong> also contain <code>VK_SHADER_STAGE_VERTEX_BIT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineLayoutCreateInfo\">VkPipelineLayoutCreateInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkIndirectCommandsLayoutUsageFlagBitsEXT\">VkIndirectCommandsLayoutUsageFlagBitsEXT</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-shaderStages-parameter",
          "text": "<code>shaderStages</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-shaderStages-requiredbitmask",
          "text": "<code>shaderStages</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-pipelineLayout-parameter",
          "text": "If <code>pipelineLayout</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-pTokens-parameter",
          "text": "<code>pTokens</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>tokenCount</code> valid <a href=\"#VkIndirectCommandsLayoutTokenEXT\">VkIndirectCommandsLayoutTokenEXT</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoEXT-tokenCount-arraylength",
          "text": "<code>tokenCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroyIndirectCommandsLayoutEXT": {
      "core": [
        {
          "vuid": "VUID-vkDestroyIndirectCommandsLayoutEXT-indirectCommandsLayout-11114",
          "text": "All submitted commands that refer to <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> have completed execution",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyIndirectCommandsLayoutEXT-indirectCommandsLayout-11115",
          "text": "If <code>VkAllocationCallbacks</code> were provided when <code>indirectCommandsLayout</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyIndirectCommandsLayoutEXT-indirectCommandsLayout-11116",
          "text": "If no <code>VkAllocationCallbacks</code> were provided when <code>indirectCommandsLayout</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyIndirectCommandsLayoutEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyIndirectCommandsLayoutEXT-indirectCommandsLayout-parameter",
          "text": "If <code>indirectCommandsLayout</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectCommandsLayoutEXT\">VkIndirectCommandsLayoutEXT</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyIndirectCommandsLayoutEXT-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyIndirectCommandsLayoutEXT-indirectCommandsLayout-parent",
          "text": "If <code>indirectCommandsLayout</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateIndirectCommandsLayoutNV": {
      "core": [
        {
          "vuid": "VUID-vkCreateIndirectCommandsLayoutNV-deviceGeneratedCommands-02929",
          "text": "The <a href=\"#features-deviceGeneratedCommands\"><code>VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</code>::<code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateIndirectCommandsLayoutNV-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateIndirectCommandsLayoutNV-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkIndirectCommandsLayoutCreateInfoNV\">VkIndirectCommandsLayoutCreateInfoNV</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateIndirectCommandsLayoutNV-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateIndirectCommandsLayoutNV-pIndirectCommandsLayout-parameter",
          "text": "<code>pIndirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkIndirectCommandsLayoutNV\">VkIndirectCommandsLayoutNV</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkIndirectCommandsLayoutCreateInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pipelineBindPoint-02930",
          "text": "The <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> or <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-tokenCount-02931",
          "text": "<code>tokenCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code> and less than or equal to <code>VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</code>::<code>maxIndirectCommandsTokenCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-02932",
          "text": "If <code>pTokens</code> contains an entry of <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV</code> it <strong class=\"purple\">must</strong> be the first element of the array and there <strong class=\"purple\">must</strong> be only a single element of such token type",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-09585",
          "text": "If <code>pTokens</code> contains an entry of <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV</code> it <strong class=\"purple\">must</strong> be the first element of the array and there <strong class=\"purple\">must</strong> be only a single element of such token type",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-02933",
          "text": "If <code>pTokens</code> contains an entry of <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV</code> there <strong class=\"purple\">must</strong> be only a single element of such token type",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-02934",
          "text": "All state tokens in <code>pTokens</code> <strong class=\"purple\">must</strong> occur before any action command tokens (<code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV</code> , <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV</code> )",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-02935",
          "text": "The content of <code>pTokens</code> <strong class=\"purple\">must</strong> include one single action command token that is compatible with the <code>pipelineBindPoint</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-streamCount-02936",
          "text": "<code>streamCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code> and less or equal to <code>VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</code>::<code>maxIndirectCommandsStreamCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pStreamStrides-02937",
          "text": "each element of <code>pStreamStrides</code> <strong class=\"purple\">must</strong> be greater than <code>0</code> and less than or equal to <code>VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</code>::<code>maxIndirectCommandsStreamStride</code>. Furthermore the alignment of each token input <strong class=\"purple\">must</strong> be ensured",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pipelineBindPoint-09088",
          "text": "If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> then the <a href=\"#features-deviceGeneratedCompute\"><code>VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV</code>::<code>deviceGeneratedCompute</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pipelineBindPoint-09089",
          "text": "If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> then the state tokens in <code>pTokens</code> <strong class=\"purple\">must</strong> only include <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV</code>, or <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pipelineBindPoint-09090",
          "text": "If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> and <code>pTokens</code> includes <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV</code>, then the <a href=\"#features-deviceGeneratedComputePipelines\"><code>VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV</code>::<code>deviceGeneratedComputePipelines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkIndirectCommandsLayoutUsageFlagBitsNV\">VkIndirectCommandsLayoutUsageFlagBitsNV</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pipelineBindPoint-parameter",
          "text": "<code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-parameter",
          "text": "<code>pTokens</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>tokenCount</code> valid <a href=\"#VkIndirectCommandsLayoutTokenNV\">VkIndirectCommandsLayoutTokenNV</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pStreamStrides-parameter",
          "text": "<code>pStreamStrides</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>streamCount</code> <code>uint32_t</code> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-tokenCount-arraylength",
          "text": "<code>tokenCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-streamCount-arraylength",
          "text": "<code>streamCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroyIndirectCommandsLayoutNV": {
      "core": [
        {
          "vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-02938",
          "text": "All submitted commands that refer to <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> have completed execution",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-02939",
          "text": "If <code>VkAllocationCallbacks</code> were provided when <code>indirectCommandsLayout</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-02940",
          "text": "If no <code>VkAllocationCallbacks</code> were provided when <code>indirectCommandsLayout</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-deviceGeneratedCommands-02941",
          "text": "The <a href=\"#features-deviceGeneratedCommands\"><code>VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</code>::<code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-parameter",
          "text": "If <code>indirectCommandsLayout</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectCommandsLayoutNV\">VkIndirectCommandsLayoutNV</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-parent",
          "text": "If <code>indirectCommandsLayout</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkBindIndexBufferIndirectCommandEXT": {
      "core": [
        {
          "vuid": "VUID-VkBindIndexBufferIndirectCommandEXT-None-11117",
          "text": "The buffer&#8217;s usage flags from which the address was acquired <strong class=\"purple\">must</strong> have the <code>VK_BUFFER_USAGE_INDEX_BUFFER_BIT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindIndexBufferIndirectCommandEXT-bufferAddress-11118",
          "text": "The <code>bufferAddress</code> <strong class=\"purple\">must</strong> be aligned to the <a href=\"#VkIndexType\">VkIndexType</a> of the <code>indexType</code> used",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindIndexBufferIndirectCommandEXT-None-11119",
          "text": "Each element of the buffer from which the address was acquired and that is non-sparse <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindIndexBufferIndirectCommandEXT-indexType-parameter",
          "text": "<code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkBindVertexBufferIndirectCommandEXT": {
      "core": [
        {
          "vuid": "VUID-VkBindVertexBufferIndirectCommandEXT-None-11120",
          "text": "The buffer&#8217;s usage flag from which the address was acquired <strong class=\"purple\">must</strong> have the <code>VK_BUFFER_USAGE_VERTEX_BUFFER_BIT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindVertexBufferIndirectCommandEXT-None-11121",
          "text": "Each element of the buffer from which the address was acquired and that is non-sparse <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        }
      ]
    },
    "VkDrawIndirectCountIndirectCommandEXT": {
      "core": [
        {
          "vuid": "VUID-VkDrawIndirectCountIndirectCommandEXT-None-11122",
          "text": "The buffer&#8217;s usage flag from which the address was acquired <strong class=\"purple\">must</strong> have the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDrawIndirectCountIndirectCommandEXT-None-11123",
          "text": "Each element of the buffer from which the address was acquired and that is non-sparse <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        }
      ]
    },
    "VkIndirectCommandsStreamNV": {
      "core": [
        {
          "vuid": "VUID-VkIndirectCommandsStreamNV-buffer-02942",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsStreamNV-offset-02943",
          "text": "The <code>offset</code> <strong class=\"purple\">must</strong> be aligned to <code>VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</code>::<code>minIndirectCommandsBufferOffsetAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsStreamNV-buffer-02975",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsStreamNV-buffer-parameter",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkBindShaderGroupIndirectCommandNV": {
      "core": [
        {
          "vuid": "VUID-VkBindShaderGroupIndirectCommandNV-None-02944",
          "text": "The current bound graphics pipeline, as well as the pipelines it may reference, <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindShaderGroupIndirectCommandNV-index-02945",
          "text": "The <code>index</code> <strong class=\"purple\">must</strong> be within range of the accessible shader groups of the current bound graphics pipeline. See <a href=\"#vkCmdBindPipelineShaderGroupNV\">vkCmdBindPipelineShaderGroupNV</a> for further details",
          "page": "vkspec"
        }
      ]
    },
    "VkBindIndexBufferIndirectCommandNV": {
      "core": [
        {
          "vuid": "VUID-VkBindIndexBufferIndirectCommandNV-None-02946",
          "text": "The buffer&#8217;s usage flag from which the address was acquired <strong class=\"purple\">must</strong> have the <code>VK_BUFFER_USAGE_INDEX_BUFFER_BIT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindIndexBufferIndirectCommandNV-bufferAddress-02947",
          "text": "The <code>bufferAddress</code> <strong class=\"purple\">must</strong> be aligned to the <code>indexType</code> used",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindIndexBufferIndirectCommandNV-None-02948",
          "text": "Each element of the buffer from which the address was acquired and that is non-sparse <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindIndexBufferIndirectCommandNV-indexType-parameter",
          "text": "<code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkBindVertexBufferIndirectCommandNV": {
      "core": [
        {
          "vuid": "VUID-VkBindVertexBufferIndirectCommandNV-None-02949",
          "text": "The buffer&#8217;s usage flag from which the address was acquired <strong class=\"purple\">must</strong> have the <code>VK_BUFFER_USAGE_VERTEX_BUFFER_BIT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindVertexBufferIndirectCommandNV-None-02950",
          "text": "Each element of the buffer from which the address was acquired and that is non-sparse <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        }
      ]
    },
    "VkBindPipelineIndirectCommandNV": {
      "core": [
        {
          "vuid": "VUID-VkBindPipelineIndirectCommandNV-deviceGeneratedComputePipelines-09091",
          "text": "The <a href=\"#features-deviceGeneratedComputePipelines\"><code>VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV</code>::<code>deviceGeneratedComputePipelines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindPipelineIndirectCommandNV-None-09092",
          "text": "The referenced pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindPipelineIndirectCommandNV-None-09093",
          "text": "The referenced pipeline <strong class=\"purple\">must</strong> have been updated with <a href=\"#vkCmdUpdatePipelineIndirectBufferNV\">vkCmdUpdatePipelineIndirectBufferNV</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindPipelineIndirectCommandNV-None-09094",
          "text": "The referenced pipeline&#8217;s address <strong class=\"purple\">must</strong> have been queried with <a href=\"#vkGetPipelineIndirectDeviceAddressNV\">vkGetPipelineIndirectDeviceAddressNV</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkIndirectCommandsLayoutTokenEXT": {
      "core": [
        {
          "vuid": "VUID-VkIndirectCommandsLayoutTokenEXT-offset-11124",
          "text": "<code>offset</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>maxIndirectCommandsTokenOffset</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutTokenEXT-offset-11125",
          "text": "<code>offset</code> <strong class=\"purple\">must</strong> be aligned to <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutTokenEXT-meshShader-11126",
          "text": "If <a href=\"#features-meshShader\"><code>meshShader</code></a> or <a href=\"#features-taskShader\"><code>taskShader</code></a> are not enabled, <code>type</code> <strong class=\"purple\">must</strong> not be <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT</code> <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT</code> or <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutTokenEXT-rayTracingMaintenance1-11128",
          "text": "If <a href=\"#features-rayTracingMaintenance1\"><code>rayTracingMaintenance1</code></a> is not enabled, <code>type</code> <strong class=\"purple\">must</strong> not be <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutTokenEXT-deviceGeneratedCommandsMultiDrawIndirectCount-11129",
          "text": "If <a href=\"#limits-deviceGeneratedCommandsMultiDrawIndirectCount\"><a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>deviceGeneratedCommandsMultiDrawIndirectCount</code></a> is not supported, <code>type</code> <strong class=\"purple\">must</strong> not be <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT</code> or <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutTokenEXT-deviceGeneratedCommandsMultiDrawIndirectCount-11130",
          "text": "If <a href=\"#limits-deviceGeneratedCommandsMultiDrawIndirectCount\"><a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>deviceGeneratedCommandsMultiDrawIndirectCount</code></a> is not supported, <code>type</code> <strong class=\"purple\">must</strong> not be <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutTokenEXT-deviceGeneratedCommandsMultiDrawIndirectCount-11131",
          "text": "If <a href=\"#limits-deviceGeneratedCommandsMultiDrawIndirectCount\"><a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>deviceGeneratedCommandsMultiDrawIndirectCount</code></a> is not supported, <code>type</code> <strong class=\"purple\">must</strong> not be <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutTokenEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutTokenEXT-type-parameter",
          "text": "<code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectCommandsTokenTypeEXT\">VkIndirectCommandsTokenTypeEXT</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutTokenEXT-pPushConstant-parameter",
          "text": "If <code>type</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT</code>, the <code>pPushConstant</code> member of <code>data</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkIndirectCommandsPushConstantTokenEXT\">VkIndirectCommandsPushConstantTokenEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutTokenEXT-pVertexBuffer-parameter",
          "text": "If <code>type</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT</code>, the <code>pVertexBuffer</code> member of <code>data</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkIndirectCommandsVertexBufferTokenEXT\">VkIndirectCommandsVertexBufferTokenEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutTokenEXT-pIndexBuffer-parameter",
          "text": "If <code>type</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT</code>, the <code>pIndexBuffer</code> member of <code>data</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkIndirectCommandsIndexBufferTokenEXT\">VkIndirectCommandsIndexBufferTokenEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutTokenEXT-pExecutionSet-parameter",
          "text": "If <code>type</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT</code>, the <code>pExecutionSet</code> member of <code>data</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkIndirectCommandsExecutionSetTokenEXT\">VkIndirectCommandsExecutionSetTokenEXT</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkIndirectCommandsPushConstantTokenEXT": {
      "core": [
        {
          "vuid": "VUID-VkIndirectCommandsPushConstantTokenEXT-updateRange-11132",
          "text": "<code>updateRange</code> <strong class=\"purple\">must</strong> be contained within the push constant info used by <a href=\"#VkIndirectCommandsLayoutCreateInfoEXT\">VkIndirectCommandsLayoutCreateInfoEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsPushConstantTokenEXT-size-11133",
          "text": "If the token type is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT</code>, the <code>size</code> member of <code>updateRange</code> <strong class=\"purple\">must</strong> be 4",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsPushConstantTokenEXT-updateRange-parameter",
          "text": "<code>updateRange</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkIndirectCommandsVertexBufferTokenEXT": {
      "core": [
        {
          "vuid": "VUID-VkIndirectCommandsVertexBufferTokenEXT-vertexBindingUnit-11134",
          "text": "<code>vertexBindingUnit</code> <strong class=\"purple\">must</strong> be less than the total number of vertex input bindings in use by the current graphics state.",
          "page": "vkspec"
        }
      ]
    },
    "VkIndirectCommandsIndexBufferTokenEXT": {
      "core": [
        {
          "vuid": "VUID-VkIndirectCommandsIndexBufferTokenEXT-mode-11135",
          "text": "<code>mode</code> <strong class=\"purple\">must</strong> be non-zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsIndexBufferTokenEXT-mode-11136",
          "text": "<code>mode</code> <strong class=\"purple\">must</strong> be one of the bits supported in <a href=\"#limits-supportedIndirectCommandsInputModes\"><a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>supportedIndirectCommandsInputModes</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsIndexBufferTokenEXT-mode-parameter",
          "text": "<code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectCommandsInputModeFlagBitsEXT\">VkIndirectCommandsInputModeFlagBitsEXT</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkIndirectCommandsExecutionSetTokenEXT": {
      "core": [
        {
          "vuid": "VUID-VkIndirectCommandsExecutionSetTokenEXT-shaderStages-11137",
          "text": "Each bit in <code>shaderStages</code> <strong class=\"purple\">must</strong> be supported by <a href=\"#limits-supportedIndirectCommandsShaderStagesPipelineBinding\"><a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>supportedIndirectCommandsShaderStagesPipelineBinding</code></a> or <a href=\"#limits-supportedIndirectCommandsShaderStagesShaderBinding\"><a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>supportedIndirectCommandsShaderStagesShaderBinding</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsExecutionSetTokenEXT-type-parameter",
          "text": "<code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectExecutionSetInfoTypeEXT\">VkIndirectExecutionSetInfoTypeEXT</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsExecutionSetTokenEXT-shaderStages-parameter",
          "text": "<code>shaderStages</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsExecutionSetTokenEXT-shaderStages-requiredbitmask",
          "text": "<code>shaderStages</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkIndirectCommandsLayoutTokenNV": {
      "core": [
        {
          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-stream-02951",
          "text": "<code>stream</code> <strong class=\"purple\">must</strong> be smaller than <code>VkIndirectCommandsLayoutCreateInfoNV</code>::<code>streamCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-offset-02952",
          "text": "<code>offset</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</code>::<code>maxIndirectCommandsTokenOffset</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-offset-06888",
          "text": "<code>offset</code> <strong class=\"purple\">must</strong> be aligned to the scalar alignment of <code>tokenType</code> or <code>minIndirectCommandsBufferOffsetAlignment</code>, whichever is lower",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02976",
          "text": "If <code>tokenType</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV</code>, <code>vertexBindingUnit</code> <strong class=\"purple\">must</strong> stay within device supported limits for the appropriate commands",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02977",
          "text": "If <code>tokenType</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV</code>, <code>pushconstantPipelineLayout</code> <strong class=\"purple\">must</strong> be valid",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02978",
          "text": "If <code>tokenType</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV</code>, <code>pushconstantOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02979",
          "text": "If <code>tokenType</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV</code>, <code>pushconstantSize</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02980",
          "text": "If <code>tokenType</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV</code>, <code>pushconstantOffset</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxPushConstantsSize</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02981",
          "text": "If <code>tokenType</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV</code>, <code>pushconstantSize</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPushConstantsSize</code> minus <code>pushconstantOffset</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02982",
          "text": "If <code>tokenType</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV</code>, for each byte in the range specified by <code>pushconstantOffset</code> and <code>pushconstantSize</code> and for each shader stage in <code>pushconstantShaderStageFlags</code>, there <strong class=\"purple\">must</strong> be a push constant range in <code>pushconstantPipelineLayout</code> that includes that byte and that stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02983",
          "text": "If <code>tokenType</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV</code>, for each byte in the range specified by <code>pushconstantOffset</code> and <code>pushconstantSize</code> and for each push constant range that overlaps that byte, <code>pushconstantShaderStageFlags</code> <strong class=\"purple\">must</strong> include all stages in that push constant range&#8217;s <a href=\"#VkPushConstantRange\">VkPushConstantRange</a>::<code>stageFlags</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02984",
          "text": "If <code>tokenType</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV</code>, <code>indirectStateFlags</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-parameter",
          "text": "<code>tokenType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectCommandsTokenTypeNV\">VkIndirectCommandsTokenTypeNV</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-pushconstantPipelineLayout-parameter",
          "text": "If <code>pushconstantPipelineLayout</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pushconstantPipelineLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-pushconstantShaderStageFlags-parameter",
          "text": "<code>pushconstantShaderStageFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-indirectStateFlags-parameter",
          "text": "<code>indirectStateFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkIndirectStateFlagBitsNV\">VkIndirectStateFlagBitsNV</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-pIndexTypes-parameter",
          "text": "If <code>indexTypeCount</code> is not <code>0</code>, <code>pIndexTypes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>indexTypeCount</code> valid <a href=\"#VkIndexType\">VkIndexType</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-pIndexTypeValues-parameter",
          "text": "If <code>indexTypeCount</code> is not <code>0</code>, <code>pIndexTypeValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>indexTypeCount</code> <code>uint32_t</code> values",
          "page": "vkspec"
        }
      ]
    },
    "vkGetGeneratedCommandsMemoryRequirementsEXT": {
      "core": [
        {
          "vuid": "VUID-vkGetGeneratedCommandsMemoryRequirementsEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetGeneratedCommandsMemoryRequirementsEXT-pInfo-parameter",
          "text": "<code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkGeneratedCommandsMemoryRequirementsInfoEXT\">VkGeneratedCommandsMemoryRequirementsInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetGeneratedCommandsMemoryRequirementsEXT-pMemoryRequirements-parameter",
          "text": "<code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements2\">VkMemoryRequirements2</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkGeneratedCommandsMemoryRequirementsInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-maxSequencesCount-11009",
          "text": "<code>maxSequencesCount</code> <strong class=\"purple\">must</strong> be less or equal to <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>maxIndirectSequenceCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-indirectCommandsLayout-11010",
          "text": "If <code>indirectCommandsLayout</code> was created with a token sequence that contained the <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT</code> token, <code>indirectExecutionSet</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-indirectCommandsLayout-11151",
          "text": "If <code>indirectCommandsLayout</code> was created with a token sequence that contained the <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT</code> token, the shader stages used to create the initial shader state of <code>indirectExecutionSet</code> <strong class=\"purple\">must</strong> equal the <a href=\"#VkIndirectCommandsExecutionSetTokenEXT\">VkIndirectCommandsExecutionSetTokenEXT</a>::<code>shaderStages</code> used to create <code>indirectCommandsLayout</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-indirectCommandsLayout-11011",
          "text": "If <code>indirectCommandsLayout</code> was not created with a token sequence that contained the <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT</code> token, <code>indirectExecutionSet</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-maxDrawCount-11146",
          "text": "When not ignored, <span class=\"eq\"><code>maxDrawCount</code> × <code>maxSequenceCount</code></span> <strong class=\"purple\">must</strong> be less than <span class=\"eq\">2^24</span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-indirectExecutionSet-11012",
          "text": "If <code>indirectExecutionSet</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, either     a <a href=\"#VkGeneratedCommandsPipelineInfoEXT\">VkGeneratedCommandsPipelineInfoEXT</a> or a <a href=\"#VkGeneratedCommandsShaderInfoEXT\">VkGeneratedCommandsShaderInfoEXT</a>     <strong class=\"purple\">must</strong> be included in the <code>pNext</code> chain",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-pNext-pNext",
          "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=\"#VkGeneratedCommandsPipelineInfoEXT\">VkGeneratedCommandsPipelineInfoEXT</a> or <a href=\"#VkGeneratedCommandsShaderInfoEXT\">VkGeneratedCommandsShaderInfoEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-indirectExecutionSet-parameter",
          "text": "If <code>indirectExecutionSet</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>indirectExecutionSet</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectExecutionSetEXT\">VkIndirectExecutionSetEXT</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-indirectCommandsLayout-parameter",
          "text": "<code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectCommandsLayoutEXT\">VkIndirectCommandsLayoutEXT</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoEXT-commonparent",
          "text": "Both of <code>indirectCommandsLayout</code>, and <code>indirectExecutionSet</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkGeneratedCommandsPipelineInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkGeneratedCommandsPipelineInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsPipelineInfoEXT-pipeline-parameter",
          "text": "<code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkGeneratedCommandsShaderInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkGeneratedCommandsShaderInfoEXT-pShaders-11127",
          "text": "<code>pShaders</code> <strong class=\"purple\">must</strong> not contain more than one shader object for a given <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsShaderInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsShaderInfoEXT-pShaders-parameter",
          "text": "<code>pShaders</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>shaderCount</code> valid <a href=\"#VkShaderEXT\">VkShaderEXT</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsShaderInfoEXT-shaderCount-arraylength",
          "text": "<code>shaderCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetGeneratedCommandsMemoryRequirementsNV": {
      "core": [
        {
          "vuid": "VUID-vkGetGeneratedCommandsMemoryRequirementsNV-deviceGeneratedCommands-02906",
          "text": "The <a href=\"#features-deviceGeneratedCommands\"><code>VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</code>::<code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetGeneratedCommandsMemoryRequirementsNV-pInfo-09074",
          "text": "If <code>pInfo-&gt;pipelineBindPoint</code> is of type <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, then the <a href=\"#features-deviceGeneratedCompute\"><code>VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV</code>::<code>deviceGeneratedCompute</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetGeneratedCommandsMemoryRequirementsNV-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetGeneratedCommandsMemoryRequirementsNV-pInfo-parameter",
          "text": "<code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkGeneratedCommandsMemoryRequirementsInfoNV\">VkGeneratedCommandsMemoryRequirementsInfoNV</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetGeneratedCommandsMemoryRequirementsNV-pMemoryRequirements-parameter",
          "text": "<code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements2\">VkMemoryRequirements2</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkGeneratedCommandsMemoryRequirementsInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-maxSequencesCount-02907",
          "text": "<code>maxSequencesCount</code> <strong class=\"purple\">must</strong> be less or equal to <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</a>::<code>maxIndirectSequenceCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-pipelineBindPoint-09075",
          "text": "If <code>pipelineBindPoint</code> is of type <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, then <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-pipelineBindPoint-09076",
          "text": "If <code>pipelineBindPoint</code> is of type <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, and the <code>indirectCommandsLayout</code> was not created with a <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV</code> token, then the <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-pipelineBindPoint-09077",
          "text": "If <code>pipelineBindPoint</code> is of type <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, and the <code>indirectCommandsLayout</code> contains a <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV</code> token, then the <code>pipeline</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-pipelineBindPoint-parameter",
          "text": "<code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-pipeline-parameter",
          "text": "If <code>pipeline</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-indirectCommandsLayout-parameter",
          "text": "<code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectCommandsLayoutNV\">VkIndirectCommandsLayoutNV</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-commonparent",
          "text": "Both of <code>indirectCommandsLayout</code>, and <code>pipeline</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPipelineIndirectDeviceAddressNV": {
      "core": [
        {
          "vuid": "VUID-vkGetPipelineIndirectDeviceAddressNV-deviceGeneratedComputePipelines-09078",
          "text": "The <a href=\"#features-deviceGeneratedComputePipelines\"><code>VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV</code>::<code>deviceGeneratedComputePipelines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPipelineIndirectDeviceAddressNV-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPipelineIndirectDeviceAddressNV-pInfo-parameter",
          "text": "<code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineIndirectDeviceAddressInfoNV\">VkPipelineIndirectDeviceAddressInfoNV</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineIndirectDeviceAddressInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkPipelineIndirectDeviceAddressInfoNV-pipelineBindPoint-09079",
          "text": "The provided <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be of type <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineIndirectDeviceAddressInfoNV-pipeline-09080",
          "text": "<code>pipeline</code> <strong class=\"purple\">must</strong> have been created with flag <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code> set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineIndirectDeviceAddressInfoNV-pipeline-09081",
          "text": "<code>pipeline</code> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkComputePipelineIndirectBufferInfoNV\">VkComputePipelineIndirectBufferInfoNV</a> structure specifying a valid address where its metadata will be saved",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineIndirectDeviceAddressInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineIndirectDeviceAddressInfoNV-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineIndirectDeviceAddressInfoNV-pipelineBindPoint-parameter",
          "text": "<code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineIndirectDeviceAddressInfoNV-pipeline-parameter",
          "text": "<code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPipelineIndirectMemoryRequirementsNV": {
      "core": [
        {
          "vuid": "VUID-vkGetPipelineIndirectMemoryRequirementsNV-deviceGeneratedComputePipelines-09082",
          "text": "The <a href=\"#features-deviceGeneratedComputePipelines\"><code>VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV</code>::<code>deviceGeneratedComputePipelines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPipelineIndirectMemoryRequirementsNV-pCreateInfo-09083",
          "text": "<code>pCreateInfo-&gt;flags</code> <strong class=\"purple\">must</strong> include <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPipelineIndirectMemoryRequirementsNV-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPipelineIndirectMemoryRequirementsNV-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkComputePipelineCreateInfo\">VkComputePipelineCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPipelineIndirectMemoryRequirementsNV-pMemoryRequirements-parameter",
          "text": "<code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements2\">VkMemoryRequirements2</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateIndirectExecutionSetEXT": {
      "core": [
        {
          "vuid": "VUID-vkCreateIndirectExecutionSetEXT-deviceGeneratedCommands-11013",
          "text": "The <a href=\"#features-deviceGeneratedCommandsEXT\"><code>VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT</code>::<code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateIndirectExecutionSetEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateIndirectExecutionSetEXT-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkIndirectExecutionSetCreateInfoEXT\">VkIndirectExecutionSetCreateInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateIndirectExecutionSetEXT-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateIndirectExecutionSetEXT-pIndirectExecutionSet-parameter",
          "text": "<code>pIndirectExecutionSet</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkIndirectExecutionSetEXT\">VkIndirectExecutionSetEXT</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkIndirectExecutionSetCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkIndirectExecutionSetCreateInfoEXT-maxIndirectShaderObjectCount-11014",
          "text": "If <code>VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</code>::<code>maxIndirectShaderObjectCount</code> is zero or <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is not enabled <code>type</code> <strong class=\"purple\">must</strong> not be <code>VK_INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectExecutionSetCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectExecutionSetCreateInfoEXT-type-parameter",
          "text": "<code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectExecutionSetInfoTypeEXT\">VkIndirectExecutionSetInfoTypeEXT</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectExecutionSetCreateInfoEXT-pPipelineInfo-parameter",
          "text": "If <code>type</code> is <code>VK_INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT</code>, the <code>pPipelineInfo</code> member of <code>info</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkIndirectExecutionSetPipelineInfoEXT\">VkIndirectExecutionSetPipelineInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectExecutionSetCreateInfoEXT-pShaderInfo-parameter",
          "text": "If <code>type</code> is <code>VK_INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT</code>, the <code>pShaderInfo</code> member of <code>info</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkIndirectExecutionSetShaderInfoEXT\">VkIndirectExecutionSetShaderInfoEXT</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkIndirectExecutionSetPipelineInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkIndirectExecutionSetPipelineInfoEXT-supportedIndirectCommandsShaderStagesPipelineBinding-11015",
          "text": "If <a href=\"#limits-supportedIndirectCommandsShaderStagesPipelineBinding\"><a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>supportedIndirectCommandsShaderStagesPipelineBinding</code></a> does not contain <code>VK_SHADER_STAGE_COMPUTE_BIT</code>, the <code>VkPipelineBindPoint</code> of <code>initialPipeline</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectExecutionSetPipelineInfoEXT-supportedIndirectCommandsShaderStagesPipelineBinding-11016",
          "text": "If <a href=\"#limits-supportedIndirectCommandsShaderStagesPipelineBinding\"><a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>supportedIndirectCommandsShaderStagesPipelineBinding</code></a> does not contain <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>, the <code>VkPipelineBindPoint</code> of <code>initialPipeline</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectExecutionSetPipelineInfoEXT-supportedIndirectCommandsShaderStagesPipelineBinding-11017",
          "text": "If <a href=\"#limits-supportedIndirectCommandsShaderStagesPipelineBinding\"><a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>supportedIndirectCommandsShaderStagesPipelineBinding</code></a> does not contain ray tracing stages, the <code>VkPipelineBindPoint</code> of <code>initialPipeline</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectExecutionSetPipelineInfoEXT-maxPipelineCount-11018",
          "text": "<code>maxPipelineCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</code>::<code>maxIndirectPipelineCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectExecutionSetPipelineInfoEXT-initialPipeline-11019",
          "text": "<code>initialPipeline</code> <strong class=\"purple\">must</strong> not use descriptors of type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectExecutionSetPipelineInfoEXT-initialPipeline-11153",
          "text": "<code>initialPipeline</code> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectExecutionSetPipelineInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectExecutionSetPipelineInfoEXT-initialPipeline-parameter",
          "text": "<code>initialPipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkIndirectExecutionSetShaderInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkIndirectExecutionSetShaderInfoEXT-pInitialShaders-11020",
          "text": "All members of <code>pInitialShaders</code> <strong class=\"purple\">must</strong> have a <code>stage</code> supported by <a href=\"#limits-supportedIndirectCommandsShaderStagesShaderBinding\"><a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>supportedIndirectCommandsShaderStagesShaderBinding</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectExecutionSetShaderInfoEXT-maxShaderCount-11021",
          "text": "<code>maxShaderCount</code> <strong class=\"purple\">must</strong> not be zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectExecutionSetShaderInfoEXT-maxShaderCount-11022",
          "text": "<code>maxShaderCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</code>::<code>maxIndirectShaderObjectCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectExecutionSetShaderInfoEXT-maxShaderCount-11036",
          "text": "<code>maxShaderCount</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>shaderCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectExecutionSetShaderInfoEXT-stage-11023",
          "text": "The <code>stage</code> of each element in the <code>pInitialShaders</code> array <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectExecutionSetShaderInfoEXT-pInitialShaders-11154",
          "text": "Each member of <code>pInitialShaders</code> <strong class=\"purple\">must</strong> have been created with <code>VK_SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectExecutionSetShaderInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectExecutionSetShaderInfoEXT-pInitialShaders-parameter",
          "text": "<code>pInitialShaders</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>shaderCount</code> valid <a href=\"#VkShaderEXT\">VkShaderEXT</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectExecutionSetShaderInfoEXT-pSetLayoutInfos-parameter",
          "text": "If <code>pSetLayoutInfos</code> is not <code>NULL</code>, <code>pSetLayoutInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>shaderCount</code> valid <a href=\"#VkIndirectExecutionSetShaderLayoutInfoEXT\">VkIndirectExecutionSetShaderLayoutInfoEXT</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectExecutionSetShaderInfoEXT-pPushConstantRanges-parameter",
          "text": "If <code>pushConstantRangeCount</code> is not <code>0</code>, <code>pPushConstantRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pushConstantRangeCount</code> valid <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectExecutionSetShaderInfoEXT-shaderCount-arraylength",
          "text": "<code>shaderCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkIndirectExecutionSetShaderLayoutInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkIndirectExecutionSetShaderLayoutInfoEXT-pSetLayouts-11024",
          "text": "All members of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> not contain descriptors of type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectExecutionSetShaderLayoutInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIndirectExecutionSetShaderLayoutInfoEXT-pSetLayouts-parameter",
          "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 or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> handles",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroyIndirectExecutionSetEXT": {
      "core": [
        {
          "vuid": "VUID-vkDestroyIndirectExecutionSetEXT-indirectExecutionSet-11025",
          "text": "All submitted commands that refer to <code>indirectExecutionSet</code> <strong class=\"purple\">must</strong> have completed execution",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyIndirectExecutionSetEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyIndirectExecutionSetEXT-indirectExecutionSet-parameter",
          "text": "If <code>indirectExecutionSet</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>indirectExecutionSet</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectExecutionSetEXT\">VkIndirectExecutionSetEXT</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyIndirectExecutionSetEXT-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyIndirectExecutionSetEXT-indirectExecutionSet-parent",
          "text": "If <code>indirectExecutionSet</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkWriteIndirectExecutionSetPipelineEXT": {
      "core": [
        {
          "vuid": "VUID-VkWriteIndirectExecutionSetPipelineEXT-index-11026",
          "text": "<code>index</code> <strong class=\"purple\">must</strong> be less than the value of <code>VkIndirectExecutionSetPipelineInfoEXT</code>::<code>maxPipelineCount</code> used to create the set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteIndirectExecutionSetPipelineEXT-pipeline-11027",
          "text": "<code>pipeline</code> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteIndirectExecutionSetPipelineEXT-pipeline-11028",
          "text": "The descriptor layout info used to create <code>pipeline</code> <strong class=\"purple\">must</strong> be <a href=\"#descriptorsets-compatibility\">compatible</a> with the descriptor layout info used to create the indirect execution set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteIndirectExecutionSetPipelineEXT-index-11029",
          "text": "<code>index</code> <strong class=\"purple\">must</strong> not be referenced by submitted command buffers",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteIndirectExecutionSetPipelineEXT-pipeline-11030",
          "text": "The shader stages contained in <code>pipeline</code> <strong class=\"purple\">must</strong> be supported by <a href=\"#limits-supportedIndirectCommandsShaderStagesPipelineBinding\"><a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>supportedIndirectCommandsShaderStagesPipelineBinding</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteIndirectExecutionSetPipelineEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteIndirectExecutionSetPipelineEXT-pipeline-parameter",
          "text": "<code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkWriteIndirectExecutionSetShaderEXT": {
      "core": [
        {
          "vuid": "VUID-VkWriteIndirectExecutionSetShaderEXT-index-11031",
          "text": "<code>index</code> <strong class=\"purple\">must</strong> be less than <code>VkIndirectExecutionSetShaderInfoEXT</code>::<code>maxShaderCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteIndirectExecutionSetShaderEXT-shader-11032",
          "text": "<code>shader</code> <strong class=\"purple\">must</strong> have been created with <code>VK_SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteIndirectExecutionSetShaderEXT-pInitialShaders-11033",
          "text": "A shader created with the same <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> <strong class=\"purple\">must</strong> have been passed in the <code>VkIndirectExecutionSetShaderInfoEXT</code>::<code>pInitialShaders</code> array",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteIndirectExecutionSetShaderEXT-index-11034",
          "text": "<code>index</code> <strong class=\"purple\">must</strong> not be in use by submitted command buffers",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteIndirectExecutionSetShaderEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWriteIndirectExecutionSetShaderEXT-shader-parameter",
          "text": "<code>shader</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderEXT\">VkShaderEXT</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "vkUpdateIndirectExecutionSetPipelineEXT": {
      "core": [
        {
          "vuid": "VUID-vkUpdateIndirectExecutionSetPipelineEXT-indirectExecutionSet-11035",
          "text": "<code>indirectExecutionSet</code> <strong class=\"purple\">must</strong> have been created with type <code>VK_INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateIndirectExecutionSetPipelineEXT-executionSetWriteCount-11037",
          "text": "<code>executionSetWriteCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkIndirectExecutionSetPipelineInfoEXT</code>::<code>maxPipelineCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateIndirectExecutionSetPipelineEXT-pExecutionSetWrites-11042",
          "text": "Each element in the <code>pExecutionSetWrites</code> array must have a unique <code>VkWriteIndirectExecutionSetPipelineEXT</code>::<code>index</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateIndirectExecutionSetPipelineEXT-None-11038",
          "text": "Each member of the Indirect Execution Set referenced by the update command <strong class=\"purple\">must</strong> not be in use by the device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateIndirectExecutionSetPipelineEXT-None-11039",
          "text": "The layout of each pipeline in <code>pExecutionSetWrites</code> <strong class=\"purple\">must</strong> be <a href=\"#descriptorsets-compatibility\">compatible</a> with the <code>initialPipeline</code> used to create the Indirect Execution Set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateIndirectExecutionSetPipelineEXT-None-11040",
          "text": "Each pipeline in the Indirect Execution Set <strong class=\"purple\">must</strong> have identically defined static and dynamic state values to the <code>initialPipeline</code> used to create the Indirect Execution Set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateIndirectExecutionSetPipelineEXT-initialPipeline-11147",
          "text": "Each pipeline in the Indirect Execution Set <strong class=\"purple\">must</strong> have identically defined <a href=\"#interfaces-fragmentoutput\">fragment outputs interface</a> to the <code>initialPipeline</code> used to create the Indirect Execution Set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateIndirectExecutionSetPipelineEXT-initialPipeline-11152",
          "text": "Each pipeline in the Indirect Execution Set <strong class=\"purple\">must</strong> match the <code>initialPipeline</code> used to create the Indirect Execution Set in its included shader stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateIndirectExecutionSetPipelineEXT-initialPipeline-11098",
          "text": "Each pipeline in the Indirect Execution Set <strong class=\"purple\">must</strong> match the <code>initialPipeline</code> used to create the Indirect Execution Set in its use of <code>FragDepth</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateIndirectExecutionSetPipelineEXT-initialPipeline-11086",
          "text": "Each pipeline in the Indirect Execution Set <strong class=\"purple\">must</strong> match the <code>initialPipeline</code> used to create the Indirect Execution Set in its use of <code>SampleMask</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateIndirectExecutionSetPipelineEXT-initialPipeline-11085",
          "text": "Each pipeline in the Indirect Execution Set <strong class=\"purple\">must</strong> match the <code>initialPipeline</code> used to create the Indirect Execution Set in its use of <code>StencilExportEXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateIndirectExecutionSetPipelineEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateIndirectExecutionSetPipelineEXT-indirectExecutionSet-parameter",
          "text": "<code>indirectExecutionSet</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectExecutionSetEXT\">VkIndirectExecutionSetEXT</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateIndirectExecutionSetPipelineEXT-pExecutionSetWrites-parameter",
          "text": "<code>pExecutionSetWrites</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>executionSetWriteCount</code> valid <a href=\"#VkWriteIndirectExecutionSetPipelineEXT\">VkWriteIndirectExecutionSetPipelineEXT</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateIndirectExecutionSetPipelineEXT-executionSetWriteCount-arraylength",
          "text": "<code>executionSetWriteCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateIndirectExecutionSetPipelineEXT-indirectExecutionSet-parent",
          "text": "<code>indirectExecutionSet</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkUpdateIndirectExecutionSetShaderEXT": {
      "core": [
        {
          "vuid": "VUID-vkUpdateIndirectExecutionSetShaderEXT-indirectExecutionSet-11041",
          "text": "<code>indirectExecutionSet</code> <strong class=\"purple\">must</strong> have been created with type <code>VK_INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateIndirectExecutionSetShaderEXT-pExecutionSetWrites-11043",
          "text": "Each element in the <code>pExecutionSetWrites</code> array must have a unique <code>VkWriteIndirectExecutionSetShaderEXT</code>::<code>index</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateIndirectExecutionSetShaderEXT-None-11044",
          "text": "Each member of the Indirect Execution Set referenced by the update command <strong class=\"purple\">must</strong> not be in use by the device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateIndirectExecutionSetShaderEXT-pExecutionSetWrites-11140",
          "text": "The descriptor layout of each shader in <code>pExecutionSetWrites</code> <strong class=\"purple\">must</strong> be <a href=\"#descriptorsets-compatibility\">compatible</a> with the initial layout info used to create the Indirect Execution Set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateIndirectExecutionSetShaderEXT-None-11148",
          "text": "Each fragment shader element in the Indirect Execution Set <strong class=\"purple\">must</strong> have identically defined <a href=\"#interfaces-fragmentoutput\">fragment outputs interface</a> to the initial shader state used to create the Indirect Execution Set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateIndirectExecutionSetShaderEXT-FragDepth-11054",
          "text": "Each fragment shader element in the Indirect Execution Set <strong class=\"purple\">must</strong> match the initial shader state used to create the Indirect Execution Set in its use of <code>FragDepth</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateIndirectExecutionSetShaderEXT-SampleMask-11050",
          "text": "Each fragment shader element in the Indirect Execution Set <strong class=\"purple\">must</strong> match the initial shader state used to create the Indirect Execution Set in its use of <code>SampleMask</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateIndirectExecutionSetShaderEXT-StencilExportEXT-11003",
          "text": "Each fragment shader element in the Indirect Execution Set <strong class=\"purple\">must</strong> match the initial shader state used to create the Indirect Execution Set in its use of <code>StencilExportEXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateIndirectExecutionSetShaderEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateIndirectExecutionSetShaderEXT-indirectExecutionSet-parameter",
          "text": "<code>indirectExecutionSet</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectExecutionSetEXT\">VkIndirectExecutionSetEXT</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateIndirectExecutionSetShaderEXT-pExecutionSetWrites-parameter",
          "text": "<code>pExecutionSetWrites</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>executionSetWriteCount</code> valid <a href=\"#VkWriteIndirectExecutionSetShaderEXT\">VkWriteIndirectExecutionSetShaderEXT</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateIndirectExecutionSetShaderEXT-executionSetWriteCount-arraylength",
          "text": "<code>executionSetWriteCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateIndirectExecutionSetShaderEXT-indirectExecutionSet-parent",
          "text": "<code>indirectExecutionSet</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdExecuteGeneratedCommandsNV": {
      "core": [
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-magFilter-04553",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-magFilter-09598",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-mipmapMode-04770",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-mipmapMode-09599",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-unnormalizedCoordinates-09635",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>levelCount</code> and <code>layerCount</code> <strong class=\"purple\">must</strong> be 1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-unnormalizedCoordinates-09636",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_VIEW_TYPE_1D</code> or <code>VK_IMAGE_VIEW_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-06479",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is sampled with <a href=\"#textures-depth-compare-operation\">depth comparison</a>, 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_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02691",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed using atomic operations as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07888",
          "text": "If a <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> descriptor is accessed using atomic operations as a result of this command, then the storage texel buffer&#8217;s <a href=\"#resources-buffer-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02692",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02693",
          "text": "If the <a href=\"#VK_EXT_filter_cubic\">VK_EXT_filter_cubic</a> extension is not enabled and any <a href=\"#VkImageView\">VkImageView</a> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, it <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-filterCubic-02694",
          "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 <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubic</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-filterCubicMinmax-02695",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubicMinmax</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-cubicRangeClamp-09212",
          "text": "If the <a href=\"#features-filter-cubic-range-clamp\"><code>cubicRangeClamp</code></a> feature is not enabled, then 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=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-reductionMode-09213",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with a <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code> as a result of this command <strong class=\"purple\">must</strong> sample with <code>VK_FILTER_CUBIC_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-selectableCubicWeights-09214",
          "text": "If the <a href=\"#features-filter-cubic-weight-selection\"><code>selectableCubicWeights</code></a> feature is not enabled, then 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 href=\"#VkSamplerCubicWeightsCreateInfoQCOM\">VkSamplerCubicWeightsCreateInfoQCOM</a>::<code>cubicWeights</code> equal to <code>VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-flags-02696",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpTypeImage-07027",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being written as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpTypeImage-07028",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being read as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpTypeImage-07029",
          "text": "For any <a href=\"#VkBufferView\">VkBufferView</a> being written as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpTypeImage-07030",
          "text": "Any <a href=\"#VkBufferView\">VkBufferView</a> being read as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code> then the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08600",
          "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08601",
          "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-10068",
          "text": "For each array of resources that is used by <a href=\"#shaders-binding\">a bound shader</a>, the indices used to access members of the array <strong class=\"purple\">must</strong> be less than the descriptor count for the identified binding in the descriptor sets used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-maintenance4-08602",
          "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08114",
          "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08115",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created without <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08116",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08604",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08117",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08119",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkPipeline\">VkPipeline</a> created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08605",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkShaderEXT\">VkShaderEXT</a> created with a <code>VkDescriptorSetLayout</code> that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08606",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is not enabled, a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08608",
          "text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state specified statically in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08609",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <a href=\"#VkImage\">VkImage</a> with a <a href=\"#VkImageView\">VkImageView</a> 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08610",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08611",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08607",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-uniformBuffers-06935",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08612",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-storageBuffers-06936",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>storageBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08613",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-02707",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, any resource accessed by <a href=\"#shaders-binding\">bound shaders</a> <strong class=\"purple\">must</strong> not be a protected resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-06550",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> only be used with <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-ConstOffset-06551",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> not use the <code>ConstOffset</code> and <code>Offset</code> operands",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-viewType-07752",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> match the <code>Dim</code> operand of the <code>OpTypeImage</code> as described in <a href=\"#spirvenv-image-dimensions\">Compatibility Between SPIR-V Image Dimensions and Vulkan ImageView Types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-format-07753",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the <a href=\"#formats-numericformat\">numeric type</a> of the image view&#8217;s <code>format</code> and the <code>Sampled</code> <code>Type</code> operand of the <code>OpTypeImage</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpImageWrite-08795",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with a format other than <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpImageWrite-08796",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with the format <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have four components",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpImageWrite-04469",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the buffer view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-SampledType-04470",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-SampledType-04471",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-SampledType-04472",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-SampledType-04473",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-sparseImageInt64Atomics-04474",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-sparseImageInt64Atomics-04475",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpImageWeightedSampleQCOM-06971",
          "text": "If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpImageWeightedSampleQCOM-06972",
          "text": "If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image 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_2_WEIGHT_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpImageBoxFilterQCOM-06973",
          "text": "If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpImageBlockMatchSSDQCOM-06974",
          "text": "If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpImageBlockMatchSADQCOM-06975",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpImageBlockMatchSADQCOM-06976",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpImageWeightedSampleQCOM-06977",
          "text": "If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpImageWeightedSampleQCOM-06978",
          "text": "If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpImageBlockMatchWindow-09215",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpImageBlockMatchWindow-09216",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s format <strong class=\"purple\">must</strong> be a single-component format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpImageBlockMatchWindow-09217",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07288",
          "text": "Any shader invocation executed by this command <strong class=\"purple\">must</strong> <a href=\"#shaders-termination\">terminate</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-09600",
          "text": "If a descriptor with type equal to any of <code>VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> is accessed as a result of this command, the image subresource identified by that descriptor <strong class=\"purple\">must</strong> be in the image layout identified when the descriptor was written",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-renderPass-02684",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-subpass-02685",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07748",
          "text": "If any shader statically accesses an input attachment, a valid descriptor <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpTypeImage-07468",
          "text": "If any shader executed by this pipeline accesses an <code>OpTypeImage</code> variable with a <code>Dim</code> operand of <code>SubpassData</code>, it <strong class=\"purple\">must</strong> be decorated with an <code>InputAttachmentIndex</code> that corresponds to a valid input attachment in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07469",
          "text": "Input attachment views accessed in a subpass <strong class=\"purple\">must</strong> be created with the same <a href=\"#VkFormat\">VkFormat</a> as the corresponding subpass definition, and be created with a <a href=\"#VkImageView\">VkImageView</a> that is compatible with the attachment referenced by the subpass' <code>pInputAttachments</code>[<code>InputAttachmentIndex</code>] in the currently bound <a href=\"#VkFramebuffer\">VkFramebuffer</a> as specified by <a href=\"#compatibility-inputattachment\">Fragment Input Attachment Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-pDepthInputAttachmentIndex-09595",
          "text": "Input attachment views accessed in a dynamic render pass with a <code>InputAttachmentIndex</code> referenced by <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>, or no <code>InputAttachmentIndex</code> if <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pDepthInputAttachmentIndex</code> or <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pStencilInputAttachmentIndex</code> are <code>NULL</code>, <strong class=\"purple\">must</strong> be created with a <a href=\"#VkImageView\">VkImageView</a> that is compatible with the corresponding color, depth, or stencil attachment in <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-pDepthInputAttachmentIndex-09596",
          "text": "Input attachment views accessed in a dynamic render pass via a shader object <strong class=\"purple\">must</strong> have an <code>InputAttachmentIndex</code> if both <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pDepthInputAttachmentIndex</code> and <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pStencilInputAttachmentIndex</code> are non-<code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-InputAttachmentIndex-09597",
          "text": "If an input attachment view accessed in a dynamic render pass via a shader object has an <code>InputAttachmentIndex</code>, the <code>InputAttachmentIndex</code> <strong class=\"purple\">must</strong> match an index in <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-06537",
          "text": "Memory backing image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be written in any way other than as an attachment by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-09000",
          "text": "If a color attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe <code>VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code> is\nset on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_COLOR_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-09001",
          "text": "If a depth attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe\n<code>VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code>\nis set on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_DEPTH_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-09002",
          "text": "If a stencil attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe\n<code>VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code>\nis set on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_STENCIL_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-09003",
          "text": "If an attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment, storage image, or sampled image by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-06539",
          "text": "If any previously recorded command in the current subpass accessed an image subresource used as an attachment in this subpass in any way other than as an attachment, this command <strong class=\"purple\">must</strong> not write to that image subresource as an attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-06886",
          "text": "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, <a href=\"#fragops-depth-write\">depth writes</a> <strong class=\"purple\">must</strong> be disabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-06887",
          "text": "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back <code>writeMask</code> are not zero, and stencil test is enabled, <a href=\"#fragops-stencil\">all stencil ops</a> <strong class=\"purple\">must</strong> be <code>VK_STENCIL_OP_KEEP</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07831",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT</code> dynamic state enabled then <a href=\"#vkCmdSetViewport\">vkCmdSetViewport</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07832",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR</code> dynamic state enabled then <a href=\"#vkCmdSetScissor\">vkCmdSetScissor</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07833",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_WIDTH</code> dynamic state enabled then <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08617",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08618",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08619",
          "text": "If a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07834",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthBiasEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthBounds\">vkCmdSetDepthBounds</a> or <a href=\"#vkCmdSetDepthBias2EXT\">vkCmdSetDepthBias2EXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07835",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_BLEND_CONSTANTS</code> dynamic state enabled then <a href=\"#vkCmdSetBlendConstants\">vkCmdSetBlendConstants</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08621",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> in the current command buffer set any element of <code>pColorBlendEnables</code> to <code>VK_TRUE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> in the current command buffer set the same element of <code>pColorBlendEquations</code> to a <code>VkColorBlendEquationEXT</code> structure with any <a href=\"#VkBlendFactor\">VkBlendFactor</a> member with a value of <code>VK_BLEND_FACTOR_CONSTANT_COLOR</code>, <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR</code>, <code>VK_BLEND_FACTOR_CONSTANT_ALPHA</code>, or <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA</code>, <a href=\"#vkCmdSetBlendConstants\">vkCmdSetBlendConstants</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07836",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthBoundsTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthBounds\">vkCmdSetDepthBounds</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07837",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilCompareMask\">vkCmdSetStencilCompareMask</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07838",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilWriteMask\">vkCmdSetStencilWriteMask</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07839",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_REFERENCE</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of and <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilReference\">vkCmdSetStencilReference</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-maxMultiviewInstanceIndex-02688",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsEnable-02689",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-06666",
          "text": "If the <code><a href=\"#VK_EXT_sample_locations\">VK_EXT_sample_locations</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07840",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_CULL_MODE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCullMode\">vkCmdSetCullMode</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07841",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_FRONT_FACE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetFrontFace\">vkCmdSetFrontFace</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07843",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, <a href=\"#vkCmdSetDepthTestEnable\">vkCmdSetDepthTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07844",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthWriteEnable\">vkCmdSetDepthWriteEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07845",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_COMPARE_OP</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthCompareOp\">vkCmdSetDepthCompareOp</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07846",
          "text": "If the <a href=\"#features-depthBounds\"><code>depthBounds</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthBoundsTestEnable\">vkCmdSetDepthBoundsTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07847",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetStencilTestEnable\">vkCmdSetStencilTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07848",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_OP</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilOp\">vkCmdSetStencilOp</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-03417",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-scissorCount-03418",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, then <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-03419",
          "text": "If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> and <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08635",
          "text": "If a shader object is bound to any graphics stage, then both <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> and <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-04137",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-04138",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08636",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-04139",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-shadingRateImage-09233",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV</code> and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-shadingRateImage-09234",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08637",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-VkPipelineVieportCreateInfo-04141",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled and a <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> structure chained from <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-VkPipelineVieportCreateInfo-04142",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled and a <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> structure chained from <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07878",
          "text": "If the <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetExclusiveScissorEnableNV\">vkCmdSetExclusiveScissorEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07879",
          "text": "If the <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV</code> dynamic state enabled, and the most recent call to <a href=\"#vkCmdSetExclusiveScissorEnableNV\">vkCmdSetExclusiveScissorEnableNV</a> in the current command buffer set any element of <code>pExclusiveScissorEnables</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetExclusiveScissorNV\">vkCmdSetExclusiveScissorNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-04876",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-04877",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthBiasEnable\">vkCmdSetDepthBiasEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-logicOp-04878",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_LOGIC_OP_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>logicOpEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetLogicOpEXT\">vkCmdSetLogicOpEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-primitiveFragmentShadingRateWithMultipleViewports-04552",
          "text": "If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-primitiveFragmentShadingRateWithMultipleViewports-08642",
          "text": "If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, and any shader object bound to a graphics stage writes to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-blendEnable-04727",
          "text": "If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the <code>blendEnable</code> member of the corresponding element of the <code>pAttachments</code> member of <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08643",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then for each color attachment in the render pass, if the corresponding image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the corresponding member of <code>pColorBlendEnables</code> in the most recent call to <code>vkCmdSetColorBlendEnableEXT</code> in the current command buffer that affected that attachment index <strong class=\"purple\">must</strong> have been <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-multisampledRenderToSingleSampled-07284",
          "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then <code>rasterizationSamples</code> for the currently bound graphics pipeline\n<strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil\nattachments</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08644",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the\ncurrent command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the\nsame as the number of samples for the current render pass color and/or\ndepth/stencil attachments</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08876",
          "text": "If a shader object is bound to any graphics stage, the current render pass instance <strong class=\"purple\">must</strong> have been begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-imageView-06172",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-imageView-06173",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-imageView-06174",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-imageView-06175",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-imageView-06176",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-imageView-06177",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-viewMask-06178",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>viewMask</code> equal to <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>viewMask</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-colorAttachmentCount-06179",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>colorAttachmentCount</code> equal to <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-dynamicRenderingUnusedAttachments-08910",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-dynamicRenderingUnusedAttachments-08912",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-dynamicRenderingUnusedAttachments-08911",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-colorAttachmentCount-09362",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, there is no shader object bound to any graphics stage, and a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>resolveImageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with an image created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value equal to the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-09363",
          "text": "If there is no shader object bound to any graphics stage, the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, and a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with an image created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value equal to the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-09364",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have set the blend enable to <code>VK_FALSE</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-09365",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to <code>VK_SAMPLE_COUNT_1_BIT</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-09366",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have set blend enable to <code>VK_FALSE</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-rasterizationSamples-09367",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to <code>VK_SAMPLE_COUNT_1_BIT</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-09368",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;width</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-09369",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;height</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-pFragmentSize-09370",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;width</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-pFragmentSize-09371",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;height</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07749",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteEnableEXT\">vkCmdSetColorWriteEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08646",
          "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is enabled on the device, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorWriteEnableEXT\">vkCmdSetColorWriteEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-attachmentCount-07750",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code> dynamic state enabled then the <code>attachmentCount</code> parameter of <code>vkCmdSetColorWriteEnableEXT</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>VkPipelineColorBlendStateCreateInfo</code>::<code>attachmentCount</code> of the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08647",
          "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is enabled on the device, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then the <code>attachmentCount</code> parameter of most recent call to <code>vkCmdSetColorWriteEnableEXT</code> in the current command buffer <strong class=\"purple\">must</strong> be greater than or equal to the number of color attachments in the current render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07751",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleEXT\">vkCmdSetDiscardRectangleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command for each discard rectangle in <a href=\"#VkPipelineDiscardRectangleStateCreateInfoEXT\">VkPipelineDiscardRectangleStateCreateInfoEXT</a>::<code>discardRectangleCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07880",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-rasterizerDiscardEnable-09236",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> in the current command buffer set <code>discardRectangleEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDiscardRectangleEXT\">vkCmdSetDiscardRectangleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08648",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07881",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleModeEXT\">vkCmdSetDiscardRectangleModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08649",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> in the current command buffer set <code>discardRectangleEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDiscardRectangleModeEXT\">vkCmdSetDiscardRectangleModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-dynamicRenderingUnusedAttachments-08913",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-dynamicRenderingUnusedAttachments-08914",
          "text": "If current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-dynamicRenderingUnusedAttachments-08915",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline was not equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>, the value of the format <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-dynamicRenderingUnusedAttachments-08916",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-dynamicRenderingUnusedAttachments-08917",
          "text": "If current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-dynamicRenderingUnusedAttachments-08918",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline was not equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>, the value of the format <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-imageView-06183",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a>::<code>imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-imageView-06184",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingFragmentDensityMapAttachmentInfoEXT\">VkRenderingFragmentDensityMapAttachmentInfoEXT</a>::<code>imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-colorAttachmentCount-06185",
          "text": "If the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the corresponding element of the <code>pColorAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-pDepthAttachment-06186",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-pStencilAttachment-06187",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-multisampledRenderToSingleSampled-07285",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     the current render pass instance was begun with     <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than     <code>0</code>, then each element of the     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a     <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been     created with a sample count equal to the value of     <code>rasterizationSamples</code> for the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-multisampledRenderToSingleSampled-07286",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not     <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the     currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count     used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-multisampledRenderToSingleSampled-07287",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not     <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the     currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count     used to create     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-pNext-07935",
          "text": "If this command has been called inside a render pass instance started with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and the <code>pNext</code> chain of <a href=\"#VkRenderingInfo\">VkRenderingInfo</a> includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a>::<code>rasterizationSamples</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-renderPass-06198",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>renderPass</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-pColorAttachments-08963",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound with a fragment shader that statically writes to a color attachment, the color write mask is not zero, color writes are enabled, and the corresponding element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-pDepthAttachment-08964",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound, depth test is enabled, depth write is enabled, and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-pStencilAttachment-08965",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound, stencil test is enabled and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-primitivesGeneratedQueryWithRasterizerDiscard-06708",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithRasterizerDiscard\"><code>primitivesGeneratedQueryWithRasterizerDiscard</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, <a href=\"#primsrast-discard\">rasterization discard</a> <strong class=\"purple\">must</strong> not be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-primitivesGeneratedQueryWithNonZeroStreams-06709",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, the bound graphics pipeline <strong class=\"purple\">must</strong> not have been created with a non-zero value in <code>VkPipelineRasterizationStateStreamCreateInfoEXT</code>::<code>rasterizationStream</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07619",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetTessellationDomainOriginEXT\">vkCmdSetTessellationDomainOriginEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07620",
          "text": "If the <a href=\"#features-depthClamp\"><code>depthClamp</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthClampEnableEXT\">vkCmdSetDepthClampEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07621",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_POLYGON_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07622",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07623",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-alphaToCoverageEnable-08919",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic state enabled, and <code>alphaToCoverageEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-alphaToCoverageEnable-08920",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a> in the current command buffer set <code>alphaToCoverageEnable</code> to <code>VK_TRUE</code>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07624",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07625",
          "text": "If the <a href=\"#features-alphaToOne\"><code>alphaToOne</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAlphaToOneEnableEXT\">vkCmdSetAlphaToOneEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07626",
          "text": "If the <a href=\"#features-logicOp\"><code>logicOp</code></a> feature is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLogicOpEnableEXT\">vkCmdSetLogicOpEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07627",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08657",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07628",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08658",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> for any attachment set that attachment&#8217;s value in <code>pColorBlendEnables</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07629",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08659",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07630",
          "text": "If the <a href=\"#features-geometryStreams\"><code>geometryStreams</code></a> feature is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizationStreamEXT\">vkCmdSetRasterizationStreamEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07631",
          "text": "If the <code><a href=\"#VK_EXT_conservative_rasterization\">VK_EXT_conservative_rasterization</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetConservativeRasterizationModeEXT\">vkCmdSetConservativeRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07632",
          "text": "If the <code><a href=\"#VK_EXT_conservative_rasterization\">VK_EXT_conservative_rasterization</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>conservativeRasterizationMode</code> is <code>VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT</code>, then <a href=\"#vkCmdSetExtraPrimitiveOverestimationSizeEXT\">vkCmdSetExtraPrimitiveOverestimationSizeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07633",
          "text": "If the <a href=\"#features-depthClipEnable\"><code>depthClipEnable</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT</code> dynamic state, then <a href=\"#vkCmdSetDepthClipEnableEXT\">vkCmdSetDepthClipEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07634",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08664",
          "text": "If the <code><a href=\"#VK_EXT_sample_locations\">VK_EXT_sample_locations</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07635",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-rasterizerDiscardEnable-09416",
          "text": "If the <code><a href=\"#VK_EXT_blend_operation_advanced\">VK_EXT_blend_operation_advanced</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then at least one of <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> and <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07636",
          "text": "If the <code><a href=\"#VK_EXT_provoking_vertex\">VK_EXT_provoking_vertex</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetProvokingVertexModeEXT\">vkCmdSetProvokingVertexModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07637",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08666",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08667",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08668",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07638",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08669",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08670",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08671",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07849",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_KHR</code>     dynamic state enabled then <a href=\"#vkCmdSetLineStippleKHR\">vkCmdSetLineStippleKHR</a>     <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing     command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08672",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> in the current command buffer set <code>stippledLineEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetLineStippleEXT\">vkCmdSetLineStippleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07639",
          "text": "If the <a href=\"#features-depthClipControl\"><code>depthClipControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetDepthClipNegativeOneToOneEXT\">vkCmdSetDepthClipNegativeOneToOneEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-09650",
          "text": "If the <a href=\"#features-depthClampControl\"><code>depthClampControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthClampEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthClampRangeEXT\">vkCmdSetDepthClampRangeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07640",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07641",
          "text": "If the <code><a href=\"#VK_NV_viewport_swizzle\">VK_NV_viewport_swizzle</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07642",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07643",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageToColorEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07644",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageModulationModeNV\">vkCmdSetCoverageModulationModeNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07645",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageModulationMode</code> is any value other than <code>VK_COVERAGE_MODULATION_MODE_NONE_NV</code>, then <a href=\"#vkCmdSetCoverageModulationTableEnableNV\">vkCmdSetCoverageModulationTableEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07646",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageModulationTableEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetCoverageModulationTableNV\">vkCmdSetCoverageModulationTableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07647",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-pipelineFragmentShadingRate-09238",
          "text": "If the <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a> feature is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07648",
          "text": "If the <a href=\"#features-representativeFragmentTest\"><code>representativeFragmentTest</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetRepresentativeFragmentTestEnableNV\">vkCmdSetRepresentativeFragmentTestEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07649",
          "text": "If the <a href=\"#features-coverageReductionMode\"><code>coverageReductionMode</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageReductionModeNV\">vkCmdSetCoverageReductionModeNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-pColorBlendEnables-07470",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> state enabled and the last call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> set <code>pColorBlendEnables</code> for any attachment to <code>VK_TRUE</code>, then for those attachments in the subpass the corresponding 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_BLEND_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-rasterizationSamples-07471",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> follow the rules for a <a href=\"#renderpass-noattachments\">zero-attachment subpass</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-samples-07472",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, then the <code>samples</code> parameter in the last call to <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> be greater or equal to the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a>::<code>rasterizationSamples</code> parameter used to create the bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-samples-07473",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> state and <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> states enabled, then the <code>samples</code> parameter in the last call to <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> be greater or equal to the <code>rasterizationSamples</code> parameter in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-rasterizationSamples-07474",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and neither the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> nor the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extensions are enabled, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil attachments",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-09211",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, or a shader object is bound to any graphics stage, and the current render pass instance includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> be the same as the <code>rasterizationSamples</code> member of that structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-firstAttachment-07476",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEnableEXT</code> calls <strong class=\"purple\">must</strong> specify an enable for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-rasterizerDiscardEnable-09417",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEnableEXT</code> calls <strong class=\"purple\">must</strong> specify an enable for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-firstAttachment-07477",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEquationEXT</code> calls <strong class=\"purple\">must</strong> specify the blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-rasterizerDiscardEnable-09418",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEquationEXT</code> calls <strong class=\"purple\">must</strong> specify the blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-firstAttachment-07478",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorWriteMaskEXT</code> calls <strong class=\"purple\">must</strong> specify the color write mask for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-rasterizerDiscardEnable-09419",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorWriteMaskEXT</code> calls <strong class=\"purple\">must</strong> specify the color write mask for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-firstAttachment-07479",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendAdvancedEXT</code> calls <strong class=\"purple\">must</strong> specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-advancedBlendMaxColorAttachments-07480",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> and <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic states enabled and the last calls to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> and <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> have enabled advanced blending, then the number of active color attachments in the current subpass <strong class=\"purple\">must</strong> not exceed <a href=\"#limits-advancedBlendMaxColorAttachments\"><code>advancedBlendMaxColorAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-primitivesGeneratedQueryWithNonZeroStreams-07481",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, and the bound graphics pipeline was created with <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code> state enabled, the last call to <a href=\"#vkCmdSetRasterizationStreamEXT\">vkCmdSetRasterizationStreamEXT</a> <strong class=\"purple\">must</strong> have set the <code>rasterizationStream</code> to zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsPerPixel-07482",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsPerPixel-07483",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsEnable-07484",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsEnable-07485",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, then the <code>sampleLocationsInfo.sampleLocationGridSize.width</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsEnable-07486",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, then the <code>sampleLocationsInfo.sampleLocationGridSize.height</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsEnable-07487",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, the fragment shader code <strong class=\"purple\">must</strong> not statically use the extended instruction <code>InterpolateAtSample</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsEnable-07936",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <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 the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsEnable-07937",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <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 the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsEnable-07938",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-coverageModulationTableEnable-07488",
          "text": "If a shader object is bound to any graphics stage or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code> state enabled, and the last call to <a href=\"#vkCmdSetCoverageModulationTableEnableNV\">vkCmdSetCoverageModulationTableEnableNV</a> set <code>coverageModulationTableEnable</code> to <code>VK_TRUE</code>, then the <code>coverageModulationTableCount</code> parameter in the last call to <a href=\"#vkCmdSetCoverageModulationTableNV\">vkCmdSetCoverageModulationTableNV</a> <strong class=\"purple\">must</strong> equal the current <code>rasterizationSamples</code> divided by the number of color samples in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-rasterizationSamples-07489",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current <code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be the same as the sample count of the depth/stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-coverageToColorEnable-07490",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> state enabled and the last call to <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> set the <code>coverageToColorEnable</code> to <code>VK_TRUE</code>, then the current subpass <strong class=\"purple\">must</strong> have a color attachment at the location selected by the last call to <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-rasterizerDiscardEnable-09420",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the last call to <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> set the <code>coverageToColorEnable</code> to <code>VK_TRUE</code>, then the current subpass <strong class=\"purple\">must</strong> have a color attachment at the location selected by the last call to <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-coverageReductionMode-07491",
          "text": "If this <code><a href=\"#VK_NV_coverage_reduction_mode\">VK_NV_coverage_reduction_mode</a></code> extension is enabled, the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> and <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> states enabled, the current coverage reduction mode <code>coverageReductionMode</code>, then the current <code>rasterizationSamples</code>, and the sample counts for the color and depth/stencil attachments (if the subpass has them) <strong class=\"purple\">must</strong> be a valid combination returned by <a href=\"#vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV\">vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-07492",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-07493",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-09421",
          "text": "If the <code><a href=\"#VK_NV_viewport_swizzle\">VK_NV_viewport_swizzle</a></code> extension is enabled, and a shader object is bound to any graphics stage, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-rasterizationSamples-07494",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, and if the current subpass has any color attachments and <code>rasterizationSamples</code> of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> is greater than the number of color samples, then the pipeline <code>sampleShadingEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-stippledLineEnable-07495",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-stippledLineEnable-07496",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR</code>, then the <a href=\"#features-stippledBresenhamLines\"><code>stippledBresenhamLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-stippledLineEnable-07497",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR</code>, then the <a href=\"#features-stippledSmoothLines\"><code>stippledSmoothLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-stippledLineEnable-07498",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_DEFAULT_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled and <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>strictLines</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-conservativePointAndLineRasterization-07499",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code> dynamic state enabled, <a href=\"#limits-conservativePointAndLineRasterization\"><code>conservativePointAndLineRasterization</code></a> is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the <code>conservativeRasterizationMode</code> set by the last call to <a href=\"#vkCmdSetConservativeRasterizationModeEXT\">vkCmdSetConservativeRasterizationModeEXT</a> <strong class=\"purple\">must</strong> be <code>VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-stage-07073",
          "text": "If the currently bound pipeline was created with the <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a>::<code>stage</code> member of an element of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> set to <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>, then <a href=\"#queries-mesh-shader\">Mesh Shader Queries</a> <strong class=\"purple\">must</strong> not be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08877",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07850",
          "text": "If dynamic state was inherited from <a href=\"#VkCommandBufferInheritanceViewportScissorInfoNV\">VkCommandBufferInheritanceViewportScissorInfoNV</a>, it <strong class=\"purple\">must</strong> be set in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08684",
          "text": "If there is no bound graphics pipeline, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_VERTEX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08685",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08686",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08687",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08688",
          "text": "If there is no bound graphics pipeline, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08689",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TASK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08690",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08693",
          "text": "If there is no bound graphics pipeline, and at least one of the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features is enabled, one of the <code>VK_SHADER_STAGE_VERTEX_BIT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stages <strong class=\"purple\">must</strong> have a valid <code>VkShaderEXT</code> bound, and the other <strong class=\"purple\">must</strong> have no <code>VkShaderEXT</code> bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08694",
          "text": "If there is no bound graphics pipeline, and both the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features are enabled, and a valid <code>VkShaderEXT</code> is bound the to the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage, and that <code>VkShaderEXT</code> was created without the <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> flag, a valid <code>VkShaderEXT</code> <strong class=\"purple\">must</strong> be bound to the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08695",
          "text": "If there is no bound graphics pipeline, and both the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features are enabled, and a valid <code>VkShaderEXT</code> is bound the to the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage, and that <code>VkShaderEXT</code> was created with the <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> flag, there <strong class=\"purple\">must</strong> be no <code>VkShaderEXT</code> bound to the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08696",
          "text": "If there is no bound graphics pipeline, and a valid <code>VkShaderEXT</code> is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, there <strong class=\"purple\">must</strong> be no <code>VkShaderEXT</code> bound to either the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage or the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08698",
          "text": "If any graphics shader is bound which was created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag, then all shaders created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag in the same <a href=\"#vkCreateShadersEXT\">vkCreateShadersEXT</a> call <strong class=\"purple\">must</strong> also be bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08699",
          "text": "If any graphics shader is bound which was created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag, any stages in between stages whose shaders which did not create a shader with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag as part of the same <a href=\"#vkCreateShadersEXT\">vkCreateShadersEXT</a> call <strong class=\"purple\">must</strong> not have any <code>VkShaderEXT</code> bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08878",
          "text": "All bound graphics shader objects <strong class=\"purple\">must</strong> have been created with identical or identically defined push constant ranges",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08879",
          "text": "All bound graphics shader objects <strong class=\"purple\">must</strong> have been created with identical or identically defined arrays of descriptor set layouts",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-colorAttachmentCount-09372",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, and a fragment shader is bound, it <strong class=\"purple\">must</strong> not declare the <code>DepthReplacing</code> or <code>StencilRefReplacingEXT</code> execution modes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-pDynamicStates-08715",
          "text": "If the bound graphics pipeline state includes a fragment shader stage, was created with <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpDepthAttachmentReadEXT</code>, the <code>depthWriteEnable</code> parameter in the last call to <a href=\"#vkCmdSetDepthWriteEnable\">vkCmdSetDepthWriteEnable</a> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-pDynamicStates-08716",
          "text": "If the bound graphics pipeline state includes a fragment shader stage, was created with <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpStencilAttachmentReadEXT</code>, the <code>writeMask</code> parameter in the last call to <a href=\"#vkCmdSetStencilWriteMask\">vkCmdSetStencilWriteMask</a> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-09116",
          "text": "If     a shader object is bound to any graphics stage or     the currently bound graphics pipeline was created with     <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code>,     and the format of any color attachment is     <code>VK_FORMAT_E5B9G9R9_UFLOAT_PACK32</code>, the corresponding element of the     <code>pColorWriteMasks</code> parameter of <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a>     <strong class=\"purple\">must</strong> either include all of <code>VK_COLOR_COMPONENT_R_BIT</code>,     <code>VK_COLOR_COMPONENT_G_BIT</code>, and <code>VK_COLOR_COMPONENT_B_BIT</code>, or     none of them",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-maxFragmentDualSrcAttachments-09239",
          "text": "If <a href=\"#framebuffer-blending\">blending</a> is enabled for any attachment where either the source or destination blend factors for that attachment <a href=\"#framebuffer-dsb\">use the secondary color input</a>, the maximum value of <code>Location</code> for any output attachment <a href=\"#shaders-staticuse\">statically used</a> in the <code>Fragment</code> <code>Execution</code> <code>Model</code> executed by this command <strong class=\"purple\">must</strong> be less than <a href=\"#limits-maxFragmentDualSrcAttachments\"><code>maxFragmentDualSrcAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-09548",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and there is no shader object bound to any graphics stage, the value of each element of <a href=\"#VkRenderingAttachmentLocationInfoKHR\">VkRenderingAttachmentLocationInfoKHR</a>::<code>pColorAttachmentLocations</code> set by <a href=\"#vkCmdSetRenderingAttachmentLocationsKHR\">vkCmdSetRenderingAttachmentLocationsKHR</a> <strong class=\"purple\">must</strong> match the value set for the corresponding element in the currently bound pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-09549",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and there is no shader object bound to any graphics stage, input attachment index mappings in the currently bound pipeline <strong class=\"purple\">must</strong> match those set for the current render pass instance via <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-09642",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with the <code>VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT</code> flag, the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-09643",
          "text": "If the bound graphics pipeline was created with <code>VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT</code>, the current render pass <strong class=\"purple\">must</strong> have begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with the <code>VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT</code> flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-04007",
          "text": "All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> buffers bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-04008",
          "text": "If the <a href=\"#features-nullDescriptor\"><code>nullDescriptor</code></a> feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02721",
          "text": "If <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> is not enabled, and that pipeline was created without enabling <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> for <code>vertexInputs</code>, then 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07842",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY</code> dynamic state enabled     then <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> <strong class=\"purple\">must</strong> have been called and not     subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current     command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-dynamicPrimitiveTopologyUnrestricted-07500",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY</code> dynamic state enabled and the <a href=\"#limits-dynamicPrimitiveTopologyUnrestricted\"><code>dynamicPrimitiveTopologyUnrestricted</code></a> is <code>VK_FALSE</code>, then the <code>primitiveTopology</code> parameter of <code>vkCmdSetPrimitiveTopology</code> <strong class=\"purple\">must</strong> be of the same <a href=\"#drawing-primitive-topology-class\">topology class</a> as the pipeline <a href=\"#VkPipelineInputAssemblyStateCreateInfo\">VkPipelineInputAssemblyStateCreateInfo</a>::<code>topology</code> state",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-pStrides-04913",
          "text": "If the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE</code> dynamic state enabled, but without the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdBindVertexBuffers2\">vkCmdBindVertexBuffers2</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this draw command, and the <code>pStrides</code> parameter of <a href=\"#vkCmdBindVertexBuffers2\">vkCmdBindVertexBuffers2</a> <strong class=\"purple\">must</strong> not be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-04914",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     then <a href=\"#vkCmdSetVertexInputEXT\">vkCmdSetVertexInputEXT</a> <strong class=\"purple\">must</strong> have been called and not     subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current     command buffer prior to this draw command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-Input-07939",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     then all variables with the <code>Input</code> storage class decorated with     <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code>     <strong class=\"purple\">must</strong> contain a location in     <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>location</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-Input-08734",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     and either <a href=\"#features-legacyVertexAttributes\"><code>legacyVertexAttributes</code></a> is not enabled or the SPIR-V Type     associated with a given <code>Input</code> variable of the corresponding     <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code> is     64-bit,     then the numeric type associated with all <code>Input</code> variables of the     corresponding <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code>     <code>OpEntryPoint</code> <strong class=\"purple\">must</strong> be the same as     <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>format</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-format-08936",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     and <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>format</code> has a     64-bit component, then the scalar width associated with all <code>Input</code>     variables of the corresponding <code>Location</code> in the <code>Vertex</code>     <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code> <strong class=\"purple\">must</strong> be 64-bit",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-format-08937",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     and the scalar width associated with a <code>Location</code> decorated     <code>Input</code> variable in the <code>Vertex</code> <code>Execution</code> <code>Model</code>     <code>OpEntryPoint</code> is 64-bit, then the corresponding     <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>format</code> <strong class=\"purple\">must</strong> have a     64-bit component",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-09203",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_EXT</code> dynamic state enabled     and <a href=\"#VkVertexInputAttributeDescription2EXT\">VkVertexInputAttributeDescription2EXT</a>::<code>format</code> has a     64-bit component, then all <code>Input</code> variables at the corresponding     <code>Location</code> in the <code>Vertex</code> <code>Execution</code> <code>Model</code> <code>OpEntryPoint</code>     <strong class=\"purple\">must</strong> not use components that are not present in the format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-04875",
          "text": "If     there is a shader object bound to the     <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT</code> dynamic state enabled,     and the <a href=\"#dynamic-state-current-value\">current value</a> of     <code>primitiveTopology</code> is <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, then     <a href=\"#vkCmdSetPatchControlPointsEXT\">vkCmdSetPatchControlPointsEXT</a> <strong class=\"purple\">must</strong> have been called and not     subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current     command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-04879",
          "text": "If     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE</code> dynamic state enabled     then <a href=\"#vkCmdSetPrimitiveRestartEnable\">vkCmdSetPrimitiveRestartEnable</a> <strong class=\"purple\">must</strong> have been called and not     subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current     command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-09637",
          "text": "If     the <a href=\"#features-primitiveTopologyListRestart\"><code>primitiveTopologyListRestart</code></a> feature is not enabled,     the topology 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>, or     <code>VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY</code>,     there is a shader object bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code>     stage or     the bound graphics pipeline state was created with the     <code>VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE</code> dynamic state enabled     then <a href=\"#vkCmdSetPrimitiveRestartEnable\">vkCmdSetPrimitiveRestartEnable</a> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-stage-06481",
          "text": "The bound graphics pipeline <strong class=\"purple\">must</strong> not have been created with the <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a>::<code>stage</code> member of an element of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> set to <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08885",
          "text": "There <strong class=\"purple\">must</strong> be no shader object bound to either of the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-02970",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-isPreprocessed-02908",
          "text": "If <code>isPreprocessed</code> is <code>VK_TRUE</code> then <a href=\"#vkCmdPreprocessGeneratedCommandsNV\">vkCmdPreprocessGeneratedCommandsNV</a> <strong class=\"purple\">must</strong> have already been executed on the device, using the same <code>pGeneratedCommandsInfo</code> content as well as the content of the input buffers it references (all except <a href=\"#VkGeneratedCommandsInfoNV\">VkGeneratedCommandsInfoNV</a>::<code>preprocessBuffer</code>). Furthermore <code>pGeneratedCommandsInfo</code>`s <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-pipeline-02909",
          "text": "<a href=\"#VkGeneratedCommandsInfoNV\">VkGeneratedCommandsInfoNV</a>::<code>pipeline</code> <strong class=\"purple\">must</strong> match the current bound pipeline at <a href=\"#VkGeneratedCommandsInfoNV\">VkGeneratedCommandsInfoNV</a>::<code>pipelineBindPoint</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02910",
          "text": "Transform feedback <strong class=\"purple\">must</strong> not be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-deviceGeneratedCommands-02911",
          "text": "The <a href=\"#features-deviceGeneratedCommands\"><code>VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</code>::<code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-pGeneratedCommandsInfo-parameter",
          "text": "<code>pGeneratedCommandsInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkGeneratedCommandsInfoNV\">VkGeneratedCommandsInfoNV</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkGeneratedCommandsInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkGeneratedCommandsInfoNV-pipeline-02912",
          "text": "The provided <code>pipeline</code> <strong class=\"purple\">must</strong> match the pipeline bound at execution time",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoNV-indirectCommandsLayout-02913",
          "text": "If the <code>indirectCommandsLayout</code> uses a token of <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV</code>, then the <code>pipeline</code> <strong class=\"purple\">must</strong> have been created with multiple shader groups",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoNV-indirectCommandsLayout-02914",
          "text": "If the <code>indirectCommandsLayout</code> uses a token of <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV</code>, then the <code>pipeline</code> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code> set in <code>VkGraphicsPipelineCreateInfo</code>::<code>flags</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoNV-indirectCommandsLayout-02915",
          "text": "If the <code>indirectCommandsLayout</code> uses a token of <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV</code>, then the <code>pipeline</code>&#8217;s <code>VkPipelineLayout</code> <strong class=\"purple\">must</strong> match the <a href=\"#VkIndirectCommandsLayoutTokenNV\">VkIndirectCommandsLayoutTokenNV</a>::<code>pushconstantPipelineLayout</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoNV-streamCount-02916",
          "text": "<code>streamCount</code> <strong class=\"purple\">must</strong> match the <code>indirectCommandsLayout</code>&#8217;s <code>streamCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoNV-pipelineBindPoint-09084",
          "text": "If <code>pipelineBindPoint</code> is of type <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, then the <code>pipeline</code> <strong class=\"purple\">must</strong> have been created with the flag <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoNV-pipelineBindPoint-09085",
          "text": "If <code>pipelineBindPoint</code> is of type <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, then the <code>pipeline</code> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkComputePipelineIndirectBufferInfoNV\">VkComputePipelineIndirectBufferInfoNV</a> structure specifying a valid address where its metadata will be saved",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoNV-pipelineBindPoint-09086",
          "text": "If <code>pipelineBindPoint</code> is of type <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, then <a href=\"#vkCmdUpdatePipelineIndirectBufferNV\">vkCmdUpdatePipelineIndirectBufferNV</a> <strong class=\"purple\">must</strong> have been called on that pipeline to save its metadata to a device address",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoNV-pipelineBindPoint-09087",
          "text": "If <code>pipelineBindPoint</code> is of type <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, and if <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV</code> is used, then <code>pipeline</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesCount-02917",
          "text": "<code>sequencesCount</code> <strong class=\"purple\">must</strong> be less or equal to <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</a>::<code>maxIndirectSequenceCount</code> and <a href=\"#VkGeneratedCommandsMemoryRequirementsInfoNV\">VkGeneratedCommandsMemoryRequirementsInfoNV</a>::<code>maxSequencesCount</code> that was used to determine the <code>preprocessSize</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoNV-preprocessBuffer-02918",
          "text": "<code>preprocessBuffer</code> <strong class=\"purple\">must</strong> have the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set in its usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoNV-preprocessOffset-02919",
          "text": "<code>preprocessOffset</code> <strong class=\"purple\">must</strong> be aligned to <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</a>::<code>minIndirectCommandsBufferOffsetAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoNV-preprocessBuffer-02971",
          "text": "If <code>preprocessBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoNV-preprocessSize-02920",
          "text": "<code>preprocessSize</code> <strong class=\"purple\">must</strong> be at least equal to the memory requirement`s size returned by <a href=\"#vkGetGeneratedCommandsMemoryRequirementsNV\">vkGetGeneratedCommandsMemoryRequirementsNV</a> using the matching inputs (<code>indirectCommandsLayout</code>, &#8230;&#8203;) as within this structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesCountBuffer-02921",
          "text": "<code>sequencesCountBuffer</code> <strong class=\"purple\">can</strong> be set if the actual used count of sequences is sourced from the provided buffer. In that case the <code>sequencesCount</code> serves as upper bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesCountBuffer-02922",
          "text": "If <code>sequencesCountBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, its usage flag <strong class=\"purple\">must</strong> have the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesCountBuffer-02923",
          "text": "If <code>sequencesCountBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>sequencesCountOffset</code> <strong class=\"purple\">must</strong> be aligned to <code>VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</code>::<code>minSequencesCountBufferOffsetAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesCountBuffer-02972",
          "text": "If <code>sequencesCountBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesIndexBuffer-02924",
          "text": "If <code>indirectCommandsLayout</code>&#8217;s <code>VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV</code> is set, <code>sequencesIndexBuffer</code> <strong class=\"purple\">must</strong> be set otherwise it <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesIndexBuffer-02925",
          "text": "If <code>sequencesIndexBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, its usage flag <strong class=\"purple\">must</strong> have the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesIndexBuffer-02926",
          "text": "If <code>sequencesIndexBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>sequencesIndexOffset</code> <strong class=\"purple\">must</strong> be aligned to <code>VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</code>::<code>minSequencesIndexBufferOffsetAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesIndexBuffer-02973",
          "text": "If <code>sequencesIndexBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoNV-indirectCommandsLayout-07078",
          "text": "If the <code>indirectCommandsLayout</code> uses a token of <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV</code>, then the <code>pipeline</code> <strong class=\"purple\">must</strong> contain a shader stage using the <code>MeshNV</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoNV-indirectCommandsLayout-07079",
          "text": "If the <code>indirectCommandsLayout</code> uses a token of <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV</code>, then the <code>pipeline</code> <strong class=\"purple\">must</strong> contain a shader stage using the <code>MeshEXT</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoNV-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoNV-pipelineBindPoint-parameter",
          "text": "<code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoNV-pipeline-parameter",
          "text": "If <code>pipeline</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoNV-indirectCommandsLayout-parameter",
          "text": "<code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectCommandsLayoutNV\">VkIndirectCommandsLayoutNV</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoNV-pStreams-parameter",
          "text": "<code>pStreams</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>streamCount</code> valid <a href=\"#VkIndirectCommandsStreamNV\">VkIndirectCommandsStreamNV</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoNV-preprocessBuffer-parameter",
          "text": "<code>preprocessBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesCountBuffer-parameter",
          "text": "If <code>sequencesCountBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>sequencesCountBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesIndexBuffer-parameter",
          "text": "If <code>sequencesIndexBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>sequencesIndexBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoNV-streamCount-arraylength",
          "text": "<code>streamCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoNV-commonparent",
          "text": "Each of <code>indirectCommandsLayout</code>, <code>pipeline</code>, <code>preprocessBuffer</code>, <code>sequencesCountBuffer</code>, and <code>sequencesIndexBuffer</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdPreprocessGeneratedCommandsNV": {
      "core": [
        {
          "vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-commandBuffer-02974",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-pGeneratedCommandsInfo-02927",
          "text": "<code>pGeneratedCommandsInfo</code>`s <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-deviceGeneratedCommands-02928",
          "text": "The <a href=\"#features-deviceGeneratedCommands\"><code>VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</code>::<code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-pGeneratedCommandsInfo-parameter",
          "text": "<code>pGeneratedCommandsInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkGeneratedCommandsInfoNV\">VkGeneratedCommandsInfoNV</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdExecuteGeneratedCommandsEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-magFilter-04553",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-magFilter-09598",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-mipmapMode-04770",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-mipmapMode-09599",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-unnormalizedCoordinates-09635",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>levelCount</code> and <code>layerCount</code> <strong class=\"purple\">must</strong> be 1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-unnormalizedCoordinates-09636",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_VIEW_TYPE_1D</code> or <code>VK_IMAGE_VIEW_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-06479",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is sampled with <a href=\"#textures-depth-compare-operation\">depth comparison</a>, 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_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-02691",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed using atomic operations as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07888",
          "text": "If a <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> descriptor is accessed using atomic operations as a result of this command, then the storage texel buffer&#8217;s <a href=\"#resources-buffer-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-02692",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-02693",
          "text": "If the <a href=\"#VK_EXT_filter_cubic\">VK_EXT_filter_cubic</a> extension is not enabled and any <a href=\"#VkImageView\">VkImageView</a> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, it <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-filterCubic-02694",
          "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 <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubic</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-filterCubicMinmax-02695",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubicMinmax</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-cubicRangeClamp-09212",
          "text": "If the <a href=\"#features-filter-cubic-range-clamp\"><code>cubicRangeClamp</code></a> feature is not enabled, then 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=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-reductionMode-09213",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with a <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code> as a result of this command <strong class=\"purple\">must</strong> sample with <code>VK_FILTER_CUBIC_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-selectableCubicWeights-09214",
          "text": "If the <a href=\"#features-filter-cubic-weight-selection\"><code>selectableCubicWeights</code></a> feature is not enabled, then 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 href=\"#VkSamplerCubicWeightsCreateInfoQCOM\">VkSamplerCubicWeightsCreateInfoQCOM</a>::<code>cubicWeights</code> equal to <code>VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-flags-02696",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-OpTypeImage-07027",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being written as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-OpTypeImage-07028",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being read as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-OpTypeImage-07029",
          "text": "For any <a href=\"#VkBufferView\">VkBufferView</a> being written as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-OpTypeImage-07030",
          "text": "Any <a href=\"#VkBufferView\">VkBufferView</a> being read as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code> then the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08600",
          "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08601",
          "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-10068",
          "text": "For each array of resources that is used by <a href=\"#shaders-binding\">a bound shader</a>, the indices used to access members of the array <strong class=\"purple\">must</strong> be less than the descriptor count for the identified binding in the descriptor sets used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-maintenance4-08602",
          "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08114",
          "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08115",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created without <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08116",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08604",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08117",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08119",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkPipeline\">VkPipeline</a> created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08605",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkShaderEXT\">VkShaderEXT</a> created with a <code>VkDescriptorSetLayout</code> that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08606",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is not enabled, a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08608",
          "text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state specified statically in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08609",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <a href=\"#VkImage\">VkImage</a> with a <a href=\"#VkImageView\">VkImageView</a> 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08610",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08611",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08607",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-uniformBuffers-06935",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08612",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-storageBuffers-06936",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>storageBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08613",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-commandBuffer-02707",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, any resource accessed by <a href=\"#shaders-binding\">bound shaders</a> <strong class=\"purple\">must</strong> not be a protected resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-06550",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> only be used with <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-ConstOffset-06551",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> not use the <code>ConstOffset</code> and <code>Offset</code> operands",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-viewType-07752",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> match the <code>Dim</code> operand of the <code>OpTypeImage</code> as described in <a href=\"#spirvenv-image-dimensions\">Compatibility Between SPIR-V Image Dimensions and Vulkan ImageView Types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-format-07753",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the <a href=\"#formats-numericformat\">numeric type</a> of the image view&#8217;s <code>format</code> and the <code>Sampled</code> <code>Type</code> operand of the <code>OpTypeImage</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageWrite-08795",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with a format other than <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageWrite-08796",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with the format <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have four components",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageWrite-04469",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the buffer view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-SampledType-04470",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-SampledType-04471",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-SampledType-04472",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-SampledType-04473",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-sparseImageInt64Atomics-04474",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-sparseImageInt64Atomics-04475",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageWeightedSampleQCOM-06971",
          "text": "If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageWeightedSampleQCOM-06972",
          "text": "If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image 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_2_WEIGHT_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageBoxFilterQCOM-06973",
          "text": "If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageBlockMatchSSDQCOM-06974",
          "text": "If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageBlockMatchSADQCOM-06975",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageBlockMatchSADQCOM-06976",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageWeightedSampleQCOM-06977",
          "text": "If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageWeightedSampleQCOM-06978",
          "text": "If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageBlockMatchWindow-09215",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageBlockMatchWindow-09216",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s format <strong class=\"purple\">must</strong> be a single-component format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-OpImageBlockMatchWindow-09217",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07288",
          "text": "Any shader invocation executed by this command <strong class=\"purple\">must</strong> <a href=\"#shaders-termination\">terminate</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-09600",
          "text": "If a descriptor with type equal to any of <code>VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> is accessed as a result of this command, the image subresource identified by that descriptor <strong class=\"purple\">must</strong> be in the image layout identified when the descriptor was written",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-renderPass-02684",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-subpass-02685",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07748",
          "text": "If any shader statically accesses an input attachment, a valid descriptor <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-OpTypeImage-07468",
          "text": "If any shader executed by this pipeline accesses an <code>OpTypeImage</code> variable with a <code>Dim</code> operand of <code>SubpassData</code>, it <strong class=\"purple\">must</strong> be decorated with an <code>InputAttachmentIndex</code> that corresponds to a valid input attachment in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07469",
          "text": "Input attachment views accessed in a subpass <strong class=\"purple\">must</strong> be created with the same <a href=\"#VkFormat\">VkFormat</a> as the corresponding subpass definition, and be created with a <a href=\"#VkImageView\">VkImageView</a> that is compatible with the attachment referenced by the subpass' <code>pInputAttachments</code>[<code>InputAttachmentIndex</code>] in the currently bound <a href=\"#VkFramebuffer\">VkFramebuffer</a> as specified by <a href=\"#compatibility-inputattachment\">Fragment Input Attachment Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-pDepthInputAttachmentIndex-09595",
          "text": "Input attachment views accessed in a dynamic render pass with a <code>InputAttachmentIndex</code> referenced by <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>, or no <code>InputAttachmentIndex</code> if <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pDepthInputAttachmentIndex</code> or <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pStencilInputAttachmentIndex</code> are <code>NULL</code>, <strong class=\"purple\">must</strong> be created with a <a href=\"#VkImageView\">VkImageView</a> that is compatible with the corresponding color, depth, or stencil attachment in <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-pDepthInputAttachmentIndex-09596",
          "text": "Input attachment views accessed in a dynamic render pass via a shader object <strong class=\"purple\">must</strong> have an <code>InputAttachmentIndex</code> if both <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pDepthInputAttachmentIndex</code> and <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>:<code>pStencilInputAttachmentIndex</code> are non-<code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-InputAttachmentIndex-09597",
          "text": "If an input attachment view accessed in a dynamic render pass via a shader object has an <code>InputAttachmentIndex</code>, the <code>InputAttachmentIndex</code> <strong class=\"purple\">must</strong> match an index in <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-06537",
          "text": "Memory backing image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be written in any way other than as an attachment by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-09000",
          "text": "If a color attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe <code>VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code> is\nset on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_COLOR_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-09001",
          "text": "If a depth attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe\n<code>VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code>\nis set on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_DEPTH_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-09002",
          "text": "If a stencil attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it is not in the <code>VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT</code> image layout, and either:<div class=\"ulist\">\n<ul>\n<li>\n<p>\nthe\n<code>VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT</code>\nis set on the currently bound pipeline\nor</p>\n</li>\n<li>\n<p>the last call to <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> included\n<code>VK_IMAGE_ASPECT_STENCIL_BIT</code> and</p>\n<div class=\"ulist\">\n<ul>\n<li>\n<p>there is no currently bound graphics pipeline or</p>\n</li>\n<li>\n<p>the currently bound graphics pipeline was created with\n<code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code></p>\n</li>\n</ul>\n</div>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this\ncommand</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-09003",
          "text": "If an attachment is written by any prior command in this subpass or by the load, store, or resolve operations for this subpass, it <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment, storage image, or sampled image by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-06539",
          "text": "If any previously recorded command in the current subpass accessed an image subresource used as an attachment in this subpass in any way other than as an attachment, this command <strong class=\"purple\">must</strong> not write to that image subresource as an attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-06886",
          "text": "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, <a href=\"#fragops-depth-write\">depth writes</a> <strong class=\"purple\">must</strong> be disabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-06887",
          "text": "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back <code>writeMask</code> are not zero, and stencil test is enabled, <a href=\"#fragops-stencil\">all stencil ops</a> <strong class=\"purple\">must</strong> be <code>VK_STENCIL_OP_KEEP</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07831",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT</code> dynamic state enabled then <a href=\"#vkCmdSetViewport\">vkCmdSetViewport</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07832",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR</code> dynamic state enabled then <a href=\"#vkCmdSetScissor\">vkCmdSetScissor</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07833",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_WIDTH</code> dynamic state enabled then <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08617",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08618",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08619",
          "text": "If a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, <a href=\"#vkCmdSetLineWidth\">vkCmdSetLineWidth</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07834",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthBiasEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthBounds\">vkCmdSetDepthBounds</a> or <a href=\"#vkCmdSetDepthBias2EXT\">vkCmdSetDepthBias2EXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07835",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_BLEND_CONSTANTS</code> dynamic state enabled then <a href=\"#vkCmdSetBlendConstants\">vkCmdSetBlendConstants</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08621",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> in the current command buffer set any element of <code>pColorBlendEnables</code> to <code>VK_TRUE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> in the current command buffer set the same element of <code>pColorBlendEquations</code> to a <code>VkColorBlendEquationEXT</code> structure with any <a href=\"#VkBlendFactor\">VkBlendFactor</a> member with a value of <code>VK_BLEND_FACTOR_CONSTANT_COLOR</code>, <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR</code>, <code>VK_BLEND_FACTOR_CONSTANT_ALPHA</code>, or <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA</code>, <a href=\"#vkCmdSetBlendConstants\">vkCmdSetBlendConstants</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07836",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthBoundsTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthBounds\">vkCmdSetDepthBounds</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07837",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilCompareMask\">vkCmdSetStencilCompareMask</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07838",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilWriteMask\">vkCmdSetStencilWriteMask</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07839",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_REFERENCE</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of and <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilReference\">vkCmdSetStencilReference</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-maxMultiviewInstanceIndex-02688",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-sampleLocationsEnable-02689",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-06666",
          "text": "If the <code><a href=\"#VK_EXT_sample_locations\">VK_EXT_sample_locations</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07840",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_CULL_MODE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCullMode\">vkCmdSetCullMode</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07841",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_FRONT_FACE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetFrontFace\">vkCmdSetFrontFace</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07843",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, <a href=\"#vkCmdSetDepthTestEnable\">vkCmdSetDepthTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07844",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthWriteEnable\">vkCmdSetDepthWriteEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07845",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_COMPARE_OP</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthCompareOp\">vkCmdSetDepthCompareOp</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07846",
          "text": "If the <a href=\"#features-depthBounds\"><code>depthBounds</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthBoundsTestEnable\">vkCmdSetDepthBoundsTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07847",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetStencilTestEnable\">vkCmdSetStencilTestEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07848",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_STENCIL_OP</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>stencilTestEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetStencilOp\">vkCmdSetStencilOp</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-viewportCount-03417",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-scissorCount-03418",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, then <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-viewportCount-03419",
          "text": "If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> and <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08635",
          "text": "If a shader object is bound to any graphics stage, then both <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> and <a href=\"#vkCmdSetScissorWithCount\">vkCmdSetScissorWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-viewportCount-04137",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-viewportCount-04138",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08636",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>viewportWScalingEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-viewportCount-04139",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-shadingRateImage-09233",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV</code> and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoarseSampleOrderNV\">vkCmdSetCoarseSampleOrderNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-shadingRateImage-09234",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08637",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-VkPipelineVieportCreateInfo-04141",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled and a <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> structure chained from <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-VkPipelineVieportCreateInfo-04142",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled and a <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> structure chained from <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07878",
          "text": "If the <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetExclusiveScissorEnableNV\">vkCmdSetExclusiveScissorEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07879",
          "text": "If the <a href=\"#features-exclusiveScissor\"><code>exclusiveScissor</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV</code> dynamic state enabled, and the most recent call to <a href=\"#vkCmdSetExclusiveScissorEnableNV\">vkCmdSetExclusiveScissorEnableNV</a> in the current command buffer set any element of <code>pExclusiveScissorEnables</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetExclusiveScissorNV\">vkCmdSetExclusiveScissorNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-04876",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-04877",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthBiasEnable\">vkCmdSetDepthBiasEnable</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-logicOp-04878",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_LOGIC_OP_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>logicOpEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetLogicOpEXT\">vkCmdSetLogicOpEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-primitiveFragmentShadingRateWithMultipleViewports-04552",
          "text": "If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-primitiveFragmentShadingRateWithMultipleViewports-08642",
          "text": "If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, and any shader object bound to a graphics stage writes to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-blendEnable-04727",
          "text": "If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the <code>blendEnable</code> member of the corresponding element of the <code>pAttachments</code> member of <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08643",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then for each color attachment in the render pass, if the corresponding image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> do not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>, then the corresponding member of <code>pColorBlendEnables</code> in the most recent call to <code>vkCmdSetColorBlendEnableEXT</code> in the current command buffer that affected that attachment index <strong class=\"purple\">must</strong> have been <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-multisampledRenderToSingleSampled-07284",
          "text": "If rasterization is not disabled in the bound graphics pipeline, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then <code>rasterizationSamples</code> for the currently bound graphics pipeline\n<strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil\nattachments</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08644",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and none of the following is enabled:<div class=\"ulist\">\n<ul>\n<li>\n<p>the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension</p>\n</li>\n<li>\n<p>the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then the most recent call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> in the\ncurrent command buffer <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to be the\nsame as the number of samples for the current render pass color and/or\ndepth/stencil attachments</p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08876",
          "text": "If a shader object is bound to any graphics stage, the current render pass instance <strong class=\"purple\">must</strong> have been begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-imageView-06172",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-imageView-06173",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-imageView-06174",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-imageView-06175",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-imageView-06176",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pDepthAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pDepthAttachment</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the depth attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-imageView-06177",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <code>imageView</code> member of <code>pStencilAttachment</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the <code>layout</code> member of <code>pStencilAttachment</code> is <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>, this command <strong class=\"purple\">must</strong> not write any values to the stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-viewMask-06178",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>viewMask</code> equal to <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>viewMask</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-colorAttachmentCount-06179",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>colorAttachmentCount</code> equal to <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-dynamicRenderingUnusedAttachments-08910",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-dynamicRenderingUnusedAttachments-08912",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound pipeline equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-dynamicRenderingUnusedAttachments-08911",
          "text": "If the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with an <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> equal to the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the currently bound graphics pipeline, or the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code>, if it exists, <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-colorAttachmentCount-09362",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, there is no shader object bound to any graphics stage, and a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>resolveImageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with an image created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value equal to the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-09363",
          "text": "If there is no shader object bound to any graphics stage, the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, and a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with an image created with a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value equal to the <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-09364",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have set the blend enable to <code>VK_FALSE</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-09365",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to <code>VK_SAMPLE_COUNT_1_BIT</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-09366",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have set blend enable to <code>VK_FALSE</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizationSamples-09367",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have set <code>rasterizationSamples</code> to <code>VK_SAMPLE_COUNT_1_BIT</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-09368",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;width</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-09369",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is no shader object bound to any graphics stage, and the currently bound graphics pipeline was created with a non-zero <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>::<code>externalFormat</code> value and with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;height</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-pFragmentSize-09370",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;width</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-pFragmentSize-09371",
          "text": "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code> resolve mode, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have set <code>pFragmentSize-&gt;height</code> to <code>1</code> prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07749",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteEnableEXT\">vkCmdSetColorWriteEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08646",
          "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is enabled on the device, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorWriteEnableEXT\">vkCmdSetColorWriteEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-attachmentCount-07750",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT</code> dynamic state enabled then the <code>attachmentCount</code> parameter of <code>vkCmdSetColorWriteEnableEXT</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>VkPipelineColorBlendStateCreateInfo</code>::<code>attachmentCount</code> of the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08647",
          "text": "If the <a href=\"#features-colorWriteEnable\"><code>colorWriteEnable</code></a> feature is enabled on the device, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then the <code>attachmentCount</code> parameter of most recent call to <code>vkCmdSetColorWriteEnableEXT</code> in the current command buffer <strong class=\"purple\">must</strong> be greater than or equal to the number of color attachments in the current render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07751",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleEXT\">vkCmdSetDiscardRectangleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command for each discard rectangle in <a href=\"#VkPipelineDiscardRectangleStateCreateInfoEXT\">VkPipelineDiscardRectangleStateCreateInfoEXT</a>::<code>discardRectangleCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07880",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizerDiscardEnable-09236",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> in the current command buffer set <code>discardRectangleEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDiscardRectangleEXT\">vkCmdSetDiscardRectangleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08648",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07881",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetDiscardRectangleModeEXT\">vkCmdSetDiscardRectangleModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08649",
          "text": "If the <code><a href=\"#VK_EXT_discard_rectangles\">VK_EXT_discard_rectangles</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetDiscardRectangleEnableEXT\">vkCmdSetDiscardRectangleEnableEXT</a> in the current command buffer set <code>discardRectangleEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDiscardRectangleModeEXT\">vkCmdSetDiscardRectangleModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-dynamicRenderingUnusedAttachments-08913",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-dynamicRenderingUnusedAttachments-08914",
          "text": "If current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-dynamicRenderingUnusedAttachments-08915",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the currently bound graphics pipeline was not equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>, the value of the format <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-dynamicRenderingUnusedAttachments-08916",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-dynamicRenderingUnusedAttachments-08917",
          "text": "If current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is not enabled, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-dynamicRenderingUnusedAttachments-08918",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the <a href=\"#features-dynamicRenderingUnusedAttachments\"><code>dynamicRenderingUnusedAttachments</code></a> feature is enabled, <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the value of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the currently bound graphics pipeline was not equal to the <a href=\"#VkFormat\">VkFormat</a> used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>, the value of the format <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-imageView-06183",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingFragmentShadingRateAttachmentInfoKHR\">VkRenderingFragmentShadingRateAttachmentInfoKHR</a>::<code>imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-imageView-06184",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and <a href=\"#VkRenderingFragmentDensityMapAttachmentInfoEXT\">VkRenderingFragmentDensityMapAttachmentInfoEXT</a>::<code>imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-colorAttachmentCount-06185",
          "text": "If the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than <code>0</code>, then each element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been created with a sample count equal to the corresponding element of the <code>pColorAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-pDepthAttachment-06186",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-pStencilAttachment-06187",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline was created with a <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> structure, and <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a> used to create the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-multisampledRenderToSingleSampled-07285",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     the current render pass instance was begun with     <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with a     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> parameter greater than     <code>0</code>, then each element of the     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments</code> array with a     <code>imageView</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> have been     created with a sample count equal to the value of     <code>rasterizationSamples</code> for the currently bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-multisampledRenderToSingleSampled-07286",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not     <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the     currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count     used to create <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-multisampledRenderToSingleSampled-07287",
          "text": "If     the currently bound pipeline was created without a     <a href=\"#VkAttachmentSampleCountInfoAMD\">VkAttachmentSampleCountInfoAMD</a> or     <a href=\"#VkAttachmentSampleCountInfoNV\">VkAttachmentSampleCountInfoNV</a>     structure, and     the <a href=\"#features-multisampledRenderToSingleSampled\"><code>multisampledRenderToSingleSampled</code></a> feature is not enabled, and     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not     <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>rasterizationSamples</code> for the     currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to the sample count     used to create     <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-pNext-07935",
          "text": "If this command has been called inside a render pass instance started with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and the <code>pNext</code> chain of <a href=\"#VkRenderingInfo\">VkRenderingInfo</a> includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the value of <code>rasterizationSamples</code> for the currently bound graphics pipeline <strong class=\"purple\">must</strong> be equal to <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a>::<code>rasterizationSamples</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-renderPass-06198",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, the currently bound pipeline <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>renderPass</code> equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-pColorAttachments-08963",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound with a fragment shader that statically writes to a color attachment, the color write mask is not zero, color writes are enabled, and the corresponding element of the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pColorAttachments-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the corresponding element of <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>pColorAttachmentFormats</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-pDepthAttachment-08964",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound, depth test is enabled, depth write is enabled, and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pDepthAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>depthAttachmentFormat</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-pStencilAttachment-08965",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, there is a graphics pipeline bound, stencil test is enabled and the <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>pStencilAttachment-&gt;imageView</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the <a href=\"#VkPipelineRenderingCreateInfo\">VkPipelineRenderingCreateInfo</a>::<code>stencilAttachmentFormat</code> used to create the pipeline <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-primitivesGeneratedQueryWithRasterizerDiscard-06708",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithRasterizerDiscard\"><code>primitivesGeneratedQueryWithRasterizerDiscard</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, <a href=\"#primsrast-discard\">rasterization discard</a> <strong class=\"purple\">must</strong> not be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-primitivesGeneratedQueryWithNonZeroStreams-06709",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, the bound graphics pipeline <strong class=\"purple\">must</strong> not have been created with a non-zero value in <code>VkPipelineRasterizationStateStreamCreateInfoEXT</code>::<code>rasterizationStream</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07619",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetTessellationDomainOriginEXT\">vkCmdSetTessellationDomainOriginEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07620",
          "text": "If the <a href=\"#features-depthClamp\"><code>depthClamp</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetDepthClampEnableEXT\">vkCmdSetDepthClampEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07621",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_POLYGON_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07622",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07623",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-alphaToCoverageEnable-08919",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic state enabled, and <code>alphaToCoverageEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-alphaToCoverageEnable-08920",
          "text": "If a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a> in the current command buffer set <code>alphaToCoverageEnable</code> to <code>VK_TRUE</code>, then the <a href=\"#interfaces-fragmentoutput\">Fragment Output Interface</a> <strong class=\"purple\">must</strong> contain a variable for the alpha <code>Component</code> word in <code>Location</code> 0 at <code>Index</code> 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07624",
          "text": "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAlphaToCoverageEnableEXT\">vkCmdSetAlphaToCoverageEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07625",
          "text": "If the <a href=\"#features-alphaToOne\"><code>alphaToOne</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAlphaToOneEnableEXT\">vkCmdSetAlphaToOneEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07626",
          "text": "If the <a href=\"#features-logicOp\"><code>logicOp</code></a> feature is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLogicOpEnableEXT\">vkCmdSetLogicOpEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07627",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08657",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07628",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08658",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> for any attachment set that attachment&#8217;s value in <code>pColorBlendEnables</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07629",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08659",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07630",
          "text": "If the <a href=\"#features-geometryStreams\"><code>geometryStreams</code></a> feature is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetRasterizationStreamEXT\">vkCmdSetRasterizationStreamEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07631",
          "text": "If the <code><a href=\"#VK_EXT_conservative_rasterization\">VK_EXT_conservative_rasterization</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetConservativeRasterizationModeEXT\">vkCmdSetConservativeRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07632",
          "text": "If the <code><a href=\"#VK_EXT_conservative_rasterization\">VK_EXT_conservative_rasterization</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>conservativeRasterizationMode</code> is <code>VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT</code>, then <a href=\"#vkCmdSetExtraPrimitiveOverestimationSizeEXT\">vkCmdSetExtraPrimitiveOverestimationSizeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07633",
          "text": "If the <a href=\"#features-depthClipEnable\"><code>depthClipEnable</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT</code> dynamic state, then <a href=\"#vkCmdSetDepthClipEnableEXT\">vkCmdSetDepthClipEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07634",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08664",
          "text": "If the <code><a href=\"#VK_EXT_sample_locations\">VK_EXT_sample_locations</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07635",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizerDiscardEnable-09416",
          "text": "If the <code><a href=\"#VK_EXT_blend_operation_advanced\">VK_EXT_blend_operation_advanced</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then at least one of <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> and <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07636",
          "text": "If the <code><a href=\"#VK_EXT_provoking_vertex\">VK_EXT_provoking_vertex</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetProvokingVertexModeEXT\">vkCmdSetProvokingVertexModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07637",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08666",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08667",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08668",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLineRasterizationModeEXT\">vkCmdSetLineRasterizationModeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07638",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08669",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPolygonModeEXT\">vkCmdSetPolygonModeEXT</a> in the current command buffer set <code>polygonMode</code> to <code>VK_POLYGON_MODE_LINE</code>, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08670",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetPrimitiveTopology\">vkCmdSetPrimitiveTopology</a> in the current command buffer set <code>primitiveTopology</code> to any line topology, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08671",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object that outputs line primitives is bound to the <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code> or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07849",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_KHR</code>     dynamic state enabled then <a href=\"#vkCmdSetLineStippleKHR\">vkCmdSetLineStippleKHR</a>     <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing     command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08672",
          "text": "If the <code><a href=\"#VK_KHR_line_rasterization\">VK_KHR_line_rasterization</a></code> or <code><a href=\"#VK_EXT_line_rasterization\">VK_EXT_line_rasterization</a></code> extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the most recent call to <a href=\"#vkCmdSetLineStippleEnableEXT\">vkCmdSetLineStippleEnableEXT</a> in the current command buffer set <code>stippledLineEnable</code> to <code>VK_TRUE</code>, then <a href=\"#vkCmdSetLineStippleEXT\">vkCmdSetLineStippleEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07639",
          "text": "If the <a href=\"#features-depthClipControl\"><code>depthClipControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetDepthClipNegativeOneToOneEXT\">vkCmdSetDepthClipNegativeOneToOneEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-09650",
          "text": "If the <a href=\"#features-depthClampControl\"><code>depthClampControl</code></a> feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>depthClampEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetDepthClampRangeEXT\">vkCmdSetDepthClampRangeEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07640",
          "text": "If the <code><a href=\"#VK_NV_clip_space_w_scaling\">VK_NV_clip_space_w_scaling</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWScalingEnableNV\">vkCmdSetViewportWScalingEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07641",
          "text": "If the <code><a href=\"#VK_NV_viewport_swizzle\">VK_NV_viewport_swizzle</a></code> extension is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07642",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07643",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageToColorEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07644",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageModulationModeNV\">vkCmdSetCoverageModulationModeNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07645",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageModulationMode</code> is any value other than <code>VK_COVERAGE_MODULATION_MODE_NONE_NV</code>, then <a href=\"#vkCmdSetCoverageModulationTableEnableNV\">vkCmdSetCoverageModulationTableEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07646",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV</code> dynamic state enabled, the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>coverageModulationTableEnable</code> is <code>VK_TRUE</code>, then <a href=\"#vkCmdSetCoverageModulationTableNV\">vkCmdSetCoverageModulationTableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07647",
          "text": "If the <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetShadingRateImageEnableNV\">vkCmdSetShadingRateImageEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-pipelineFragmentShadingRate-09238",
          "text": "If the <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a> feature is enabled, a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetFragmentShadingRateKHR\">vkCmdSetFragmentShadingRateKHR</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07648",
          "text": "If the <a href=\"#features-representativeFragmentTest\"><code>representativeFragmentTest</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetRepresentativeFragmentTestEnableNV\">vkCmdSetRepresentativeFragmentTestEnableNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07649",
          "text": "If the <a href=\"#features-coverageReductionMode\"><code>coverageReductionMode</code></a> feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetCoverageReductionModeNV\">vkCmdSetCoverageReductionModeNV</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-pColorBlendEnables-07470",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> state enabled and the last call to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> set <code>pColorBlendEnables</code> for any attachment to <code>VK_TRUE</code>, then for those attachments in the subpass the corresponding 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_BLEND_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizationSamples-07471",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> follow the rules for a <a href=\"#renderpass-noattachments\">zero-attachment subpass</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-samples-07472",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, then the <code>samples</code> parameter in the last call to <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> be greater or equal to the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a>::<code>rasterizationSamples</code> parameter used to create the bound graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-samples-07473",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_MASK_EXT</code> state and <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> states enabled, then the <code>samples</code> parameter in the last call to <a href=\"#vkCmdSetSampleMaskEXT\">vkCmdSetSampleMaskEXT</a> <strong class=\"purple\">must</strong> be greater or equal to the <code>rasterizationSamples</code> parameter in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizationSamples-07474",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and neither the <code><a href=\"#VK_AMD_mixed_attachment_samples\">VK_AMD_mixed_attachment_samples</a></code> nor the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extensions are enabled, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> be the same as the current subpass color and/or depth/stencil attachments",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-09211",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, or a shader object is bound to any graphics stage, and the current render pass instance includes a <a href=\"#VkMultisampledRenderToSingleSampledInfoEXT\">VkMultisampledRenderToSingleSampledInfoEXT</a> structure with <code>multisampledRenderToSingleSampledEnable</code> equal to <code>VK_TRUE</code>, then the <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> <strong class=\"purple\">must</strong> be the same as the <code>rasterizationSamples</code> member of that structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-firstAttachment-07476",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEnableEXT</code> calls <strong class=\"purple\">must</strong> specify an enable for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizerDiscardEnable-09417",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEnableEXT</code> calls <strong class=\"purple\">must</strong> specify an enable for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-firstAttachment-07477",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEquationEXT</code> calls <strong class=\"purple\">must</strong> specify the blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizerDiscardEnable-09418",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and both the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code> and there are color attachments bound, then <a href=\"#vkCmdSetColorBlendEquationEXT\">vkCmdSetColorBlendEquationEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendEquationEXT</code> calls <strong class=\"purple\">must</strong> specify the blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-firstAttachment-07478",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorWriteMaskEXT</code> calls <strong class=\"purple\">must</strong> specify the color write mask for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizerDiscardEnable-09419",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, then <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorWriteMaskEXT</code> calls <strong class=\"purple\">must</strong> specify the color write mask for all active color attachments in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-firstAttachment-07479",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this drawing command, and the attachments specified by the <code>firstAttachment</code> and <code>attachmentCount</code> parameters of <code>vkCmdSetColorBlendAdvancedEXT</code> calls <strong class=\"purple\">must</strong> specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-advancedBlendMaxColorAttachments-07480",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT</code> and <code>VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT</code> dynamic states enabled and the last calls to <a href=\"#vkCmdSetColorBlendEnableEXT\">vkCmdSetColorBlendEnableEXT</a> and <a href=\"#vkCmdSetColorBlendAdvancedEXT\">vkCmdSetColorBlendAdvancedEXT</a> have enabled advanced blending, then the number of active color attachments in the current subpass <strong class=\"purple\">must</strong> not exceed <a href=\"#limits-advancedBlendMaxColorAttachments\"><code>advancedBlendMaxColorAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-primitivesGeneratedQueryWithNonZeroStreams-07481",
          "text": "If the <a href=\"#features-primitivesGeneratedQueryWithNonZeroStreams\"><code>primitivesGeneratedQueryWithNonZeroStreams</code></a> feature is not enabled and the <code>VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT</code> query is active, and the bound graphics pipeline was created with <code>VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT</code> state enabled, the last call to <a href=\"#vkCmdSetRasterizationStreamEXT\">vkCmdSetRasterizationStreamEXT</a> <strong class=\"purple\">must</strong> have set the <code>rasterizationStream</code> to zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-sampleLocationsPerPixel-07482",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state disabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-sampleLocationsPerPixel-07483",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then the <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> parameter of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-sampleLocationsEnable-07484",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-sampleLocationsEnable-07485",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, then the <code>sampleLocationsInfo.sampleLocationGridSize.width</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-sampleLocationsEnable-07486",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state enabled and the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, then the <code>sampleLocationsInfo.sampleLocationGridSize.height</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEXT\">vkCmdSetSampleLocationsEXT</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-sampleLocationsEnable-07487",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT</code> state enabled, and if <code>sampleLocationsEnable</code> was <code>VK_TRUE</code> in the last call to <a href=\"#vkCmdSetSampleLocationsEnableEXT\">vkCmdSetSampleLocationsEnableEXT</a>, the fragment shader code <strong class=\"purple\">must</strong> not statically use the extended instruction <code>InterpolateAtSample</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-sampleLocationsEnable-07936",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <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 the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-sampleLocationsEnable-07937",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <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 the value of <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-sampleLocationsEnable-07938",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> state disabled and the <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>sampleLocationsEnable</code> is <code>VK_TRUE</code>, then <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code> in the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-coverageModulationTableEnable-07488",
          "text": "If a shader object is bound to any graphics stage or the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV</code> state enabled, and the last call to <a href=\"#vkCmdSetCoverageModulationTableEnableNV\">vkCmdSetCoverageModulationTableEnableNV</a> set <code>coverageModulationTableEnable</code> to <code>VK_TRUE</code>, then the <code>coverageModulationTableCount</code> parameter in the last call to <a href=\"#vkCmdSetCoverageModulationTableNV\">vkCmdSetCoverageModulationTableNV</a> <strong class=\"purple\">must</strong> equal the current <code>rasterizationSamples</code> divided by the number of color samples in the current subpass",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizationSamples-07489",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current <code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be the same as the sample count of the depth/stencil attachment",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-coverageToColorEnable-07490",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> state enabled and the last call to <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> set the <code>coverageToColorEnable</code> to <code>VK_TRUE</code>, then the current subpass <strong class=\"purple\">must</strong> have a color attachment at the location selected by the last call to <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizerDiscardEnable-09420",
          "text": "If the <code><a href=\"#VK_NV_fragment_coverage_to_color\">VK_NV_fragment_coverage_to_color</a></code> extension is enabled, and a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage, and the most recent call to <a href=\"#vkCmdSetRasterizerDiscardEnable\">vkCmdSetRasterizerDiscardEnable</a> in the current command buffer set <code>rasterizerDiscardEnable</code> to <code>VK_FALSE</code>, and the last call to <a href=\"#vkCmdSetCoverageToColorEnableNV\">vkCmdSetCoverageToColorEnableNV</a> set the <code>coverageToColorEnable</code> to <code>VK_TRUE</code>, then the current subpass <strong class=\"purple\">must</strong> have a color attachment at the location selected by the last call to <a href=\"#vkCmdSetCoverageToColorLocationNV\">vkCmdSetCoverageToColorLocationNV</a> <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-coverageReductionMode-07491",
          "text": "If this <code><a href=\"#VK_NV_coverage_reduction_mode\">VK_NV_coverage_reduction_mode</a></code> extension is enabled, the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV</code> and <code>VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT</code> states enabled, the current coverage reduction mode <code>coverageReductionMode</code>, then the current <code>rasterizationSamples</code>, and the sample counts for the color and depth/stencil attachments (if the subpass has them) <strong class=\"purple\">must</strong> be a valid combination returned by <a href=\"#vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV\">vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-viewportCount-07492",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-viewportCount-07493",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-viewportCount-09421",
          "text": "If the <code><a href=\"#VK_NV_viewport_swizzle\">VK_NV_viewport_swizzle</a></code> extension is enabled, and a shader object is bound to any graphics stage, then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportSwizzleNV\">vkCmdSetViewportSwizzleNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCount\">vkCmdSetViewportWithCount</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizationSamples-07494",
          "text": "If the <code><a href=\"#VK_NV_framebuffer_mixed_samples\">VK_NV_framebuffer_mixed_samples</a></code> extension is enabled, and if the current subpass has any color attachments and <code>rasterizationSamples</code> of the last call to <a href=\"#vkCmdSetRasterizationSamplesEXT\">vkCmdSetRasterizationSamplesEXT</a> is greater than the number of color samples, then the pipeline <code>sampleShadingEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-stippledLineEnable-07495",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-stippledLineEnable-07496",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR</code>, then the <a href=\"#features-stippledBresenhamLines\"><code>stippledBresenhamLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-stippledLineEnable-07497",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR</code>, then the <a href=\"#features-stippledSmoothLines\"><code>stippledSmoothLines</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-stippledLineEnable-07498",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT</code> or <code>VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT</code> dynamic states enabled, and if the current <code>stippledLineEnable</code> state is <code>VK_TRUE</code> and the current <code>lineRasterizationMode</code> state is <code>VK_LINE_RASTERIZATION_MODE_DEFAULT_KHR</code>, then the <a href=\"#features-stippledRectangularLines\"><code>stippledRectangularLines</code></a> feature <strong class=\"purple\">must</strong> be enabled and <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>strictLines</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-conservativePointAndLineRasterization-07499",
          "text": "If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT</code> dynamic state enabled, <a href=\"#limits-conservativePointAndLineRasterization\"><code>conservativePointAndLineRasterization</code></a> is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the <code>conservativeRasterizationMode</code> set by the last call to <a href=\"#vkCmdSetConservativeRasterizationModeEXT\">vkCmdSetConservativeRasterizationModeEXT</a> <strong class=\"purple\">must</strong> be <code>VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-stage-07073",
          "text": "If the currently bound pipeline was created with the <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a>::<code>stage</code> member of an element of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> set to <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>, then <a href=\"#queries-mesh-shader\">Mesh Shader Queries</a> <strong class=\"purple\">must</strong> not be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08877",
          "text": "If a shader object is bound to the <code>VK_SHADER_STAGE_FRAGMENT_BIT</code> stage or a graphics pipeline is bound which was created with the <code>VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT</code> dynamic state enabled, and the <a href=\"#dynamic-state-current-value\">current value</a> of <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, then <a href=\"#vkCmdSetAttachmentFeedbackLoopEnableEXT\">vkCmdSetAttachmentFeedbackLoopEnableEXT</a> <strong class=\"purple\">must</strong> have been called and not subsequently <a href=\"#dynamic-state-lifetime\">invalidated</a> in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-07850",
          "text": "If dynamic state was inherited from <a href=\"#VkCommandBufferInheritanceViewportScissorInfoNV\">VkCommandBufferInheritanceViewportScissorInfoNV</a>, it <strong class=\"purple\">must</strong> be set in the current command buffer prior to this drawing command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08684",
          "text": "If there is no bound graphics pipeline, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_VERTEX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08685",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08686",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08687",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-geometryShader\"><code>geometryShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08688",
          "text": "If there is no bound graphics pipeline, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08689",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-taskShader\"><code>taskShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_TASK_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08690",
          "text": "If there is no bound graphics pipeline, and the <a href=\"#features-meshShader\"><code>meshShader</code></a> feature is enabled, <code>vkCmdBindShadersEXT</code> <strong class=\"purple\">must</strong> have been called in the current command buffer with <code>pStages</code> with an element of <code>VK_SHADER_STAGE_MESH_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08693",
          "text": "If there is no bound graphics pipeline, and at least one of the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features is enabled, one of the <code>VK_SHADER_STAGE_VERTEX_BIT</code> or <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stages <strong class=\"purple\">must</strong> have a valid <code>VkShaderEXT</code> bound, and the other <strong class=\"purple\">must</strong> have no <code>VkShaderEXT</code> bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08694",
          "text": "If there is no bound graphics pipeline, and both the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features are enabled, and a valid <code>VkShaderEXT</code> is bound the to the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage, and that <code>VkShaderEXT</code> was created without the <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> flag, a valid <code>VkShaderEXT</code> <strong class=\"purple\">must</strong> be bound to the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08695",
          "text": "If there is no bound graphics pipeline, and both the <a href=\"#features-taskShader\"><code>taskShader</code></a> and <a href=\"#features-meshShader\"><code>meshShader</code></a> features are enabled, and a valid <code>VkShaderEXT</code> is bound the to the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage, and that <code>VkShaderEXT</code> was created with the <code>VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT</code> flag, there <strong class=\"purple\">must</strong> be no <code>VkShaderEXT</code> bound to the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08696",
          "text": "If there is no bound graphics pipeline, and a valid <code>VkShaderEXT</code> is bound to the <code>VK_SHADER_STAGE_VERTEX_BIT</code> stage, there <strong class=\"purple\">must</strong> be no <code>VkShaderEXT</code> bound to either the <code>VK_SHADER_STAGE_TASK_BIT_EXT</code> stage or the <code>VK_SHADER_STAGE_MESH_BIT_EXT</code> stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08698",
          "text": "If any graphics shader is bound which was created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag, then all shaders created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag in the same <a href=\"#vkCreateShadersEXT\">vkCreateShadersEXT</a> call <strong class=\"purple\">must</strong> also be bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08699",
          "text": "If any graphics shader is bound which was created with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag, any stages in between stages whose shaders which did not create a shader with the <code>VK_SHADER_CREATE_LINK_STAGE_BIT_EXT</code> flag as part of the same <a href=\"#vkCreateShadersEXT\">vkCreateShadersEXT</a> call <strong class=\"purple\">must</strong> not have any <code>VkShaderEXT</code> bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08878",
          "text": "All bound graphics shader objects <strong class=\"purple\">must</strong> have been created with identical or identically defined push constant ranges",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-08879",
          "text": "All bound graphics shader objects <strong class=\"purple\">must</strong> have been created with identical or identically defined arrays of descriptor set layouts",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-colorAttachmentCount-09372",
          "text": "If the current render pass instance was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> and a <a href=\"#VkRenderingInfo\">VkRenderingInfo</a>::<code>colorAttachmentCount</code> equal to <code>1</code>, a color attachment with a resolve mode of <code>VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID</code>, and a fragment shader is bound, it <strong class=\"purple\">must</strong> not declare the <code>DepthReplacing</code> or <code>StencilRefReplacingEXT</code> execution modes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-pDynamicStates-08715",
          "text": "If the bound graphics pipeline state includes a fragment shader stage, was created with <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE</code> set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpDepthAttachmentReadEXT</code>, the <code>depthWriteEnable</code> parameter in the last call to <a href=\"#vkCmdSetDepthWriteEnable\">vkCmdSetDepthWriteEnable</a> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-pDynamicStates-08716",
          "text": "If the bound graphics pipeline state includes a fragment shader stage, was created with <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> set in <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a>::<code>pDynamicStates</code>, and the fragment shader declares the <code>EarlyFragmentTests</code> execution mode and uses <code>OpStencilAttachmentReadEXT</code>, the <code>writeMask</code> parameter in the last call to <a href=\"#vkCmdSetStencilWriteMask\">vkCmdSetStencilWriteMask</a> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-09116",
          "text": "If     a shader object is bound to any graphics stage or     the currently bound graphics pipeline was created with     <code>VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT</code>,     and the format of any color attachment is     <code>VK_FORMAT_E5B9G9R9_UFLOAT_PACK32</code>, the corresponding element of the     <code>pColorWriteMasks</code> parameter of <a href=\"#vkCmdSetColorWriteMaskEXT\">vkCmdSetColorWriteMaskEXT</a>     <strong class=\"purple\">must</strong> either include all of <code>VK_COLOR_COMPONENT_R_BIT</code>,     <code>VK_COLOR_COMPONENT_G_BIT</code>, and <code>VK_COLOR_COMPONENT_B_BIT</code>, or     none of them",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-maxFragmentDualSrcAttachments-09239",
          "text": "If <a href=\"#framebuffer-blending\">blending</a> is enabled for any attachment where either the source or destination blend factors for that attachment <a href=\"#framebuffer-dsb\">use the secondary color input</a>, the maximum value of <code>Location</code> for any output attachment <a href=\"#shaders-staticuse\">statically used</a> in the <code>Fragment</code> <code>Execution</code> <code>Model</code> executed by this command <strong class=\"purple\">must</strong> be less than <a href=\"#limits-maxFragmentDualSrcAttachments\"><code>maxFragmentDualSrcAttachments</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-09548",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and there is no shader object bound to any graphics stage, the value of each element of <a href=\"#VkRenderingAttachmentLocationInfoKHR\">VkRenderingAttachmentLocationInfoKHR</a>::<code>pColorAttachmentLocations</code> set by <a href=\"#vkCmdSetRenderingAttachmentLocationsKHR\">vkCmdSetRenderingAttachmentLocationsKHR</a> <strong class=\"purple\">must</strong> match the value set for the corresponding element in the currently bound pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-09549",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a>, and there is no shader object bound to any graphics stage, input attachment index mappings in the currently bound pipeline <strong class=\"purple\">must</strong> match those set for the current render pass instance via <a href=\"#VkRenderingInputAttachmentIndexInfoKHR\">VkRenderingInputAttachmentIndexInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-09642",
          "text": "If the current render pass was begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with the <code>VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT</code> flag, the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-09643",
          "text": "If the bound graphics pipeline was created with <code>VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT</code>, the current render pass <strong class=\"purple\">must</strong> have begun with <a href=\"#vkCmdBeginRendering\">vkCmdBeginRendering</a> with the <code>VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT</code> flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-commandBuffer-11045",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-isPreprocessed-11046",
          "text": "If <code>isPreprocessed</code> is <code>VK_TRUE</code> and <a href=\"#vkGetGeneratedCommandsMemoryRequirementsEXT\">vkGetGeneratedCommandsMemoryRequirementsEXT</a> did not return a required size of zero then <a href=\"#vkCmdPreprocessGeneratedCommandsEXT\">vkCmdPreprocessGeneratedCommandsEXT</a> <strong class=\"purple\">must</strong> have already been executed on the device before this command executes, and the preprocessing command <strong class=\"purple\">must</strong> have used the same <code>pGeneratedCommandsInfo</code> content as well as the content of the input buffers it references (all except <a href=\"#VkGeneratedCommandsInfoEXT\">VkGeneratedCommandsInfoEXT</a>::<code>preprocessBuffer</code>).",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-isPreprocessed-11047",
          "text": "If <code>isPreprocessed</code> is <code>VK_TRUE</code> then the <code>indirectCommandsLayout</code> member of <code>pGeneratedCommandsInfo</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-indirectCommandsLayout-11141",
          "text": "If the <code>indirectCommandsLayout</code> member of <code>pGeneratedCommandsInfo</code> was created with the <code>VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT</code> bit set, then <code>isPreprocessed</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-preprocessAddress-11142",
          "text": "The contents of the <code>preprocessAddress</code> member of <code>pGeneratedCommandsInfo</code> <strong class=\"purple\">must</strong> not have been previously used to record another <a href=\"#vkCmdExecuteGeneratedCommandsEXT\">vkCmdExecuteGeneratedCommandsEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-isPreprocessed-11048",
          "text": "If <code>isPreprocessed</code> is <code>VK_TRUE</code> then the bound descriptor sets and push constants <strong class=\"purple\">must</strong> match identically with those bound during recording of the corresponding call to <a href=\"#vkCmdPreprocessGeneratedCommandsEXT\">vkCmdPreprocessGeneratedCommandsEXT</a>.",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-isPreprocessed-11049",
          "text": "If <code>isPreprocessed</code> is <code>VK_TRUE</code> and the <code>indirectCommandsLayout</code> member of <code>pGeneratedCommandsInfo</code> contains a draw token, then the graphics state bound on <code>commandBuffer</code> <strong class=\"purple\">must</strong> match identically with the graphics state bound on the <code>stateCommandBuffer</code> passed to <a href=\"#vkCmdPreprocessGeneratedCommandsEXT\">vkCmdPreprocessGeneratedCommandsEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-isPreprocessed-11149",
          "text": "If <code>isPreprocessed</code> is <code>VK_TRUE</code>, then the queue family index of <code>commandBuffer</code> <strong class=\"purple\">must</strong> be the same as the queue family index used to allocate the <code>stateCommandBuffer</code> passed to <a href=\"#vkCmdPreprocessGeneratedCommandsEXT\">vkCmdPreprocessGeneratedCommandsEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-isPreprocessed-11051",
          "text": "If <code>isPreprocessed</code> is <code>VK_TRUE</code> and the <code>indirectCommandsLayout</code> member of <code>pGeneratedCommandsInfo</code> contains a dispatch token, then the compute state bound on <code>commandBuffer</code> <strong class=\"purple\">must</strong> match identically with the compute state bound on the <code>stateCommandBuffer</code> passed to <a href=\"#vkCmdPreprocessGeneratedCommandsEXT\">vkCmdPreprocessGeneratedCommandsEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-isPreprocessed-11052",
          "text": "If <code>isPreprocessed</code> is <code>VK_TRUE</code> and the <code>indirectCommandsLayout</code> member of <code>pGeneratedCommandsInfo</code> contains a ray tracing token, then the ray tracing state bound on <code>commandBuffer</code> <strong class=\"purple\">must</strong> match identically with the ray tracing state bound on the <code>stateCommandBuffer</code> passed to <a href=\"#vkCmdPreprocessGeneratedCommandsEXT\">vkCmdPreprocessGeneratedCommandsEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-isPreprocessed-11150",
          "text": "If <code>isPreprocessed</code> is <code>VK_TRUE</code> and the <code>indirectCommandsLayout</code> member of <code>pGeneratedCommandsInfo</code> contains a ray tracing token, the queue family index <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> be the same queue family index used to allocate the <code>stateCommandBuffer</code> passed to <a href=\"#vkCmdPreprocessGeneratedCommandsEXT\">vkCmdPreprocessGeneratedCommandsEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-indirectCommandsLayout-11053",
          "text": "If the token sequence of the passed <a href=\"#VkGeneratedCommandsInfoEXT\">VkGeneratedCommandsInfoEXT</a>::<code>indirectCommandsLayout</code> contains a <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT</code> token, the initial shader state of <a href=\"#VkGeneratedCommandsInfoEXT\">VkGeneratedCommandsInfoEXT</a>::<code>indirectExecutionSet</code> <strong class=\"purple\">must</strong> be bound on <code>commandBuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-indirectCommandsLayout-11004",
          "text": "If <code>indirectCommandsLayout</code> was created with a token sequence that contained the <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT</code> token and <code>indirectExecutionSet</code> was created using <code>VK_INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT</code>, every executed <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT</code> token <strong class=\"purple\">must</strong> bind all the shader stages set in the <a href=\"#VkIndirectCommandsExecutionSetTokenEXT\">VkIndirectCommandsExecutionSetTokenEXT</a>::<code>shaderStages</code> used to create <code>indirectCommandsLayout</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-isPreprocessed-11055",
          "text": "If <code>isPreprocessed</code> is <code>VK_TRUE</code> and the token sequence of the passed <a href=\"#VkGeneratedCommandsInfoEXT\">VkGeneratedCommandsInfoEXT</a>::<code>indirectCommandsLayout</code> contains a <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT</code> token, the members of <a href=\"#VkGeneratedCommandsInfoEXT\">VkGeneratedCommandsInfoEXT</a>::<code>indirectExecutionSet</code> accessed by this command <strong class=\"purple\">must</strong> not have been modified since the preprocess buffer was generated",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-indirectCommandsLayout-11056",
          "text": "If the <code>indirectCommandsLayout</code> member of <code>pGeneratedCommandsInfo</code> contains a draw token, then the active render pass <strong class=\"purple\">must</strong> not have a specified fragment density map",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-deviceGeneratedCommandsTransformFeedback-11057",
          "text": "If <a href=\"#limits-deviceGeneratedCommandsTransformFeedback\"><code>deviceGeneratedCommandsTransformFeedback</code></a> is not supported on device, transform feedback <strong class=\"purple\">must</strong> not be active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-indirectExecutionSet-11058",
          "text": "If transform feedback is active, <a href=\"#VkGeneratedCommandsInfoEXT\">VkGeneratedCommandsInfoEXT</a>::<code>indirectExecutionSet</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-deviceGeneratedCommands-11059",
          "text": "The <a href=\"#features-deviceGeneratedCommandsEXT\"><code>VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT</code>::<code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-supportedIndirectCommandsShaderStages-11060",
          "text": "The currently bound shader stages <strong class=\"purple\">must</strong> be supported by <a href=\"#limits-supportedIndirectCommandsShaderStages\"><a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>supportedIndirectCommandsShaderStages</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-supportedIndirectCommandsShaderStages-11061",
          "text": "Only stages specified in <a href=\"#limits-supportedIndirectCommandsShaderStages\"><a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>supportedIndirectCommandsShaderStages</code></a> <strong class=\"purple\">can</strong> be set in <code>pGeneratedCommandsInfo-&gt;shaderStages</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-None-11062",
          "text": "If a rendering pass is currently active, the view mask <strong class=\"purple\">must</strong> be <code>0</code>.",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-commandBuffer-11143",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> not have been created with <code>VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-pGeneratedCommandsInfo-parameter",
          "text": "<code>pGeneratedCommandsInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkGeneratedCommandsInfoEXT\">VkGeneratedCommandsInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdExecuteGeneratedCommandsEXT-bufferlevel",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkGeneratedCommandsInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkGeneratedCommandsInfoEXT-preprocessAddress-11063",
          "text": "If <a href=\"#vkGetGeneratedCommandsMemoryRequirementsEXT\">vkGetGeneratedCommandsMemoryRequirementsEXT</a> returns a non-zero size, <code>preprocessAddress</code> <strong class=\"purple\">must</strong> not be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoEXT-preprocessAddress-11064",
          "text": "<code>VkDeviceMemory</code> objects bound to the underlying buffer for <code>preprocessAddress</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 by <a href=\"#vkGetGeneratedCommandsMemoryRequirementsEXT\">vkGetGeneratedCommandsMemoryRequirementsEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoEXT-indirectCommandsLayout-11065",
          "text": "If the <code>indirectCommandsLayout</code> uses a token of <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT</code>, then the <code>indirectExecutionSet</code>&#8217;s push constant layout <strong class=\"purple\">must</strong> contain the <code>updateRange</code> specified in <a href=\"#VkIndirectCommandsPushConstantTokenEXT\">VkIndirectCommandsPushConstantTokenEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoEXT-indirectCommandsLayout-11066",
          "text": "If the <code>indirectCommandsLayout</code> uses a token of <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT</code>, then the <code>indirectExecutionSet</code>&#8217;s push constant layout <strong class=\"purple\">must</strong> contain the <code>updateRange</code> specified in <a href=\"#VkIndirectCommandsPushConstantTokenEXT\">VkIndirectCommandsPushConstantTokenEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoEXT-maxSequenceCount-11067",
          "text": "<code>maxSequenceCount</code> <strong class=\"purple\">must</strong> be less or equal to <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>maxIndirectSequenceCount</code> and <a href=\"#VkGeneratedCommandsMemoryRequirementsInfoEXT\">VkGeneratedCommandsMemoryRequirementsInfoEXT</a>::<code>maxSequencesCount</code> that was used to determine the <code>preprocessSize</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoEXT-sequenceCountAddress-11068",
          "text": "If <code>sequenceCountAddress</code> is not <code>NULL</code>, the value contained in the address <strong class=\"purple\">must</strong> be less or equal to <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>maxIndirectSequenceCount</code> and <a href=\"#VkGeneratedCommandsMemoryRequirementsInfoEXT\">VkGeneratedCommandsMemoryRequirementsInfoEXT</a>::<code>maxSequencesCount</code> that was used to determine the <code>preprocessSize</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoEXT-preprocessAddress-11069",
          "text": "The underlying buffer for <code>preprocessAddress</code> <strong class=\"purple\">must</strong> have the <code>VK_BUFFER_USAGE_2_PREPROCESS_BUFFER_BIT_EXT</code> bit set in its usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoEXT-preprocessAddress-11070",
          "text": "If the underlying buffer for <code>preprocessAddress</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoEXT-indirectCommandsLayout-11144",
          "text": "If the <code>indirectCommandsLayout</code> contains a <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT</code> token, then the descriptor and push constant layout info provided either by <code>pipelineLayout</code> or through a <a href=\"#VkPipelineLayoutCreateInfo\">VkPipelineLayoutCreateInfo</a> in <code>pNext</code> of the <a href=\"#VkIndirectCommandsLayoutCreateInfoEXT\">VkIndirectCommandsLayoutCreateInfoEXT</a> used to create <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> be <a href=\"#descriptorsets-compatibility\">compatible</a> with the descriptor and push constant layout info used by <code>indirectExecutionSet</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoEXT-indirectCommandsLayout-11002",
          "text": "If <code>indirectCommandsLayout</code> was created with a token sequence that contained the <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT</code> token, the shader stages used to create the initial shader state of <code>indirectExecutionSet</code> <strong class=\"purple\">must</strong> equal the <a href=\"#VkIndirectCommandsExecutionSetTokenEXT\">VkIndirectCommandsExecutionSetTokenEXT</a>::<code>shaderStages</code> used to create <code>indirectCommandsLayout</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoEXT-preprocessSize-11071",
          "text": "<code>preprocessSize</code> <strong class=\"purple\">must</strong> be greater than or equal to the memory requirement&#8217;s size returned by <a href=\"#vkGetGeneratedCommandsMemoryRequirementsEXT\">vkGetGeneratedCommandsMemoryRequirementsEXT</a> using the matching inputs (<code>indirectCommandsLayout</code>, &#8230;&#8203;) as within this structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoEXT-sequenceCountAddress-11072",
          "text": "The underlying buffer for <code>sequenceCountAddress</code> <strong class=\"purple\">must</strong> have the <code>VK_BUFFER_USAGE_2_PREPROCESS_BUFFER_BIT_EXT</code> bit set in its usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoEXT-sequenceCountAddress-11073",
          "text": "If <code>sequenceCountAddress</code> is not <code>NULL</code>, <code>sequenceCountAddress</code> <strong class=\"purple\">must</strong> be aligned to <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoEXT-indirectAddress-11074",
          "text": "<code>indirectAddress</code> <strong class=\"purple\">must</strong> be aligned to <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoEXT-sequenceCountAddress-11075",
          "text": "If the underlying buffer for <code>sequenceCountAddress</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoEXT-indirectAddress-11076",
          "text": "<code>indirectAddress</code> <strong class=\"purple\">must</strong> not be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoEXT-indirectAddressSize-11077",
          "text": "<code>indirectAddressSize</code> <strong class=\"purple\">must</strong> be greater than zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoEXT-maxDrawCount-11078",
          "text": "When not ignored, <span class=\"eq\"><code>maxDrawCount</code> × <code>maxSequenceCount</code></span> <strong class=\"purple\">must</strong> be less than <span class=\"eq\">2^24</span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoEXT-indirectCommandsLayout-11079",
          "text": "If <code>indirectCommandsLayout</code> was created using a     <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT</code> token and shader objects are not bound     then the currently bound graphics pipeline <strong class=\"purple\">must</strong> have been created with     <code>VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE</code> in     <code>pDynamicStates</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoEXT-indirectCommandsLayout-11083",
          "text": "If the token sequence of the passed <code>indirectCommandsLayout</code> contains a <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT</code> token, the <code>indirectExecutionSet</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoEXT-indirectExecutionSet-11080",
          "text": "If <code>indirectExecutionSet</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, a     <a href=\"#VkGeneratedCommandsPipelineInfoEXT\">VkGeneratedCommandsPipelineInfoEXT</a> or <a href=\"#VkGeneratedCommandsShaderInfoEXT\">VkGeneratedCommandsShaderInfoEXT</a>     <strong class=\"purple\">must</strong> be included in the <code>pNext</code> chain",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoEXT-shaderStages-parameter",
          "text": "<code>shaderStages</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoEXT-shaderStages-requiredbitmask",
          "text": "<code>shaderStages</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoEXT-indirectExecutionSet-parameter",
          "text": "If <code>indirectExecutionSet</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>indirectExecutionSet</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectExecutionSetEXT\">VkIndirectExecutionSetEXT</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoEXT-indirectCommandsLayout-parameter",
          "text": "<code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectCommandsLayoutEXT\">VkIndirectCommandsLayoutEXT</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGeneratedCommandsInfoEXT-commonparent",
          "text": "Both of <code>indirectCommandsLayout</code>, and <code>indirectExecutionSet</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdPreprocessGeneratedCommandsEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdPreprocessGeneratedCommandsEXT-commandBuffer-11081",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPreprocessGeneratedCommandsEXT-pGeneratedCommandsInfo-11082",
          "text": "<code>pGeneratedCommandsInfo</code>&#8217;s <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPreprocessGeneratedCommandsEXT-indirectCommandsLayout-11084",
          "text": "If the token sequence of the passed <a href=\"#VkGeneratedCommandsInfoEXT\">VkGeneratedCommandsInfoEXT</a>::<code>indirectCommandsLayout</code> contains a <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT</code> token, the initial shader state of <a href=\"#VkGeneratedCommandsInfoEXT\">VkGeneratedCommandsInfoEXT</a>::<code>indirectExecutionSet</code> <strong class=\"purple\">must</strong> be bound on <code>stateCommandBuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPreprocessGeneratedCommandsEXT-stateCommandBuffer-11138",
          "text": "<code>stateCommandBuffer</code> <strong class=\"purple\">must</strong> be in the recording state",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPreprocessGeneratedCommandsEXT-deviceGeneratedCommands-11087",
          "text": "The <a href=\"#features-deviceGeneratedCommandsEXT\"><code>VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT</code>::<code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPreprocessGeneratedCommandsEXT-supportedIndirectCommandsShaderStages-11088",
          "text": "Only stages specified in <a href=\"#limits-supportedIndirectCommandsShaderStages\"><a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT</a>::<code>supportedIndirectCommandsShaderStages</code></a> <strong class=\"purple\">can</strong> be set in <code>pGeneratedCommandsInfo-&gt;shaderStages</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPreprocessGeneratedCommandsEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPreprocessGeneratedCommandsEXT-pGeneratedCommandsInfo-parameter",
          "text": "<code>pGeneratedCommandsInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkGeneratedCommandsInfoEXT\">VkGeneratedCommandsInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPreprocessGeneratedCommandsEXT-stateCommandBuffer-parameter",
          "text": "<code>stateCommandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPreprocessGeneratedCommandsEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPreprocessGeneratedCommandsEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPreprocessGeneratedCommandsEXT-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPreprocessGeneratedCommandsEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPreprocessGeneratedCommandsEXT-bufferlevel",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdPreprocessGeneratedCommandsEXT-commonparent",
          "text": "Both of <code>commandBuffer</code>, and <code>stateCommandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceSparseImageFormatProperties": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-samples-01094",
          "text": "<code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-format-parameter",
          "text": "<code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-type-parameter",
          "text": "<code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-samples-parameter",
          "text": "<code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-usage-parameter",
          "text": "<code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-usage-requiredbitmask",
          "text": "<code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-tiling-parameter",
          "text": "<code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-pPropertyCount-parameter",
          "text": "<code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-pProperties-parameter",
          "text": "If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <a href=\"#VkSparseImageFormatProperties\">VkSparseImageFormatProperties</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceSparseImageFormatProperties2": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-pFormatInfo-parameter",
          "text": "<code>pFormatInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPhysicalDeviceSparseImageFormatInfo2\">VkPhysicalDeviceSparseImageFormatInfo2</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-pPropertyCount-parameter",
          "text": "<code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-pProperties-parameter",
          "text": "If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <a href=\"#VkSparseImageFormatProperties2\">VkSparseImageFormatProperties2</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceSparseImageFormatInfo2": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-samples-01095",
          "text": "<code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-format-parameter",
          "text": "<code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-type-parameter",
          "text": "<code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-samples-parameter",
          "text": "<code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-usage-parameter",
          "text": "<code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-usage-requiredbitmask",
          "text": "<code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-tiling-parameter",
          "text": "<code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkSparseImageFormatProperties2": {
      "core": [
        {
          "vuid": "VUID-VkSparseImageFormatProperties2-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSparseImageFormatProperties2-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetImageSparseMemoryRequirements": {
      "core": [
        {
          "vuid": "VUID-vkGetImageSparseMemoryRequirements-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageSparseMemoryRequirements-image-parameter",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageSparseMemoryRequirements-pSparseMemoryRequirementCount-parameter",
          "text": "<code>pSparseMemoryRequirementCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageSparseMemoryRequirements-pSparseMemoryRequirements-parameter",
          "text": "If the value referenced by <code>pSparseMemoryRequirementCount</code> is not <code>0</code>, and <code>pSparseMemoryRequirements</code> is not <code>NULL</code>, <code>pSparseMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pSparseMemoryRequirementCount</code> <a href=\"#VkSparseImageMemoryRequirements\">VkSparseImageMemoryRequirements</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageSparseMemoryRequirements-image-parent",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetImageSparseMemoryRequirements2": {
      "core": [
        {
          "vuid": "VUID-vkGetImageSparseMemoryRequirements2-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageSparseMemoryRequirements2-pInfo-parameter",
          "text": "<code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImageSparseMemoryRequirementsInfo2\">VkImageSparseMemoryRequirementsInfo2</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageSparseMemoryRequirements2-pSparseMemoryRequirementCount-parameter",
          "text": "<code>pSparseMemoryRequirementCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetImageSparseMemoryRequirements2-pSparseMemoryRequirements-parameter",
          "text": "If the value referenced by <code>pSparseMemoryRequirementCount</code> is not <code>0</code>, and <code>pSparseMemoryRequirements</code> is not <code>NULL</code>, <code>pSparseMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pSparseMemoryRequirementCount</code> <a href=\"#VkSparseImageMemoryRequirements2\">VkSparseImageMemoryRequirements2</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "vkGetDeviceImageSparseMemoryRequirements": {
      "core": [
        {
          "vuid": "VUID-vkGetDeviceImageSparseMemoryRequirements-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceImageSparseMemoryRequirements-pInfo-parameter",
          "text": "<code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDeviceImageMemoryRequirements\">VkDeviceImageMemoryRequirements</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceImageSparseMemoryRequirements-pSparseMemoryRequirementCount-parameter",
          "text": "<code>pSparseMemoryRequirementCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceImageSparseMemoryRequirements-pSparseMemoryRequirements-parameter",
          "text": "If the value referenced by <code>pSparseMemoryRequirementCount</code> is not <code>0</code>, and <code>pSparseMemoryRequirements</code> is not <code>NULL</code>, <code>pSparseMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pSparseMemoryRequirementCount</code> <a href=\"#VkSparseImageMemoryRequirements2\">VkSparseImageMemoryRequirements2</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkImageSparseMemoryRequirementsInfo2": {
      "core": [
        {
          "vuid": "VUID-VkImageSparseMemoryRequirementsInfo2-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageSparseMemoryRequirementsInfo2-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageSparseMemoryRequirementsInfo2-image-parameter",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkSparseImageMemoryRequirements2": {
      "core": [
        {
          "vuid": "VUID-VkSparseImageMemoryRequirements2-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSparseImageMemoryRequirements2-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkSparseMemoryBind": {
      "core": [
        {
          "vuid": "VUID-VkSparseMemoryBind-memory-01096",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSparseMemoryBind-resourceOffset-09491",
          "text": "If the resource being bound is a <code>VkBuffer</code>, <code>resourceOffset</code>, <code>memoryOffset</code> and <code>size</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetBufferMemoryRequirements\">vkGetBufferMemoryRequirements</a> with the buffer resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSparseMemoryBind-resourceOffset-09492",
          "text": "If the resource being bound is a <code>VkImage</code>, <code>resourceOffset</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements\">vkGetImageMemoryRequirements</a> with the image resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSparseMemoryBind-memory-01097",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSparseMemoryBind-size-01098",
          "text": "<code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSparseMemoryBind-resourceOffset-01099",
          "text": "<code>resourceOffset</code> <strong class=\"purple\">must</strong> be less than the size of the resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSparseMemoryBind-size-01100",
          "text": "<code>size</code> <strong class=\"purple\">must</strong> be less than or equal to the size of the resource minus <code>resourceOffset</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSparseMemoryBind-memoryOffset-01101",
          "text": "<code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSparseMemoryBind-size-01102",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSparseMemoryBind-memory-02730",
          "text": "If <code>memory</code> was created with <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> not equal to <code>0</code>, at least one handle type it contained <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> or <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when the resource was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSparseMemoryBind-memory-02731",
          "text": "If <code>memory</code> was created by a memory import operation, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> or <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when the resource was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSparseMemoryBind-memory-parameter",
          "text": "If <code>memory</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSparseMemoryBind-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSparseMemoryBindFlagBits\">VkSparseMemoryBindFlagBits</a> values",
          "page": "vkspec"
        }
      ]
    },
    "VkSparseBufferMemoryBindInfo": {
      "core": [
        {
          "vuid": "VUID-VkSparseBufferMemoryBindInfo-buffer-parameter",
          "text": "<code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSparseBufferMemoryBindInfo-pBinds-parameter",
          "text": "<code>pBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindCount</code> valid <a href=\"#VkSparseMemoryBind\">VkSparseMemoryBind</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSparseBufferMemoryBindInfo-bindCount-arraylength",
          "text": "<code>bindCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkSparseImageOpaqueMemoryBindInfo": {
      "core": [
        {
          "vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-pBinds-01103",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-image-parameter",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-pBinds-parameter",
          "text": "<code>pBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindCount</code> valid <a href=\"#VkSparseMemoryBind\">VkSparseMemoryBind</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-bindCount-arraylength",
          "text": "<code>bindCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkSparseImageMemoryBindInfo": {
      "core": [
        {
          "vuid": "VUID-VkSparseImageMemoryBindInfo-subresource-01722",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSparseImageMemoryBindInfo-subresource-01723",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSparseImageMemoryBindInfo-subresource-01106",
          "text": "The <code>subresource.aspectMask</code> member of each element of <code>pBinds</code> <strong class=\"purple\">must</strong> be valid for the <code>format</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSparseImageMemoryBindInfo-image-02901",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSparseImageMemoryBindInfo-image-parameter",
          "text": "<code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSparseImageMemoryBindInfo-pBinds-parameter",
          "text": "<code>pBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindCount</code> valid <a href=\"#VkSparseImageMemoryBind\">VkSparseImageMemoryBind</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSparseImageMemoryBindInfo-bindCount-arraylength",
          "text": "<code>bindCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkSparseImageMemoryBind": {
      "core": [
        {
          "vuid": "VUID-VkSparseImageMemoryBind-memory-01104",
          "text": "If the <a href=\"#features-sparseResidencyAliased\"><code>sparseResidencyAliased</code></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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSparseImageMemoryBind-memory-01105",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSparseImageMemoryBind-offset-01107",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSparseImageMemoryBind-extent-09388",
          "text": "<code>extent.width</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSparseImageMemoryBind-extent-01108",
          "text": "<code>extent.width</code> <strong class=\"purple\">must</strong> either be a multiple of the sparse image block width of the image, or else <span class=\"eq\">(<code>extent.width</code> +  <code>offset.x</code>)</span> <strong class=\"purple\">must</strong> equal the width of the image subresource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSparseImageMemoryBind-offset-01109",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSparseImageMemoryBind-extent-09389",
          "text": "<code>extent.height</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSparseImageMemoryBind-extent-01110",
          "text": "<code>extent.height</code> <strong class=\"purple\">must</strong> either be a multiple of the sparse image block height of the image, or else <span class=\"eq\">(<code>extent.height</code> +  <code>offset.y</code>)</span> <strong class=\"purple\">must</strong> equal the height of the image subresource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSparseImageMemoryBind-offset-01111",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSparseImageMemoryBind-extent-09390",
          "text": "<code>extent.depth</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSparseImageMemoryBind-extent-01112",
          "text": "<code>extent.depth</code> <strong class=\"purple\">must</strong> either be a multiple of the sparse image block depth of the image, or else <span class=\"eq\">(<code>extent.depth</code> +  <code>offset.z</code>)</span> <strong class=\"purple\">must</strong> equal the depth of the image subresource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSparseImageMemoryBind-memory-02732",
          "text": "If <code>memory</code> was created with <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> not equal to <code>0</code>, at least one handle type it contained <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when the image was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSparseImageMemoryBind-memory-02733",
          "text": "If <code>memory</code> was created by a memory import operation, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSparseImageMemoryBind-subresource-parameter",
          "text": "<code>subresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresource\">VkImageSubresource</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSparseImageMemoryBind-memory-parameter",
          "text": "If <code>memory</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSparseImageMemoryBind-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSparseMemoryBindFlagBits\">VkSparseMemoryBindFlagBits</a> values",
          "page": "vkspec"
        }
      ]
    },
    "vkQueueBindSparse": {
      "core": [
        {
          "vuid": "VUID-vkQueueBindSparse-fence-01113",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueBindSparse-fence-01114",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueBindSparse-pSignalSemaphores-01115",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueBindSparse-pWaitSemaphores-01116",
          "text": "When a semaphore wait operation referring to a binary semaphore defined by any element of the <code>pWaitSemaphores</code> member of any element of <code>pBindInfo</code> executes on <code>queue</code>, there <strong class=\"purple\">must</strong> be no other queues waiting on the same semaphore",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueBindSparse-pWaitSemaphores-03245",
          "text": "All elements of the <code>pWaitSemaphores</code> member of all elements of <code>pBindInfo</code> referring to a semaphore created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_BINARY</code> <strong class=\"purple\">must</strong> reference a semaphore signal operation that has been submitted for execution and any <a href=\"#synchronization-semaphores-signaling\">semaphore signal operations</a> on which it depends <strong class=\"purple\">must</strong> have also been submitted for execution",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueBindSparse-queue-parameter",
          "text": "<code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueBindSparse-pBindInfo-parameter",
          "text": "If <code>bindInfoCount</code> is not <code>0</code>, <code>pBindInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindInfoCount</code> valid <a href=\"#VkBindSparseInfo\">VkBindSparseInfo</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueBindSparse-fence-parameter",
          "text": "If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFence\">VkFence</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueBindSparse-queuetype",
          "text": "The <code>queue</code> <strong class=\"purple\">must</strong> support sparse binding operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueBindSparse-commonparent",
          "text": "Both of <code>fence</code>, and <code>queue</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkBindSparseInfo": {
      "core": [
        {
          "vuid": "VUID-VkBindSparseInfo-pWaitSemaphores-03246",
          "text": "If any element of <code>pWaitSemaphores</code> or <code>pSignalSemaphores</code> was created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code> then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindSparseInfo-pNext-03247",
          "text": "If the <code>pNext</code> chain of this structure includes a <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a> structure and any element of <code>pWaitSemaphores</code> was created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code> then its <code>waitSemaphoreValueCount</code> member <strong class=\"purple\">must</strong> equal <code>waitSemaphoreCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindSparseInfo-pNext-03248",
          "text": "If the <code>pNext</code> chain of this structure includes a <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a> structure and any element of <code>pSignalSemaphores</code> was created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code> then its <code>signalSemaphoreValueCount</code> member <strong class=\"purple\">must</strong> equal <code>signalSemaphoreCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindSparseInfo-pSignalSemaphores-03249",
          "text": "For each element of <code>pSignalSemaphores</code> created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code> the corresponding element of <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a>::<code>pSignalSemaphoreValues</code> <strong class=\"purple\">must</strong> have a value greater than the current value of the semaphore when the <a href=\"#synchronization-semaphores-signaling\">semaphore signal operation</a> is executed",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindSparseInfo-pWaitSemaphores-03250",
          "text": "For each element of <code>pWaitSemaphores</code> created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code> the corresponding element of <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a>::<code>pWaitSemaphoreValues</code> <strong class=\"purple\">must</strong> have a value which does not differ from the current value of the semaphore or from the value of any outstanding semaphore wait or signal operation on that semaphore by more than <a href=\"#limits-maxTimelineSemaphoreValueDifference\"><code>maxTimelineSemaphoreValueDifference</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindSparseInfo-pSignalSemaphores-03251",
          "text": "For each element of <code>pSignalSemaphores</code> created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code> the corresponding element of <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a>::<code>pSignalSemaphoreValues</code> <strong class=\"purple\">must</strong> have a value which does not differ from the current value of the semaphore or from the value of any outstanding semaphore wait or signal operation on that semaphore by more than <a href=\"#limits-maxTimelineSemaphoreValueDifference\"><code>maxTimelineSemaphoreValueDifference</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindSparseInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_SPARSE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindSparseInfo-pNext-pNext",
          "text": "Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceGroupBindSparseInfo\">VkDeviceGroupBindSparseInfo</a>, <a href=\"#VkFrameBoundaryEXT\">VkFrameBoundaryEXT</a>, or <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindSparseInfo-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindSparseInfo-pWaitSemaphores-parameter",
          "text": "If <code>waitSemaphoreCount</code> is not <code>0</code>, <code>pWaitSemaphores</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>waitSemaphoreCount</code> valid <a href=\"#VkSemaphore\">VkSemaphore</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindSparseInfo-pBufferBinds-parameter",
          "text": "If <code>bufferBindCount</code> is not <code>0</code>, <code>pBufferBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bufferBindCount</code> valid <a href=\"#VkSparseBufferMemoryBindInfo\">VkSparseBufferMemoryBindInfo</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindSparseInfo-pImageOpaqueBinds-parameter",
          "text": "If <code>imageOpaqueBindCount</code> is not <code>0</code>, <code>pImageOpaqueBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>imageOpaqueBindCount</code> valid <a href=\"#VkSparseImageOpaqueMemoryBindInfo\">VkSparseImageOpaqueMemoryBindInfo</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindSparseInfo-pImageBinds-parameter",
          "text": "If <code>imageBindCount</code> is not <code>0</code>, <code>pImageBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>imageBindCount</code> valid <a href=\"#VkSparseImageMemoryBindInfo\">VkSparseImageMemoryBindInfo</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindSparseInfo-pSignalSemaphores-parameter",
          "text": "If <code>signalSemaphoreCount</code> is not <code>0</code>, <code>pSignalSemaphores</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>signalSemaphoreCount</code> valid <a href=\"#VkSemaphore\">VkSemaphore</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindSparseInfo-commonparent",
          "text": "Both of the elements of <code>pSignalSemaphores</code>, and the elements of <code>pWaitSemaphores</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkDeviceGroupBindSparseInfo": {
      "core": [
        {
          "vuid": "VUID-VkDeviceGroupBindSparseInfo-resourceDeviceIndex-01118",
          "text": "<code>resourceDeviceIndex</code> and <code>memoryDeviceIndex</code> <strong class=\"purple\">must</strong> both be valid device indices",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceGroupBindSparseInfo-memoryDeviceIndex-01119",
          "text": "Each memory allocation bound in this batch <strong class=\"purple\">must</strong> have allocated an instance for <code>memoryDeviceIndex</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceGroupBindSparseInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateAndroidSurfaceKHR": {
      "core": [
        {
          "vuid": "VUID-vkCreateAndroidSurfaceKHR-instance-parameter",
          "text": "<code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateAndroidSurfaceKHR-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAndroidSurfaceCreateInfoKHR\">VkAndroidSurfaceCreateInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateAndroidSurfaceKHR-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateAndroidSurfaceKHR-pSurface-parameter",
          "text": "<code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkAndroidSurfaceCreateInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-window-01248",
          "text": "<code>window</code> <strong class=\"purple\">must</strong> point to a valid Android <a href=\"#ANativeWindow\">ANativeWindow</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateWaylandSurfaceKHR": {
      "core": [
        {
          "vuid": "VUID-vkCreateWaylandSurfaceKHR-instance-parameter",
          "text": "<code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateWaylandSurfaceKHR-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkWaylandSurfaceCreateInfoKHR\">VkWaylandSurfaceCreateInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateWaylandSurfaceKHR-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateWaylandSurfaceKHR-pSurface-parameter",
          "text": "<code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkWaylandSurfaceCreateInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-display-01304",
          "text": "<code>display</code> <strong class=\"purple\">must</strong> point to a valid Wayland <code>wl_display</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-surface-01305",
          "text": "<code>surface</code> <strong class=\"purple\">must</strong> point to a valid Wayland <code>wl_surface</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateWin32SurfaceKHR": {
      "core": [
        {
          "vuid": "VUID-vkCreateWin32SurfaceKHR-instance-parameter",
          "text": "<code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateWin32SurfaceKHR-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkWin32SurfaceCreateInfoKHR\">VkWin32SurfaceCreateInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateWin32SurfaceKHR-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateWin32SurfaceKHR-pSurface-parameter",
          "text": "<code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkWin32SurfaceCreateInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-hinstance-01307",
          "text": "<code>hinstance</code> <strong class=\"purple\">must</strong> be a valid Win32 <code>HINSTANCE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-hwnd-01308",
          "text": "<code>hwnd</code> <strong class=\"purple\">must</strong> be a valid Win32 <code>HWND</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateXcbSurfaceKHR": {
      "core": [
        {
          "vuid": "VUID-vkCreateXcbSurfaceKHR-instance-parameter",
          "text": "<code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateXcbSurfaceKHR-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkXcbSurfaceCreateInfoKHR\">VkXcbSurfaceCreateInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateXcbSurfaceKHR-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateXcbSurfaceKHR-pSurface-parameter",
          "text": "<code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkXcbSurfaceCreateInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-connection-01310",
          "text": "<code>connection</code> <strong class=\"purple\">must</strong> point to a valid X11 <code>xcb_connection_t</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-window-01311",
          "text": "<code>window</code> <strong class=\"purple\">must</strong> be a valid X11 <code>xcb_window_t</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateXlibSurfaceKHR": {
      "core": [
        {
          "vuid": "VUID-vkCreateXlibSurfaceKHR-instance-parameter",
          "text": "<code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateXlibSurfaceKHR-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkXlibSurfaceCreateInfoKHR\">VkXlibSurfaceCreateInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateXlibSurfaceKHR-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateXlibSurfaceKHR-pSurface-parameter",
          "text": "<code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkXlibSurfaceCreateInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-dpy-01313",
          "text": "<code>dpy</code> <strong class=\"purple\">must</strong> point to a valid Xlib <code>Display</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-window-01314",
          "text": "<code>window</code> <strong class=\"purple\">must</strong> be a valid Xlib <code>Window</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateDirectFBSurfaceEXT": {
      "core": [
        {
          "vuid": "VUID-vkCreateDirectFBSurfaceEXT-instance-parameter",
          "text": "<code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateDirectFBSurfaceEXT-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDirectFBSurfaceCreateInfoEXT\">VkDirectFBSurfaceCreateInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateDirectFBSurfaceEXT-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateDirectFBSurfaceEXT-pSurface-parameter",
          "text": "<code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkDirectFBSurfaceCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkDirectFBSurfaceCreateInfoEXT-dfb-04117",
          "text": "<code>dfb</code> <strong class=\"purple\">must</strong> point to a valid DirectFB <code>IDirectFB</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDirectFBSurfaceCreateInfoEXT-surface-04118",
          "text": "<code>surface</code> <strong class=\"purple\">must</strong> point to a valid DirectFB <code>IDirectFBSurface</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDirectFBSurfaceCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDirectFBSurfaceCreateInfoEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDirectFBSurfaceCreateInfoEXT-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateImagePipeSurfaceFUCHSIA": {
      "core": [
        {
          "vuid": "VUID-vkCreateImagePipeSurfaceFUCHSIA-instance-parameter",
          "text": "<code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateImagePipeSurfaceFUCHSIA-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImagePipeSurfaceCreateInfoFUCHSIA\">VkImagePipeSurfaceCreateInfoFUCHSIA</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateImagePipeSurfaceFUCHSIA-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateImagePipeSurfaceFUCHSIA-pSurface-parameter",
          "text": "<code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkImagePipeSurfaceCreateInfoFUCHSIA": {
      "core": [
        {
          "vuid": "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-imagePipeHandle-04863",
          "text": "<code>imagePipeHandle</code> <strong class=\"purple\">must</strong> be a valid <code>zx_handle_t</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateStreamDescriptorSurfaceGGP": {
      "core": [
        {
          "vuid": "VUID-vkCreateStreamDescriptorSurfaceGGP-instance-parameter",
          "text": "<code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateStreamDescriptorSurfaceGGP-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStreamDescriptorSurfaceCreateInfoGGP\">VkStreamDescriptorSurfaceCreateInfoGGP</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateStreamDescriptorSurfaceGGP-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateStreamDescriptorSurfaceGGP-pSurface-parameter",
          "text": "<code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkStreamDescriptorSurfaceCreateInfoGGP": {
      "core": [
        {
          "vuid": "VUID-VkStreamDescriptorSurfaceCreateInfoGGP-streamDescriptor-02681",
          "text": "<code>streamDescriptor</code> <strong class=\"purple\">must</strong> be a valid <code>GgpStreamDescriptor</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkStreamDescriptorSurfaceCreateInfoGGP-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkStreamDescriptorSurfaceCreateInfoGGP-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkStreamDescriptorSurfaceCreateInfoGGP-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateIOSSurfaceMVK": {
      "core": [
        {
          "vuid": "VUID-vkCreateIOSSurfaceMVK-instance-parameter",
          "text": "<code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateIOSSurfaceMVK-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkIOSSurfaceCreateInfoMVK\">VkIOSSurfaceCreateInfoMVK</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateIOSSurfaceMVK-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateIOSSurfaceMVK-pSurface-parameter",
          "text": "<code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkIOSSurfaceCreateInfoMVK": {
      "core": [
        {
          "vuid": "VUID-VkIOSSurfaceCreateInfoMVK-pView-04143",
          "text": "If <code>pView</code> is a <a href=\"#CAMetalLayer\">CAMetalLayer</a> object, it <strong class=\"purple\">must</strong> be a valid <a href=\"#CAMetalLayer\">CAMetalLayer</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIOSSurfaceCreateInfoMVK-pView-01316",
          "text": "If <code>pView</code> is a <code>UIView</code> object, it <strong class=\"purple\">must</strong> be a valid <code>UIView</code>, <strong class=\"purple\">must</strong> be backed by a <code>CALayer</code> object of type <a href=\"#CAMetalLayer\">CAMetalLayer</a>, and <a href=\"#vkCreateIOSSurfaceMVK\">vkCreateIOSSurfaceMVK</a> <strong class=\"purple\">must</strong> be called on the main thread",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIOSSurfaceCreateInfoMVK-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIOSSurfaceCreateInfoMVK-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkIOSSurfaceCreateInfoMVK-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateMacOSSurfaceMVK": {
      "core": [
        {
          "vuid": "VUID-vkCreateMacOSSurfaceMVK-instance-parameter",
          "text": "<code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateMacOSSurfaceMVK-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMacOSSurfaceCreateInfoMVK\">VkMacOSSurfaceCreateInfoMVK</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateMacOSSurfaceMVK-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateMacOSSurfaceMVK-pSurface-parameter",
          "text": "<code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkMacOSSurfaceCreateInfoMVK": {
      "core": [
        {
          "vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-pView-04144",
          "text": "If <code>pView</code> is a <a href=\"#CAMetalLayer\">CAMetalLayer</a> object, it <strong class=\"purple\">must</strong> be a valid <a href=\"#CAMetalLayer\">CAMetalLayer</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-pView-01317",
          "text": "If <code>pView</code> is an <code>NSView</code> object, it <strong class=\"purple\">must</strong> be a valid <code>NSView</code>, <strong class=\"purple\">must</strong> be backed by a <code>CALayer</code> object of type <a href=\"#CAMetalLayer\">CAMetalLayer</a>, and <a href=\"#vkCreateMacOSSurfaceMVK\">vkCreateMacOSSurfaceMVK</a> <strong class=\"purple\">must</strong> be called on the main thread",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateViSurfaceNN": {
      "core": [
        {
          "vuid": "VUID-vkCreateViSurfaceNN-instance-parameter",
          "text": "<code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateViSurfaceNN-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkViSurfaceCreateInfoNN\">VkViSurfaceCreateInfoNN</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateViSurfaceNN-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateViSurfaceNN-pSurface-parameter",
          "text": "<code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkViSurfaceCreateInfoNN": {
      "core": [
        {
          "vuid": "VUID-VkViSurfaceCreateInfoNN-window-01318",
          "text": "<code>window</code> <strong class=\"purple\">must</strong> be a valid <code>nn</code>::<code>vi</code>::<code>NativeWindowHandle</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkViSurfaceCreateInfoNN-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkViSurfaceCreateInfoNN-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkViSurfaceCreateInfoNN-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateMetalSurfaceEXT": {
      "core": [
        {
          "vuid": "VUID-vkCreateMetalSurfaceEXT-instance-parameter",
          "text": "<code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateMetalSurfaceEXT-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMetalSurfaceCreateInfoEXT\">VkMetalSurfaceCreateInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateMetalSurfaceEXT-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateMetalSurfaceEXT-pSurface-parameter",
          "text": "<code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkMetalSurfaceCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkMetalSurfaceCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMetalSurfaceCreateInfoEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMetalSurfaceCreateInfoEXT-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateScreenSurfaceQNX": {
      "core": [
        {
          "vuid": "VUID-vkCreateScreenSurfaceQNX-instance-parameter",
          "text": "<code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateScreenSurfaceQNX-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkScreenSurfaceCreateInfoQNX\">VkScreenSurfaceCreateInfoQNX</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateScreenSurfaceQNX-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateScreenSurfaceQNX-pSurface-parameter",
          "text": "<code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkScreenSurfaceCreateInfoQNX": {
      "core": [
        {
          "vuid": "VUID-VkScreenSurfaceCreateInfoQNX-context-04741",
          "text": "<code>context</code> <strong class=\"purple\">must</strong> point to a valid QNX Screen <code>struct</code> _screen_context",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkScreenSurfaceCreateInfoQNX-window-04742",
          "text": "<code>window</code> <strong class=\"purple\">must</strong> point to a valid QNX Screen <code>struct</code> _screen_window",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkScreenSurfaceCreateInfoQNX-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkScreenSurfaceCreateInfoQNX-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkScreenSurfaceCreateInfoQNX-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroySurfaceKHR": {
      "core": [
        {
          "vuid": "VUID-vkDestroySurfaceKHR-surface-01266",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroySurfaceKHR-surface-01267",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroySurfaceKHR-surface-01268",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroySurfaceKHR-instance-parameter",
          "text": "<code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroySurfaceKHR-surface-parameter",
          "text": "If <code>surface</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroySurfaceKHR-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroySurfaceKHR-surface-parent",
          "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>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceDisplayPropertiesKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceDisplayPropertiesKHR-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceDisplayPropertiesKHR-pPropertyCount-parameter",
          "text": "<code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceDisplayPropertiesKHR-pProperties-parameter",
          "text": "If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <a href=\"#VkDisplayPropertiesKHR\">VkDisplayPropertiesKHR</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceDisplayProperties2KHR": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceDisplayProperties2KHR-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceDisplayProperties2KHR-pPropertyCount-parameter",
          "text": "<code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceDisplayProperties2KHR-pProperties-parameter",
          "text": "If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <a href=\"#VkDisplayProperties2KHR\">VkDisplayProperties2KHR</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkDisplayProperties2KHR": {
      "core": [
        {
          "vuid": "VUID-VkDisplayProperties2KHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDisplayProperties2KHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkAcquireXlibDisplayEXT": {
      "core": [
        {
          "vuid": "VUID-vkAcquireXlibDisplayEXT-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAcquireXlibDisplayEXT-dpy-parameter",
          "text": "<code>dpy</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>Display</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAcquireXlibDisplayEXT-display-parameter",
          "text": "<code>display</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayKHR\">VkDisplayKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAcquireXlibDisplayEXT-display-parent",
          "text": "<code>display</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>physicalDevice</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetRandROutputDisplayEXT": {
      "core": [
        {
          "vuid": "VUID-vkGetRandROutputDisplayEXT-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetRandROutputDisplayEXT-dpy-parameter",
          "text": "<code>dpy</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>Display</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetRandROutputDisplayEXT-pDisplay-parameter",
          "text": "<code>pDisplay</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDisplayKHR\">VkDisplayKHR</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "vkAcquireWinrtDisplayNV": {
      "core": [
        {
          "vuid": "VUID-vkAcquireWinrtDisplayNV-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAcquireWinrtDisplayNV-display-parameter",
          "text": "<code>display</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayKHR\">VkDisplayKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAcquireWinrtDisplayNV-display-parent",
          "text": "<code>display</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>physicalDevice</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetWinrtDisplayNV": {
      "core": [
        {
          "vuid": "VUID-vkGetWinrtDisplayNV-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetWinrtDisplayNV-pDisplay-parameter",
          "text": "<code>pDisplay</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDisplayKHR\">VkDisplayKHR</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "vkAcquireDrmDisplayEXT": {
      "core": [
        {
          "vuid": "VUID-vkAcquireDrmDisplayEXT-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAcquireDrmDisplayEXT-display-parameter",
          "text": "<code>display</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayKHR\">VkDisplayKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAcquireDrmDisplayEXT-display-parent",
          "text": "<code>display</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>physicalDevice</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetDrmDisplayEXT": {
      "core": [
        {
          "vuid": "VUID-vkGetDrmDisplayEXT-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDrmDisplayEXT-display-parameter",
          "text": "<code>display</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDisplayKHR\">VkDisplayKHR</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "vkReleaseDisplayEXT": {
      "core": [
        {
          "vuid": "VUID-vkReleaseDisplayEXT-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkReleaseDisplayEXT-display-parameter",
          "text": "<code>display</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayKHR\">VkDisplayKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkReleaseDisplayEXT-display-parent",
          "text": "<code>display</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>physicalDevice</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceDisplayPlanePropertiesKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceDisplayPlanePropertiesKHR-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceDisplayPlanePropertiesKHR-pPropertyCount-parameter",
          "text": "<code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceDisplayPlanePropertiesKHR-pProperties-parameter",
          "text": "If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <a href=\"#VkDisplayPlanePropertiesKHR\">VkDisplayPlanePropertiesKHR</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceDisplayPlaneProperties2KHR": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceDisplayPlaneProperties2KHR-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceDisplayPlaneProperties2KHR-pPropertyCount-parameter",
          "text": "<code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceDisplayPlaneProperties2KHR-pProperties-parameter",
          "text": "If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <a href=\"#VkDisplayPlaneProperties2KHR\">VkDisplayPlaneProperties2KHR</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkDisplayPlaneProperties2KHR": {
      "core": [
        {
          "vuid": "VUID-VkDisplayPlaneProperties2KHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDisplayPlaneProperties2KHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetDisplayPlaneSupportedDisplaysKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-planeIndex-01249",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-pDisplayCount-parameter",
          "text": "<code>pDisplayCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-pDisplays-parameter",
          "text": "If the value referenced by <code>pDisplayCount</code> is not <code>0</code>, and <code>pDisplays</code> is not <code>NULL</code>, <code>pDisplays</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pDisplayCount</code> <a href=\"#VkDisplayKHR\">VkDisplayKHR</a> handles",
          "page": "vkspec"
        }
      ]
    },
    "vkGetDisplayModePropertiesKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetDisplayModePropertiesKHR-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDisplayModePropertiesKHR-display-parameter",
          "text": "<code>display</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayKHR\">VkDisplayKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDisplayModePropertiesKHR-pPropertyCount-parameter",
          "text": "<code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDisplayModePropertiesKHR-pProperties-parameter",
          "text": "If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <a href=\"#VkDisplayModePropertiesKHR\">VkDisplayModePropertiesKHR</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDisplayModePropertiesKHR-display-parent",
          "text": "<code>display</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>physicalDevice</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetDisplayModeProperties2KHR": {
      "core": [
        {
          "vuid": "VUID-vkGetDisplayModeProperties2KHR-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDisplayModeProperties2KHR-display-parameter",
          "text": "<code>display</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayKHR\">VkDisplayKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDisplayModeProperties2KHR-pPropertyCount-parameter",
          "text": "<code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDisplayModeProperties2KHR-pProperties-parameter",
          "text": "If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <a href=\"#VkDisplayModeProperties2KHR\">VkDisplayModeProperties2KHR</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDisplayModeProperties2KHR-display-parent",
          "text": "<code>display</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>physicalDevice</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkDisplayModeProperties2KHR": {
      "core": [
        {
          "vuid": "VUID-VkDisplayModeProperties2KHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDisplayModeProperties2KHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkDisplayModeParametersKHR": {
      "core": [
        {
          "vuid": "VUID-VkDisplayModeParametersKHR-width-01990",
          "text": "The <code>width</code> member of <code>visibleRegion</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDisplayModeParametersKHR-height-01991",
          "text": "The <code>height</code> member of <code>visibleRegion</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDisplayModeParametersKHR-refreshRate-01992",
          "text": "<code>refreshRate</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateDisplayModeKHR": {
      "core": [
        {
          "vuid": "VUID-vkCreateDisplayModeKHR-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateDisplayModeKHR-display-parameter",
          "text": "<code>display</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayKHR\">VkDisplayKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateDisplayModeKHR-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDisplayModeCreateInfoKHR\">VkDisplayModeCreateInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateDisplayModeKHR-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateDisplayModeKHR-pMode-parameter",
          "text": "<code>pMode</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDisplayModeKHR\">VkDisplayModeKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateDisplayModeKHR-display-parent",
          "text": "<code>display</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>physicalDevice</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkDisplayModeCreateInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkDisplayModeCreateInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDisplayModeCreateInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDisplayModeCreateInfoKHR-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDisplayModeCreateInfoKHR-parameters-parameter",
          "text": "<code>parameters</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayModeParametersKHR\">VkDisplayModeParametersKHR</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "vkGetDisplayPlaneCapabilitiesKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetDisplayPlaneCapabilitiesKHR-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDisplayPlaneCapabilitiesKHR-mode-parameter",
          "text": "<code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayModeKHR\">VkDisplayModeKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDisplayPlaneCapabilitiesKHR-pCapabilities-parameter",
          "text": "<code>pCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDisplayPlaneCapabilitiesKHR\">VkDisplayPlaneCapabilitiesKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDisplayPlaneCapabilitiesKHR-mode-parent",
          "text": "<code>mode</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>physicalDevice</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetDisplayPlaneCapabilities2KHR": {
      "core": [
        {
          "vuid": "VUID-vkGetDisplayPlaneCapabilities2KHR-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDisplayPlaneCapabilities2KHR-pDisplayPlaneInfo-parameter",
          "text": "<code>pDisplayPlaneInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDisplayPlaneInfo2KHR\">VkDisplayPlaneInfo2KHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDisplayPlaneCapabilities2KHR-pCapabilities-parameter",
          "text": "<code>pCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDisplayPlaneCapabilities2KHR\">VkDisplayPlaneCapabilities2KHR</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkDisplayPlaneInfo2KHR": {
      "core": [
        {
          "vuid": "VUID-VkDisplayPlaneInfo2KHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDisplayPlaneInfo2KHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDisplayPlaneInfo2KHR-mode-parameter",
          "text": "<code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayModeKHR\">VkDisplayModeKHR</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkDisplayPlaneCapabilities2KHR": {
      "core": [
        {
          "vuid": "VUID-VkDisplayPlaneCapabilities2KHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDisplayPlaneCapabilities2KHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkDisplayPowerControlEXT": {
      "core": [
        {
          "vuid": "VUID-vkDisplayPowerControlEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDisplayPowerControlEXT-display-parameter",
          "text": "<code>display</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayKHR\">VkDisplayKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDisplayPowerControlEXT-pDisplayPowerInfo-parameter",
          "text": "<code>pDisplayPowerInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDisplayPowerInfoEXT\">VkDisplayPowerInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDisplayPowerControlEXT-commonparent",
          "text": "Both of <code>device</code>, and <code>display</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkDisplayPowerInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkDisplayPowerInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDisplayPowerInfoEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDisplayPowerInfoEXT-powerState-parameter",
          "text": "<code>powerState</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayPowerStateEXT\">VkDisplayPowerStateEXT</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateDisplayPlaneSurfaceKHR": {
      "core": [
        {
          "vuid": "VUID-vkCreateDisplayPlaneSurfaceKHR-instance-parameter",
          "text": "<code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateDisplayPlaneSurfaceKHR-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDisplaySurfaceCreateInfoKHR\">VkDisplaySurfaceCreateInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateDisplayPlaneSurfaceKHR-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateDisplayPlaneSurfaceKHR-pSurface-parameter",
          "text": "<code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkDisplaySurfaceCreateInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-planeIndex-01252",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-planeReorderPossible-01253",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-alphaMode-01254",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-alphaMode-01255",
          "text": "<code>alphaMode</code> <strong class=\"purple\">must</strong> be one of the bits present in the <code>supportedAlpha</code> member of <code>VkDisplayPlaneCapabilitiesKHR</code> for the display plane corresponding to <code>displayMode</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-transform-06740",
          "text": "<code>transform</code> <strong class=\"purple\">must</strong> be one of the bits present in the <code>supportedTransforms</code> member of <code>VkDisplayPropertiesKHR</code> for the display corresponding to <code>displayMode</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-width-01256",
          "text": "The <code>width</code> and <code>height</code> members of <code>imageExtent</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxImageDimension2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-displayMode-parameter",
          "text": "<code>displayMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayModeKHR\">VkDisplayModeKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-transform-parameter",
          "text": "<code>transform</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceTransformFlagBitsKHR\">VkSurfaceTransformFlagBitsKHR</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-alphaMode-parameter",
          "text": "<code>alphaMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayPlaneAlphaFlagBitsKHR\">VkDisplayPlaneAlphaFlagBitsKHR</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateHeadlessSurfaceEXT": {
      "core": [
        {
          "vuid": "VUID-vkCreateHeadlessSurfaceEXT-instance-parameter",
          "text": "<code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateHeadlessSurfaceEXT-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkHeadlessSurfaceCreateInfoEXT\">VkHeadlessSurfaceCreateInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateHeadlessSurfaceEXT-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateHeadlessSurfaceEXT-pSurface-parameter",
          "text": "<code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkHeadlessSurfaceCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkHeadlessSurfaceCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkHeadlessSurfaceCreateInfoEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkHeadlessSurfaceCreateInfoEXT-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceSurfaceSupportKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-queueFamilyIndex-01269",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-surface-parameter",
          "text": "<code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-pSupported-parameter",
          "text": "<code>pSupported</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkBool32\">VkBool32</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-commonparent",
          "text": "Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceWaylandPresentationSupportKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-queueFamilyIndex-01306",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-display-parameter",
          "text": "<code>display</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>wl_display</code> value",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceWin32PresentationSupportKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceWin32PresentationSupportKHR-queueFamilyIndex-01309",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceWin32PresentationSupportKHR-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceXcbPresentationSupportKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-queueFamilyIndex-01312",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-connection-parameter",
          "text": "<code>connection</code> <strong class=\"purple\">must</strong> be a valid pointer to an <code>xcb_connection_t</code> value",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceXlibPresentationSupportKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-queueFamilyIndex-01315",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-dpy-parameter",
          "text": "<code>dpy</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>Display</code> value",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceDirectFBPresentationSupportEXT": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceDirectFBPresentationSupportEXT-queueFamilyIndex-04119",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceDirectFBPresentationSupportEXT-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceDirectFBPresentationSupportEXT-dfb-parameter",
          "text": "<code>dfb</code> <strong class=\"purple\">must</strong> be a valid pointer to an <code>IDirectFB</code> value",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceScreenPresentationSupportQNX": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceScreenPresentationSupportQNX-queueFamilyIndex-04743",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceScreenPresentationSupportQNX-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceScreenPresentationSupportQNX-window-parameter",
          "text": "<code>window</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>_screen_window</code> value",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceSurfaceCapabilitiesKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-surface-06523",
          "text": "<code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-surface-06211",
          "text": "<code>surface</code> <strong class=\"purple\">must</strong> be supported by <code>physicalDevice</code>, as reported by <a href=\"#vkGetPhysicalDeviceSurfaceSupportKHR\">vkGetPhysicalDeviceSurfaceSupportKHR</a> or an equivalent platform-specific mechanism",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-surface-parameter",
          "text": "<code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-pSurfaceCapabilities-parameter",
          "text": "<code>pSurfaceCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceCapabilitiesKHR\">VkSurfaceCapabilitiesKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-commonparent",
          "text": "Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceSurfaceCapabilities2KHR": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pSurfaceInfo-06521",
          "text": "If the <code><a href=\"#VK_GOOGLE_surfaceless_query\">VK_GOOGLE_surfaceless_query</a></code> extension is not enabled, <code>pSurfaceInfo-&gt;surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pSurfaceInfo-06522",
          "text": "If <code>pSurfaceInfo-&gt;surface</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pSurfaceInfo-&gt;surface</code> <strong class=\"purple\">must</strong> be supported by <code>physicalDevice</code>, as reported by <a href=\"#vkGetPhysicalDeviceSurfaceSupportKHR\">vkGetPhysicalDeviceSurfaceSupportKHR</a> or an equivalent platform-specific mechanism",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pNext-02671",
          "text": "If a <a href=\"#VkSurfaceCapabilitiesFullScreenExclusiveEXT\">VkSurfaceCapabilitiesFullScreenExclusiveEXT</a> structure is included in the <code>pNext</code> chain of <code>pSurfaceCapabilities</code>, a <a href=\"#VkSurfaceFullScreenExclusiveWin32InfoEXT\">VkSurfaceFullScreenExclusiveWin32InfoEXT</a> structure <strong class=\"purple\">must</strong> be included in the <code>pNext</code> chain of <code>pSurfaceInfo</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pNext-07776",
          "text": "If a <a href=\"#VkSurfacePresentModeCompatibilityEXT\">VkSurfacePresentModeCompatibilityEXT</a> structure is included in the <code>pNext</code> chain of <code>pSurfaceCapabilities</code>, a <a href=\"#VkSurfacePresentModeEXT\">VkSurfacePresentModeEXT</a> structure <strong class=\"purple\">must</strong> be included in the <code>pNext</code> chain of <code>pSurfaceInfo</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pNext-07777",
          "text": "If a <a href=\"#VkSurfacePresentScalingCapabilitiesEXT\">VkSurfacePresentScalingCapabilitiesEXT</a> structure is included in the <code>pNext</code> chain of <code>pSurfaceCapabilities</code>, a <a href=\"#VkSurfacePresentModeEXT\">VkSurfacePresentModeEXT</a> structure <strong class=\"purple\">must</strong> be included in the <code>pNext</code> chain of <code>pSurfaceInfo</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pNext-07778",
          "text": "If a <a href=\"#VkSurfacePresentModeCompatibilityEXT\">VkSurfacePresentModeCompatibilityEXT</a> structure is included in the <code>pNext</code> chain of <code>pSurfaceCapabilities</code>, <code>pSurfaceInfo-&gt;surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pNext-07779",
          "text": "If a <a href=\"#VkSurfacePresentScalingCapabilitiesEXT\">VkSurfacePresentScalingCapabilitiesEXT</a> structure is included in the <code>pNext</code> chain of <code>pSurfaceCapabilities</code>, <code>pSurfaceInfo-&gt;surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pSurfaceInfo-parameter",
          "text": "<code>pSurfaceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPhysicalDeviceSurfaceInfo2KHR\">VkPhysicalDeviceSurfaceInfo2KHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pSurfaceCapabilities-parameter",
          "text": "<code>pSurfaceCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceCapabilities2KHR\">VkSurfaceCapabilities2KHR</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceSurfaceInfo2KHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-pNext-02672",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkSurfaceFullScreenExclusiveInfoEXT\">VkSurfaceFullScreenExclusiveInfoEXT</a> structure with its <code>fullScreenExclusive</code> member set to <code>VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT</code>, and <code>surface</code> was created using <a href=\"#vkCreateWin32SurfaceKHR\">vkCreateWin32SurfaceKHR</a>, a <a href=\"#VkSurfaceFullScreenExclusiveWin32InfoEXT\">VkSurfaceFullScreenExclusiveWin32InfoEXT</a> structure <strong class=\"purple\">must</strong> be included in the <code>pNext</code> chain",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-surface-07919",
          "text": "If surface is not VK_NULL_HANDLE, and the <code><a href=\"#VK_GOOGLE_surfaceless_query\">VK_GOOGLE_surfaceless_query</a></code> extension is not enabled, <code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-pNext-pNext",
          "text": "Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkSurfaceFullScreenExclusiveInfoEXT\">VkSurfaceFullScreenExclusiveInfoEXT</a>, <a href=\"#VkSurfaceFullScreenExclusiveWin32InfoEXT\">VkSurfaceFullScreenExclusiveWin32InfoEXT</a>, or <a href=\"#VkSurfacePresentModeEXT\">VkSurfacePresentModeEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        }
      ]
    },
    "VkSurfaceFullScreenExclusiveInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkSurfaceFullScreenExclusiveInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSurfaceFullScreenExclusiveInfoEXT-fullScreenExclusive-parameter",
          "text": "<code>fullScreenExclusive</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFullScreenExclusiveEXT\">VkFullScreenExclusiveEXT</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkSurfaceFullScreenExclusiveWin32InfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkSurfaceFullScreenExclusiveWin32InfoEXT-hmonitor-02673",
          "text": "<code>hmonitor</code> <strong class=\"purple\">must</strong> be a valid <code>HMONITOR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSurfaceFullScreenExclusiveWin32InfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkSurfaceCapabilities2KHR": {
      "core": [
        {
          "vuid": "VUID-VkSurfaceCapabilities2KHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSurfaceCapabilities2KHR-pNext-pNext",
          "text": "Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDisplayNativeHdrSurfaceCapabilitiesAMD\">VkDisplayNativeHdrSurfaceCapabilitiesAMD</a>, <a href=\"#VkLatencySurfaceCapabilitiesNV\">VkLatencySurfaceCapabilitiesNV</a>, <a href=\"#VkSharedPresentSurfaceCapabilitiesKHR\">VkSharedPresentSurfaceCapabilitiesKHR</a>, <a href=\"#VkSurfaceCapabilitiesFullScreenExclusiveEXT\">VkSurfaceCapabilitiesFullScreenExclusiveEXT</a>, <a href=\"#VkSurfaceCapabilitiesPresentBarrierNV\">VkSurfaceCapabilitiesPresentBarrierNV</a>, <a href=\"#VkSurfacePresentModeCompatibilityEXT\">VkSurfacePresentModeCompatibilityEXT</a>, <a href=\"#VkSurfacePresentScalingCapabilitiesEXT\">VkSurfacePresentScalingCapabilitiesEXT</a>, or <a href=\"#VkSurfaceProtectedCapabilitiesKHR\">VkSurfaceProtectedCapabilitiesKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSurfaceCapabilities2KHR-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        }
      ]
    },
    "VkSurfaceProtectedCapabilitiesKHR": {
      "core": [
        {
          "vuid": "VUID-VkSurfaceProtectedCapabilitiesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkSurfacePresentScalingCapabilitiesEXT": {
      "core": [
        {
          "vuid": "VUID-VkSurfacePresentScalingCapabilitiesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkSurfacePresentModeEXT": {
      "core": [
        {
          "vuid": "VUID-VkSurfacePresentModeEXT-presentMode-07780",
          "text": "<code>presentMode</code> <strong class=\"purple\">must</strong> be a value reported by <a href=\"#vkGetPhysicalDeviceSurfacePresentModesKHR\">vkGetPhysicalDeviceSurfacePresentModesKHR</a> for the specified surface",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSurfacePresentModeEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSurfacePresentModeEXT-presentMode-parameter",
          "text": "<code>presentMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPresentModeKHR\">VkPresentModeKHR</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkSurfacePresentModeCompatibilityEXT": {
      "core": [
        {
          "vuid": "VUID-VkSurfacePresentModeCompatibilityEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSurfacePresentModeCompatibilityEXT-pPresentModes-parameter",
          "text": "If <code>presentModeCount</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>presentModeCount</code> <a href=\"#VkPresentModeKHR\">VkPresentModeKHR</a> values",
          "page": "vkspec"
        }
      ]
    },
    "VkSharedPresentSurfaceCapabilitiesKHR": {
      "core": [
        {
          "vuid": "VUID-VkSharedPresentSurfaceCapabilitiesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkDisplayNativeHdrSurfaceCapabilitiesAMD": {
      "core": [
        {
          "vuid": "VUID-VkDisplayNativeHdrSurfaceCapabilitiesAMD-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkSurfaceCapabilitiesFullScreenExclusiveEXT": {
      "core": [
        {
          "vuid": "VUID-VkSurfaceCapabilitiesFullScreenExclusiveEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkSurfaceCapabilitiesPresentBarrierNV": {
      "core": [
        {
          "vuid": "VUID-VkSurfaceCapabilitiesPresentBarrierNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_BARRIER_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceSurfaceCapabilities2EXT": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-surface-06523",
          "text": "<code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-surface-06211",
          "text": "<code>surface</code> <strong class=\"purple\">must</strong> be supported by <code>physicalDevice</code>, as reported by <a href=\"#vkGetPhysicalDeviceSurfaceSupportKHR\">vkGetPhysicalDeviceSurfaceSupportKHR</a> or an equivalent platform-specific mechanism",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-surface-parameter",
          "text": "<code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-pSurfaceCapabilities-parameter",
          "text": "<code>pSurfaceCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceCapabilities2EXT\">VkSurfaceCapabilities2EXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-commonparent",
          "text": "Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkSurfaceCapabilities2EXT": {
      "core": [
        {
          "vuid": "VUID-VkSurfaceCapabilities2EXT-supportedSurfaceCounters-01246",
          "text": "<code>supportedSurfaceCounters</code> <strong class=\"purple\">must</strong> not include <code>VK_SURFACE_COUNTER_VBLANK_BIT_EXT</code> unless the surface queried is a <a href=\"#wsi-display-surfaces\">display surface</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSurfaceCapabilities2EXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSurfaceCapabilities2EXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceSurfaceFormatsKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-surface-06524",
          "text": "If the <code><a href=\"#VK_GOOGLE_surfaceless_query\">VK_GOOGLE_surfaceless_query</a></code> extension is not enabled, <code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-surface-06525",
          "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 supported by <code>physicalDevice</code>, as reported by <a href=\"#vkGetPhysicalDeviceSurfaceSupportKHR\">vkGetPhysicalDeviceSurfaceSupportKHR</a> or an equivalent platform-specific mechanism",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-surface-parameter",
          "text": "If <code>surface</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-pSurfaceFormatCount-parameter",
          "text": "<code>pSurfaceFormatCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-pSurfaceFormats-parameter",
          "text": "If the value referenced by <code>pSurfaceFormatCount</code> is not <code>0</code>, and <code>pSurfaceFormats</code> is not <code>NULL</code>, <code>pSurfaceFormats</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pSurfaceFormatCount</code> <a href=\"#VkSurfaceFormatKHR\">VkSurfaceFormatKHR</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-commonparent",
          "text": "Both of <code>physicalDevice</code>, and <code>surface</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceSurfaceFormats2KHR": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceInfo-06521",
          "text": "If the <code><a href=\"#VK_GOOGLE_surfaceless_query\">VK_GOOGLE_surfaceless_query</a></code> extension is not enabled, <code>pSurfaceInfo-&gt;surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceInfo-06522",
          "text": "If <code>pSurfaceInfo-&gt;surface</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pSurfaceInfo-&gt;surface</code> <strong class=\"purple\">must</strong> be supported by <code>physicalDevice</code>, as reported by <a href=\"#vkGetPhysicalDeviceSurfaceSupportKHR\">vkGetPhysicalDeviceSurfaceSupportKHR</a> or an equivalent platform-specific mechanism",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceInfo-parameter",
          "text": "<code>pSurfaceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPhysicalDeviceSurfaceInfo2KHR\">VkPhysicalDeviceSurfaceInfo2KHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceFormatCount-parameter",
          "text": "<code>pSurfaceFormatCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceFormats-parameter",
          "text": "If the value referenced by <code>pSurfaceFormatCount</code> is not <code>0</code>, and <code>pSurfaceFormats</code> is not <code>NULL</code>, <code>pSurfaceFormats</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pSurfaceFormatCount</code> <a href=\"#VkSurfaceFormat2KHR\">VkSurfaceFormat2KHR</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkSurfaceFormat2KHR": {
      "core": [
        {
          "vuid": "VUID-VkSurfaceFormat2KHR-pNext-06750",
          "text": "If the <a href=\"#features-imageCompressionControlSwapchain\"><code>imageCompressionControlSwapchain</code></a> feature is not enabled, the <code>pNext</code> chain <strong class=\"purple\">must</strong> not include an <a href=\"#VkImageCompressionPropertiesEXT\">VkImageCompressionPropertiesEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSurfaceFormat2KHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSurfaceFormat2KHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkImageCompressionPropertiesEXT\">VkImageCompressionPropertiesEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSurfaceFormat2KHR-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceSurfacePresentModesKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-surface-06524",
          "text": "If the <code><a href=\"#VK_GOOGLE_surfaceless_query\">VK_GOOGLE_surfaceless_query</a></code> extension is not enabled, <code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-surface-06525",
          "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 supported by <code>physicalDevice</code>, as reported by <a href=\"#vkGetPhysicalDeviceSurfaceSupportKHR\">vkGetPhysicalDeviceSurfaceSupportKHR</a> or an equivalent platform-specific mechanism",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-surface-parameter",
          "text": "If <code>surface</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-pPresentModeCount-parameter",
          "text": "<code>pPresentModeCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-pPresentModes-parameter",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-commonparent",
          "text": "Both of <code>physicalDevice</code>, and <code>surface</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceSurfacePresentModes2EXT": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-pSurfaceInfo-06521",
          "text": "If the <code><a href=\"#VK_GOOGLE_surfaceless_query\">VK_GOOGLE_surfaceless_query</a></code> extension is not enabled, <code>pSurfaceInfo-&gt;surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-pSurfaceInfo-06522",
          "text": "If <code>pSurfaceInfo-&gt;surface</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pSurfaceInfo-&gt;surface</code> <strong class=\"purple\">must</strong> be supported by <code>physicalDevice</code>, as reported by <a href=\"#vkGetPhysicalDeviceSurfaceSupportKHR\">vkGetPhysicalDeviceSurfaceSupportKHR</a> or an equivalent platform-specific mechanism",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-pSurfaceInfo-parameter",
          "text": "<code>pSurfaceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPhysicalDeviceSurfaceInfo2KHR\">VkPhysicalDeviceSurfaceInfo2KHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-pPresentModeCount-parameter",
          "text": "<code>pPresentModeCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-pPresentModes-parameter",
          "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",
          "page": "vkspec"
        }
      ]
    },
    "vkAcquireFullScreenExclusiveModeEXT": {
      "core": [
        {
          "vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-swapchain-02674",
          "text": "<code>swapchain</code> <strong class=\"purple\">must</strong> not be in the retired state",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-swapchain-02675",
          "text": "<code>swapchain</code> <strong class=\"purple\">must</strong> be a swapchain created with a <a href=\"#VkSurfaceFullScreenExclusiveInfoEXT\">VkSurfaceFullScreenExclusiveInfoEXT</a> structure, with <code>fullScreenExclusive</code> set to <code>VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-swapchain-02676",
          "text": "<code>swapchain</code> <strong class=\"purple\">must</strong> not currently have exclusive full-screen access",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-swapchain-parameter",
          "text": "<code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-swapchain-parent",
          "text": "<code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkReleaseFullScreenExclusiveModeEXT": {
      "core": [
        {
          "vuid": "VUID-vkReleaseFullScreenExclusiveModeEXT-swapchain-02677",
          "text": "<code>swapchain</code> <strong class=\"purple\">must</strong> not be in the retired state",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkReleaseFullScreenExclusiveModeEXT-swapchain-02678",
          "text": "<code>swapchain</code> <strong class=\"purple\">must</strong> be a swapchain created with a <a href=\"#VkSurfaceFullScreenExclusiveInfoEXT\">VkSurfaceFullScreenExclusiveInfoEXT</a> structure, with <code>fullScreenExclusive</code> set to <code>VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkReleaseFullScreenExclusiveModeEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkReleaseFullScreenExclusiveModeEXT-swapchain-parameter",
          "text": "<code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkReleaseFullScreenExclusiveModeEXT-swapchain-parent",
          "text": "<code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetDeviceGroupPresentCapabilitiesKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetDeviceGroupPresentCapabilitiesKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceGroupPresentCapabilitiesKHR-pDeviceGroupPresentCapabilities-parameter",
          "text": "<code>pDeviceGroupPresentCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDeviceGroupPresentCapabilitiesKHR\">VkDeviceGroupPresentCapabilitiesKHR</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkDeviceGroupPresentCapabilitiesKHR": {
      "core": [
        {
          "vuid": "VUID-VkDeviceGroupPresentCapabilitiesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceGroupPresentCapabilitiesKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetDeviceGroupSurfacePresentModesKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-surface-06212",
          "text": "<code>surface</code> <strong class=\"purple\">must</strong> be supported by all physical devices associated with <code>device</code>, as reported by <a href=\"#vkGetPhysicalDeviceSurfaceSupportKHR\">vkGetPhysicalDeviceSurfaceSupportKHR</a> or an equivalent platform-specific mechanism",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-surface-parameter",
          "text": "<code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-pModes-parameter",
          "text": "<code>pModes</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDeviceGroupPresentModeFlagsKHR\">VkDeviceGroupPresentModeFlagsKHR</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-commonparent",
          "text": "Both of <code>device</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetDeviceGroupSurfacePresentModes2EXT": {
      "core": [
        {
          "vuid": "VUID-vkGetDeviceGroupSurfacePresentModes2EXT-pSurfaceInfo-06213",
          "text": "<code>pSurfaceInfo-&gt;surface</code> <strong class=\"purple\">must</strong> be supported by all physical devices associated with <code>device</code>, as reported by <a href=\"#vkGetPhysicalDeviceSurfaceSupportKHR\">vkGetPhysicalDeviceSurfaceSupportKHR</a> or an equivalent platform-specific mechanism",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceGroupSurfacePresentModes2EXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceGroupSurfacePresentModes2EXT-pSurfaceInfo-parameter",
          "text": "<code>pSurfaceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPhysicalDeviceSurfaceInfo2KHR\">VkPhysicalDeviceSurfaceInfo2KHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceGroupSurfacePresentModes2EXT-pModes-parameter",
          "text": "<code>pModes</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDeviceGroupPresentModeFlagsKHR\">VkDeviceGroupPresentModeFlagsKHR</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDevicePresentRectanglesKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-surface-06523",
          "text": "<code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-surface-06211",
          "text": "<code>surface</code> <strong class=\"purple\">must</strong> be supported by <code>physicalDevice</code>, as reported by <a href=\"#vkGetPhysicalDeviceSurfaceSupportKHR\">vkGetPhysicalDeviceSurfaceSupportKHR</a> or an equivalent platform-specific mechanism",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-surface-parameter",
          "text": "<code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-pRectCount-parameter",
          "text": "<code>pRectCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-pRects-parameter",
          "text": "If the value referenced by <code>pRectCount</code> is not <code>0</code>, and <code>pRects</code> is not <code>NULL</code>, <code>pRects</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pRectCount</code> <a href=\"#VkRect2D\">VkRect2D</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-commonparent",
          "text": "Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetRefreshCycleDurationGOOGLE": {
      "core": [
        {
          "vuid": "VUID-vkGetRefreshCycleDurationGOOGLE-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetRefreshCycleDurationGOOGLE-swapchain-parameter",
          "text": "<code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetRefreshCycleDurationGOOGLE-pDisplayTimingProperties-parameter",
          "text": "<code>pDisplayTimingProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkRefreshCycleDurationGOOGLE\">VkRefreshCycleDurationGOOGLE</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetRefreshCycleDurationGOOGLE-swapchain-parent",
          "text": "<code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPastPresentationTimingGOOGLE": {
      "core": [
        {
          "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-swapchain-parameter",
          "text": "<code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-pPresentationTimingCount-parameter",
          "text": "<code>pPresentationTimingCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-pPresentationTimings-parameter",
          "text": "If the value referenced by <code>pPresentationTimingCount</code> is not <code>0</code>, and <code>pPresentationTimings</code> is not <code>NULL</code>, <code>pPresentationTimings</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPresentationTimingCount</code> <a href=\"#VkPastPresentationTimingGOOGLE\">VkPastPresentationTimingGOOGLE</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-swapchain-parent",
          "text": "<code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetSwapchainStatusKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetSwapchainStatusKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetSwapchainStatusKHR-swapchain-parameter",
          "text": "<code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetSwapchainStatusKHR-swapchain-parent",
          "text": "<code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateSwapchainKHR": {
      "core": [
        {
          "vuid": "VUID-vkCreateSwapchainKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateSwapchainKHR-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSwapchainCreateInfoKHR\">VkSwapchainCreateInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateSwapchainKHR-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateSwapchainKHR-pSwapchain-parameter",
          "text": "<code>pSwapchain</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkSwapchainCreateInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-surface-01270",
          "text": "<code>surface</code> <strong class=\"purple\">must</strong> be a surface that is supported by the device as determined using <a href=\"#vkGetPhysicalDeviceSurfaceSupportKHR\">vkGetPhysicalDeviceSurfaceSupportKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-minImageCount-01272",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-presentMode-02839",
          "text": "",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-swapchainMaintenance1-10155",
          "text": "If the <a href=\"#features-swapchainMaintenance1\"><code>swapchainMaintenance1</code></a> feature is not enabled, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> not include a <a href=\"#VkSwapchainPresentModesCreateInfoEXT\">VkSwapchainPresentModesCreateInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-swapchainMaintenance1-10156",
          "text": "If the <a href=\"#features-swapchainMaintenance1\"><code>swapchainMaintenance1</code></a> feature is not enabled, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> not include a <a href=\"#VkSwapchainPresentScalingCreateInfoEXT\">VkSwapchainPresentScalingCreateInfoEXT</a> structure If <code>presentMode</code> is not <code>VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR</code> nor <code>VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR</code>, then <code>minImageCount</code> <strong class=\"purple\">must</strong> be greater than or equal to the value returned in the <code>minImageCount</code> member of the <code>VkSurfaceCapabilitiesKHR</code> structure returned by <a href=\"#vkGetPhysicalDeviceSurfaceCapabilitiesKHR\">vkGetPhysicalDeviceSurfaceCapabilitiesKHR</a> for the surface",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-minImageCount-01383",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageFormat-01273",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-pNext-07781",
          "text": "If a <a href=\"#VkSwapchainPresentScalingCreateInfoEXT\">VkSwapchainPresentScalingCreateInfoEXT</a> structure was not included in the <code>pNext</code> chain, or it is included and <a href=\"#VkSwapchainPresentScalingCreateInfoEXT\">VkSwapchainPresentScalingCreateInfoEXT</a>::<code>scalingBehavior</code> is zero then <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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-pNext-07782",
          "text": "If a <a href=\"#VkSwapchainPresentScalingCreateInfoEXT\">VkSwapchainPresentScalingCreateInfoEXT</a> structure was included in the <code>pNext</code> chain and <a href=\"#VkSwapchainPresentScalingCreateInfoEXT\">VkSwapchainPresentScalingCreateInfoEXT</a>::<code>scalingBehavior</code> is not zero then <code>imageExtent</code> <strong class=\"purple\">must</strong> be between <code>minScaledImageExtent</code> and <code>maxScaledImageExtent</code>, inclusive, where <code>minScaledImageExtent</code> and <code>maxScaledImageExtent</code> are members of the <code>VkSurfacePresentScalingCapabilitiesEXT</code> structure returned by <code>vkGetPhysicalDeviceSurfaceCapabilities2KHR</code> for the surface and <code>presentMode</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-swapchainMaintenance1-10157",
          "text": "If the <a href=\"#features-swapchainMaintenance1\"><code>swapchainMaintenance1</code></a> feature is not enabled, then <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageExtent-01689",
          "text": "<code>imageExtent</code> members <code>width</code> and <code>height</code> <strong class=\"purple\">must</strong> both be non-zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageArrayLayers-01275",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-presentMode-01427",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageUsage-01384",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01277",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01278",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01428",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-preTransform-01279",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-compositeAlpha-01280",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-presentMode-01281",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-physicalDeviceCount-01429",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-oldSwapchain-01933",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageFormat-01778",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-flags-03168",
          "text": "If <code>flags</code> contains <code>VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR</code> then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a> structure with a <code>viewFormatCount</code> greater than zero and <code>pViewFormats</code> <strong class=\"purple\">must</strong> have an element equal to <code>imageFormat</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-pNext-04099",
          "text": "If a <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a> structure was included in the <code>pNext</code> chain and <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>::<code>viewFormatCount</code> is not zero then all of the formats in <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>::<code>pViewFormats</code> <strong class=\"purple\">must</strong> be compatible with the <code>format</code> as described in the <a href=\"#formats-compatibility\">compatibility table</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-flags-04100",
          "text": "If <code>flags</code> does not contain <code>VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR</code> and the <code>pNext</code> chain include a <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a> structure then <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>::<code>viewFormatCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-flags-03187",
          "text": "If <code>flags</code> contains <code>VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR</code>, then <code>VkSurfaceProtectedCapabilitiesKHR</code>::<code>supportsProtected</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code> in the <a href=\"#VkSurfaceProtectedCapabilitiesKHR\">VkSurfaceProtectedCapabilitiesKHR</a> structure returned by <a href=\"#vkGetPhysicalDeviceSurfaceCapabilities2KHR\">vkGetPhysicalDeviceSurfaceCapabilities2KHR</a> for <code>surface</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-pNext-02679",
          "text": "If the <code>pNext</code> chain includes a <a href=\"#VkSurfaceFullScreenExclusiveInfoEXT\">VkSurfaceFullScreenExclusiveInfoEXT</a> structure with its <code>fullScreenExclusive</code> member set to <code>VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT</code>, and <code>surface</code> was created using <a href=\"#vkCreateWin32SurfaceKHR\">vkCreateWin32SurfaceKHR</a>, a <a href=\"#VkSurfaceFullScreenExclusiveWin32InfoEXT\">VkSurfaceFullScreenExclusiveWin32InfoEXT</a> structure <strong class=\"purple\">must</strong> be included in the <code>pNext</code> chain",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-pNext-06752",
          "text": "If the <a href=\"#features-imageCompressionControlSwapchain\"><code>imageCompressionControlSwapchain</code></a> feature is not enabled, the <code>pNext</code> chain <strong class=\"purple\">must</strong> not include an <a href=\"#VkImageCompressionControlEXT\">VkImageCompressionControlEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-pNext-pNext",
          "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=\"#VkImageCompressionControlEXT\">VkImageCompressionControlEXT</a>, <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>, <a href=\"#VkSurfaceFullScreenExclusiveInfoEXT\">VkSurfaceFullScreenExclusiveInfoEXT</a>, <a href=\"#VkSurfaceFullScreenExclusiveWin32InfoEXT\">VkSurfaceFullScreenExclusiveWin32InfoEXT</a>, <a href=\"#VkSwapchainCounterCreateInfoEXT\">VkSwapchainCounterCreateInfoEXT</a>, <a href=\"#VkSwapchainDisplayNativeHdrCreateInfoAMD\">VkSwapchainDisplayNativeHdrCreateInfoAMD</a>, <a href=\"#VkSwapchainLatencyCreateInfoNV\">VkSwapchainLatencyCreateInfoNV</a>, <a href=\"#VkSwapchainPresentBarrierCreateInfoNV\">VkSwapchainPresentBarrierCreateInfoNV</a>, <a href=\"#VkSwapchainPresentModesCreateInfoEXT\">VkSwapchainPresentModesCreateInfoEXT</a>, or <a href=\"#VkSwapchainPresentScalingCreateInfoEXT\">VkSwapchainPresentScalingCreateInfoEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSwapchainCreateFlagBitsKHR\">VkSwapchainCreateFlagBitsKHR</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-surface-parameter",
          "text": "<code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageFormat-parameter",
          "text": "<code>imageFormat</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageColorSpace-parameter",
          "text": "<code>imageColorSpace</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkColorSpaceKHR\">VkColorSpaceKHR</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageUsage-parameter",
          "text": "<code>imageUsage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageUsage-requiredbitmask",
          "text": "<code>imageUsage</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-parameter",
          "text": "<code>imageSharingMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSharingMode\">VkSharingMode</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-preTransform-parameter",
          "text": "<code>preTransform</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceTransformFlagBitsKHR\">VkSurfaceTransformFlagBitsKHR</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-compositeAlpha-parameter",
          "text": "<code>compositeAlpha</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCompositeAlphaFlagBitsKHR\">VkCompositeAlphaFlagBitsKHR</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-presentMode-parameter",
          "text": "<code>presentMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPresentModeKHR\">VkPresentModeKHR</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-oldSwapchain-parameter",
          "text": "If <code>oldSwapchain</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>oldSwapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCreateInfoKHR-commonparent",
          "text": "Both of <code>oldSwapchain</code>, and <code>surface</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkDeviceGroupSwapchainCreateInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkDeviceGroupSwapchainCreateInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceGroupSwapchainCreateInfoKHR-modes-parameter",
          "text": "<code>modes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDeviceGroupPresentModeFlagBitsKHR\">VkDeviceGroupPresentModeFlagBitsKHR</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceGroupSwapchainCreateInfoKHR-modes-requiredbitmask",
          "text": "<code>modes</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkSwapchainDisplayNativeHdrCreateInfoAMD": {
      "core": [
        {
          "vuid": "VUID-VkSwapchainDisplayNativeHdrCreateInfoAMD-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainDisplayNativeHdrCreateInfoAMD-localDimmingEnable-04449",
          "text": "It is only valid to set <code>localDimmingEnable</code> to <code>VK_TRUE</code> if <a href=\"#VkDisplayNativeHdrSurfaceCapabilitiesAMD\">VkDisplayNativeHdrSurfaceCapabilitiesAMD</a>::<code>localDimmingSupport</code> is supported",
          "page": "vkspec"
        }
      ]
    },
    "vkSetLocalDimmingAMD": {
      "core": [
        {
          "vuid": "VUID-vkSetLocalDimmingAMD-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetLocalDimmingAMD-swapChain-parameter",
          "text": "<code>swapChain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetLocalDimmingAMD-swapChain-parent",
          "text": "<code>swapChain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetLocalDimmingAMD-localDimmingSupport-04618",
          "text": "<a href=\"#VkDisplayNativeHdrSurfaceCapabilitiesAMD\">VkDisplayNativeHdrSurfaceCapabilitiesAMD</a>::<code>localDimmingSupport</code> <strong class=\"purple\">must</strong> be supported",
          "page": "vkspec"
        }
      ]
    },
    "VkSwapchainCounterCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkSwapchainCounterCreateInfoEXT-surfaceCounters-01244",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCounterCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainCounterCreateInfoEXT-surfaceCounters-parameter",
          "text": "<code>surfaceCounters</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSurfaceCounterFlagBitsEXT\">VkSurfaceCounterFlagBitsEXT</a> values",
          "page": "vkspec"
        }
      ]
    },
    "vkGetSwapchainCounterEXT": {
      "core": [
        {
          "vuid": "VUID-vkGetSwapchainCounterEXT-swapchain-01245",
          "text": "One or more present commands on <code>swapchain</code> <strong class=\"purple\">must</strong> have been processed by the presentation engine",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetSwapchainCounterEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetSwapchainCounterEXT-swapchain-parameter",
          "text": "<code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetSwapchainCounterEXT-counter-parameter",
          "text": "<code>counter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceCounterFlagBitsEXT\">VkSurfaceCounterFlagBitsEXT</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetSwapchainCounterEXT-pCounterValue-parameter",
          "text": "<code>pCounterValue</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint64_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetSwapchainCounterEXT-swapchain-parent",
          "text": "<code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkSwapchainPresentModesCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkSwapchainPresentModesCreateInfoEXT-None-07762",
          "text": "Each entry in pPresentModes <strong class=\"purple\">must</strong> be one of the <a href=\"#VkPresentModeKHR\">VkPresentModeKHR</a> values returned by <code>vkGetPhysicalDeviceSurfacePresentModesKHR</code> for the surface",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainPresentModesCreateInfoEXT-pPresentModes-07763",
          "text": "The entries in pPresentModes <strong class=\"purple\">must</strong> be a subset of the present modes returned in <a href=\"#VkSurfacePresentModeCompatibilityEXT\">VkSurfacePresentModeCompatibilityEXT</a>::<code>pPresentModes</code>, given <a href=\"#VkSwapchainCreateInfoKHR\">VkSwapchainCreateInfoKHR</a>::<code>presentMode</code> in <a href=\"#VkSurfacePresentModeEXT\">VkSurfacePresentModeEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainPresentModesCreateInfoEXT-presentMode-07764",
          "text": "<a href=\"#VkSwapchainCreateInfoKHR\">VkSwapchainCreateInfoKHR</a>::<code>presentMode</code> <strong class=\"purple\">must</strong> be included in <code>pPresentModes</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainPresentModesCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainPresentModesCreateInfoEXT-pPresentModes-parameter",
          "text": "<code>pPresentModes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>presentModeCount</code> valid <a href=\"#VkPresentModeKHR\">VkPresentModeKHR</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainPresentModesCreateInfoEXT-presentModeCount-arraylength",
          "text": "<code>presentModeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkSwapchainPresentScalingCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkSwapchainPresentScalingCreateInfoEXT-presentGravityX-07765",
          "text": "If <code>presentGravityX</code> is <code>0</code>, <code>presentGravityY</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainPresentScalingCreateInfoEXT-presentGravityX-07766",
          "text": "If <code>presentGravityX</code> is not <code>0</code>, <code>presentGravityY</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainPresentScalingCreateInfoEXT-scalingBehavior-07767",
          "text": "<code>scalingBehavior</code> <strong class=\"purple\">must</strong> not have more than one bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainPresentScalingCreateInfoEXT-presentGravityX-07768",
          "text": "<code>presentGravityX</code> <strong class=\"purple\">must</strong> not have more than one bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainPresentScalingCreateInfoEXT-presentGravityY-07769",
          "text": "<code>presentGravityY</code> <strong class=\"purple\">must</strong> not have more than one bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainPresentScalingCreateInfoEXT-scalingBehavior-07770",
          "text": "<code>scalingBehavior</code> <strong class=\"purple\">must</strong> be <code>0</code> or a valid scaling method for the surface as returned in <a href=\"#VkSurfacePresentScalingCapabilitiesEXT\">VkSurfacePresentScalingCapabilitiesEXT</a>::<code>supportedPresentScaling</code>, given <a href=\"#VkSwapchainCreateInfoKHR\">VkSwapchainCreateInfoKHR</a>::<code>presentMode</code> in <a href=\"#VkSurfacePresentModeEXT\">VkSurfacePresentModeEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainPresentScalingCreateInfoEXT-scalingBehavior-07771",
          "text": "If the swapchain is created with <a href=\"#VkSwapchainPresentModesCreateInfoEXT\">VkSwapchainPresentModesCreateInfoEXT</a>, <code>scalingBehavior</code> <strong class=\"purple\">must</strong> be <code>0</code> or a valid scaling method for the surface as returned in <a href=\"#VkSurfacePresentScalingCapabilitiesEXT\">VkSurfacePresentScalingCapabilitiesEXT</a>::<code>supportedPresentScaling</code>, given each present mode in <a href=\"#VkSwapchainPresentModesCreateInfoEXT\">VkSwapchainPresentModesCreateInfoEXT</a>::<code>pPresentModes</code> in <a href=\"#VkSurfacePresentModeEXT\">VkSurfacePresentModeEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainPresentScalingCreateInfoEXT-presentGravityX-07772",
          "text": "<code>presentGravityX</code> <strong class=\"purple\">must</strong> be <code>0</code> or a valid x-axis present gravity for the surface as returned in <a href=\"#VkSurfacePresentScalingCapabilitiesEXT\">VkSurfacePresentScalingCapabilitiesEXT</a>::<code>supportedPresentGravityX</code>, given <a href=\"#VkSwapchainCreateInfoKHR\">VkSwapchainCreateInfoKHR</a>::<code>presentMode</code> in <a href=\"#VkSurfacePresentModeEXT\">VkSurfacePresentModeEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainPresentScalingCreateInfoEXT-presentGravityX-07773",
          "text": "If the swapchain is created with <a href=\"#VkSwapchainPresentModesCreateInfoEXT\">VkSwapchainPresentModesCreateInfoEXT</a>, <code>presentGravityX</code> <strong class=\"purple\">must</strong> be <code>0</code> or a valid x-axis present gravity for the surface as returned in <a href=\"#VkSurfacePresentScalingCapabilitiesEXT\">VkSurfacePresentScalingCapabilitiesEXT</a>::<code>supportedPresentGravityX</code>, given each present mode in <a href=\"#VkSwapchainPresentModesCreateInfoEXT\">VkSwapchainPresentModesCreateInfoEXT</a>::<code>pPresentModes</code> in <a href=\"#VkSurfacePresentModeEXT\">VkSurfacePresentModeEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainPresentScalingCreateInfoEXT-presentGravityY-07774",
          "text": "<code>presentGravityY</code> <strong class=\"purple\">must</strong> be <code>0</code> or a valid y-axis present gravity for the surface as returned in <a href=\"#VkSurfacePresentScalingCapabilitiesEXT\">VkSurfacePresentScalingCapabilitiesEXT</a>::<code>supportedPresentGravityY</code>, given <a href=\"#VkSwapchainCreateInfoKHR\">VkSwapchainCreateInfoKHR</a>::<code>presentMode</code> in <a href=\"#VkSurfacePresentModeEXT\">VkSurfacePresentModeEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainPresentScalingCreateInfoEXT-presentGravityY-07775",
          "text": "If the swapchain is created with <a href=\"#VkSwapchainPresentModesCreateInfoEXT\">VkSwapchainPresentModesCreateInfoEXT</a>, <code>presentGravityY</code> <strong class=\"purple\">must</strong> be <code>0</code> or a valid y-axis present gravity for the surface as returned in <a href=\"#VkSurfacePresentScalingCapabilitiesEXT\">VkSurfacePresentScalingCapabilitiesEXT</a>::<code>supportedPresentGravityY</code>, given each present mode in <a href=\"#VkSwapchainPresentModesCreateInfoEXT\">VkSwapchainPresentModesCreateInfoEXT</a>::<code>pPresentModes</code> in <a href=\"#VkSurfacePresentModeEXT\">VkSurfacePresentModeEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainPresentScalingCreateInfoEXT-swapchainMaintenance1-10154",
          "text": "If the <a href=\"#features-swapchainMaintenance1\"><code>swapchainMaintenance1</code></a> feature is not enabled, then <code>presentScaling</code>, <code>presentGravityX</code>, and <code>presentGravityY</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainPresentScalingCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainPresentScalingCreateInfoEXT-scalingBehavior-parameter",
          "text": "<code>scalingBehavior</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPresentScalingFlagBitsEXT\">VkPresentScalingFlagBitsEXT</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainPresentScalingCreateInfoEXT-presentGravityX-parameter",
          "text": "<code>presentGravityX</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPresentGravityFlagBitsEXT\">VkPresentGravityFlagBitsEXT</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainPresentScalingCreateInfoEXT-presentGravityY-parameter",
          "text": "<code>presentGravityY</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPresentGravityFlagBitsEXT\">VkPresentGravityFlagBitsEXT</a> values",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroySwapchainKHR": {
      "core": [
        {
          "vuid": "VUID-vkDestroySwapchainKHR-swapchain-01282",
          "text": "All uses of presentable images acquired from <code>swapchain</code> <strong class=\"purple\">must</strong> have completed execution",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroySwapchainKHR-swapchain-01283",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroySwapchainKHR-swapchain-01284",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroySwapchainKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroySwapchainKHR-swapchain-parameter",
          "text": "If <code>swapchain</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroySwapchainKHR-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroySwapchainKHR-swapchain-parent",
          "text": "If <code>swapchain</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateSharedSwapchainsKHR": {
      "core": [
        {
          "vuid": "VUID-vkCreateSharedSwapchainsKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateSharedSwapchainsKHR-pCreateInfos-parameter",
          "text": "<code>pCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <a href=\"#VkSwapchainCreateInfoKHR\">VkSwapchainCreateInfoKHR</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateSharedSwapchainsKHR-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateSharedSwapchainsKHR-pSwapchains-parameter",
          "text": "<code>pSwapchains</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateSharedSwapchainsKHR-swapchainCount-arraylength",
          "text": "<code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetSwapchainImagesKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetSwapchainImagesKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetSwapchainImagesKHR-swapchain-parameter",
          "text": "<code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetSwapchainImagesKHR-pSwapchainImageCount-parameter",
          "text": "<code>pSwapchainImageCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetSwapchainImagesKHR-pSwapchainImages-parameter",
          "text": "If the value referenced by <code>pSwapchainImageCount</code> is not <code>0</code>, and <code>pSwapchainImages</code> is not <code>NULL</code>, <code>pSwapchainImages</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pSwapchainImageCount</code> <a href=\"#VkImage\">VkImage</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetSwapchainImagesKHR-swapchain-parent",
          "text": "<code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkAcquireNextImageKHR": {
      "core": [
        {
          "vuid": "VUID-vkAcquireNextImageKHR-swapchain-01285",
          "text": "<code>swapchain</code> <strong class=\"purple\">must</strong> not be in the retired state",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAcquireNextImageKHR-semaphore-01286",
          "text": "If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, it <strong class=\"purple\">must</strong> be unsignaled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAcquireNextImageKHR-semaphore-01779",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAcquireNextImageKHR-fence-01287",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAcquireNextImageKHR-fence-10066",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAcquireNextImageKHR-semaphore-01780",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAcquireNextImageKHR-surface-07783",
          "text": "If <a href=\"#swapchain-acquire-forward-progress\">forward progress</a> cannot be guaranteed for the <code>surface</code> used to create the <code>swapchain</code> member of <code>pAcquireInfo</code>, <code>timeout</code> <strong class=\"purple\">must</strong> not be <code>UINT64_MAX</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAcquireNextImageKHR-semaphore-03265",
          "text": "<code>semaphore</code> <strong class=\"purple\">must</strong> have a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_BINARY</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAcquireNextImageKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAcquireNextImageKHR-swapchain-parameter",
          "text": "<code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAcquireNextImageKHR-semaphore-parameter",
          "text": "If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphore\">VkSemaphore</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAcquireNextImageKHR-fence-parameter",
          "text": "If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFence\">VkFence</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAcquireNextImageKHR-pImageIndex-parameter",
          "text": "<code>pImageIndex</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAcquireNextImageKHR-swapchain-parent",
          "text": "<code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAcquireNextImageKHR-semaphore-parent",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAcquireNextImageKHR-fence-parent",
          "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>",
          "page": "vkspec"
        }
      ]
    },
    "vkAcquireNextImage2KHR": {
      "core": [
        {
          "vuid": "VUID-vkAcquireNextImage2KHR-surface-07784",
          "text": "If <a href=\"#swapchain-acquire-forward-progress\">forward progress</a> cannot be guaranteed for 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAcquireNextImage2KHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAcquireNextImage2KHR-pAcquireInfo-parameter",
          "text": "<code>pAcquireInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAcquireNextImageInfoKHR\">VkAcquireNextImageInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAcquireNextImage2KHR-pImageIndex-parameter",
          "text": "<code>pImageIndex</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        }
      ]
    },
    "VkAcquireNextImageInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkAcquireNextImageInfoKHR-swapchain-01675",
          "text": "<code>swapchain</code> <strong class=\"purple\">must</strong> not be in the retired state",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-01288",
          "text": "If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, it <strong class=\"purple\">must</strong> be unsignaled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-01781",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAcquireNextImageInfoKHR-fence-01289",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAcquireNextImageInfoKHR-fence-10067",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-01782",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAcquireNextImageInfoKHR-deviceMask-01290",
          "text": "<code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAcquireNextImageInfoKHR-deviceMask-01291",
          "text": "<code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-03266",
          "text": "<code>semaphore</code> <strong class=\"purple\">must</strong> have a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_BINARY</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAcquireNextImageInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAcquireNextImageInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAcquireNextImageInfoKHR-swapchain-parameter",
          "text": "<code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-parameter",
          "text": "If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphore\">VkSemaphore</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAcquireNextImageInfoKHR-fence-parameter",
          "text": "If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFence\">VkFence</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAcquireNextImageInfoKHR-commonparent",
          "text": "Each of <code>fence</code>, <code>semaphore</code>, and <code>swapchain</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkQueuePresentKHR": {
      "core": [
        {
          "vuid": "VUID-vkQueuePresentKHR-pSwapchains-01292",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueuePresentKHR-pSwapchains-01293",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueuePresentKHR-pWaitSemaphores-01294",
          "text": "When a semaphore wait operation referring to a binary semaphore defined by the elements of the <code>pWaitSemaphores</code> member of <code>pPresentInfo</code> executes on <code>queue</code>, there <strong class=\"purple\">must</strong> be no other queues waiting on the same semaphore",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueuePresentKHR-pWaitSemaphores-03267",
          "text": "All elements of the <code>pWaitSemaphores</code> member of <code>pPresentInfo</code> <strong class=\"purple\">must</strong> be created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_BINARY</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueuePresentKHR-pWaitSemaphores-03268",
          "text": "All elements of the <code>pWaitSemaphores</code> member of <code>pPresentInfo</code> <strong class=\"purple\">must</strong> reference a semaphore signal operation that has been submitted for execution and any <a href=\"#synchronization-semaphores-signaling\">semaphore signal operations</a> on which it depends <strong class=\"purple\">must</strong> have also been submitted for execution",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueuePresentKHR-queue-parameter",
          "text": "<code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueuePresentKHR-pPresentInfo-parameter",
          "text": "<code>pPresentInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPresentInfoKHR\">VkPresentInfoKHR</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkPresentInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkPresentInfoKHR-pSwapchain-09231",
          "text": "Elements of <code>pSwapchain</code> <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPresentInfoKHR-pImageIndices-01430",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPresentInfoKHR-pNext-06235",
          "text": "If a <a href=\"#VkPresentIdKHR\">VkPresentIdKHR</a> structure is included in the <code>pNext</code> chain, and the <a href=\"#features-presentId\"><code>presentId</code></a> feature is not enabled, each <code>presentIds</code> entry in that structure <strong class=\"purple\">must</strong> be NULL",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPresentInfoKHR-swapchainMaintenance1-10158",
          "text": "If the <a href=\"#features-swapchainMaintenance1\"><code>swapchainMaintenance1</code></a> feature is not enabled, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> not include a <a href=\"#VkSwapchainPresentFenceInfoEXT\">VkSwapchainPresentFenceInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPresentInfoKHR-pSwapchains-09199",
          "text": "If any element of the <code>pSwapchains</code> array has been created with <a href=\"#VkSwapchainPresentModesCreateInfoEXT\">VkSwapchainPresentModesCreateInfoEXT</a>, all of the elements of this array <strong class=\"purple\">must</strong> be created with <a href=\"#VkSwapchainPresentModesCreateInfoEXT\">VkSwapchainPresentModesCreateInfoEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPresentInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PRESENT_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPresentInfoKHR-pNext-pNext",
          "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=\"#VkFrameBoundaryEXT\">VkFrameBoundaryEXT</a>, <a href=\"#VkPresentFrameTokenGGP\">VkPresentFrameTokenGGP</a>, <a href=\"#VkPresentIdKHR\">VkPresentIdKHR</a>, <a href=\"#VkPresentRegionsKHR\">VkPresentRegionsKHR</a>, <a href=\"#VkPresentTimesInfoGOOGLE\">VkPresentTimesInfoGOOGLE</a>, <a href=\"#VkSwapchainPresentFenceInfoEXT\">VkSwapchainPresentFenceInfoEXT</a>, or <a href=\"#VkSwapchainPresentModeInfoEXT\">VkSwapchainPresentModeInfoEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPresentInfoKHR-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPresentInfoKHR-pWaitSemaphores-parameter",
          "text": "If <code>waitSemaphoreCount</code> is not <code>0</code>, <code>pWaitSemaphores</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>waitSemaphoreCount</code> valid <a href=\"#VkSemaphore\">VkSemaphore</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPresentInfoKHR-pSwapchains-parameter",
          "text": "<code>pSwapchains</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPresentInfoKHR-pImageIndices-parameter",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPresentInfoKHR-pResults-parameter",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPresentInfoKHR-swapchainCount-arraylength",
          "text": "<code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPresentInfoKHR-commonparent",
          "text": "Both of the elements of <code>pSwapchains</code>, and the elements of <code>pWaitSemaphores</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkPresentRegionsKHR": {
      "core": [
        {
          "vuid": "VUID-VkPresentRegionsKHR-swapchainCount-01260",
          "text": "<code>swapchainCount</code> <strong class=\"purple\">must</strong> be the same value as <code>VkPresentInfoKHR</code>::<code>swapchainCount</code>, where <code>VkPresentInfoKHR</code> is included in the <code>pNext</code> chain of this <code>VkPresentRegionsKHR</code> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPresentRegionsKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPresentRegionsKHR-pRegions-parameter",
          "text": "If <code>pRegions</code> is not <code>NULL</code>, <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <a href=\"#VkPresentRegionKHR\">VkPresentRegionKHR</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPresentRegionsKHR-swapchainCount-arraylength",
          "text": "<code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPresentRegionKHR": {
      "core": [
        {
          "vuid": "VUID-VkPresentRegionKHR-pRectangles-parameter",
          "text": "If <code>rectangleCount</code> is not <code>0</code>, and <code>pRectangles</code> is not <code>NULL</code>, <code>pRectangles</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>rectangleCount</code> valid <a href=\"#VkRectLayerKHR\">VkRectLayerKHR</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkRectLayerKHR": {
      "core": [
        {
          "vuid": "VUID-VkRectLayerKHR-offset-04864",
          "text": "The sum of <code>offset</code> and <code>extent</code>, after being transformed according to the <code>preTransform</code> member of the <a href=\"#VkSwapchainCreateInfoKHR\">VkSwapchainCreateInfoKHR</a> structure, <strong class=\"purple\">must</strong> be no greater than the <code>imageExtent</code> member of the <a href=\"#VkSwapchainCreateInfoKHR\">VkSwapchainCreateInfoKHR</a> structure passed to <a href=\"#vkCreateSwapchainKHR\">vkCreateSwapchainKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkRectLayerKHR-layer-01262",
          "text": "<code>layer</code> <strong class=\"purple\">must</strong> be less than the <code>imageArrayLayers</code> member of the <a href=\"#VkSwapchainCreateInfoKHR\">VkSwapchainCreateInfoKHR</a> structure passed to <a href=\"#vkCreateSwapchainKHR\">vkCreateSwapchainKHR</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkDisplayPresentInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkDisplayPresentInfoKHR-srcRect-01257",
          "text": "<code>srcRect</code> <strong class=\"purple\">must</strong> specify a rectangular region that is a subset of the image being presented",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDisplayPresentInfoKHR-dstRect-01258",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDisplayPresentInfoKHR-persistentContent-01259",
          "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 is <code>VK_FALSE</code>, then <code>persistent</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDisplayPresentInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkDeviceGroupPresentInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkDeviceGroupPresentInfoKHR-swapchainCount-01297",
          "text": "<code>swapchainCount</code> <strong class=\"purple\">must</strong> equal <code>0</code> or <a href=\"#VkPresentInfoKHR\">VkPresentInfoKHR</a>::<code>swapchainCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01298",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01299",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01300",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01301",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceGroupPresentInfoKHR-pDeviceMasks-01302",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01303",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceGroupPresentInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceGroupPresentInfoKHR-pDeviceMasks-parameter",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-parameter",
          "text": "<code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceGroupPresentModeFlagBitsKHR\">VkDeviceGroupPresentModeFlagBitsKHR</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkPresentTimesInfoGOOGLE": {
      "core": [
        {
          "vuid": "VUID-VkPresentTimesInfoGOOGLE-swapchainCount-01247",
          "text": "<code>swapchainCount</code> <strong class=\"purple\">must</strong> be the same value as <code>VkPresentInfoKHR</code>::<code>swapchainCount</code>, where <code>VkPresentInfoKHR</code> is included in the <code>pNext</code> chain of this <code>VkPresentTimesInfoGOOGLE</code> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPresentTimesInfoGOOGLE-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPresentTimesInfoGOOGLE-pTimes-parameter",
          "text": "If <code>pTimes</code> is not <code>NULL</code>, <code>pTimes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> <a href=\"#VkPresentTimeGOOGLE\">VkPresentTimeGOOGLE</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPresentTimesInfoGOOGLE-swapchainCount-arraylength",
          "text": "<code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPresentIdKHR": {
      "core": [
        {
          "vuid": "VUID-VkPresentIdKHR-swapchainCount-04998",
          "text": "<code>swapchainCount</code> <strong class=\"purple\">must</strong> be the same value as <code>VkPresentInfoKHR</code>::<code>swapchainCount</code>, where this <code>VkPresentIdKHR</code> is in the <code>pNext</code> chain of the <code>VkPresentInfoKHR</code> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPresentIdKHR-presentIds-04999",
          "text": "Each <code>presentIds</code> entry <strong class=\"purple\">must</strong> be greater than any previous <code>presentIds</code> entry passed for the associated <code>pSwapchains</code> entry",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPresentIdKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PRESENT_ID_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPresentIdKHR-pPresentIds-parameter",
          "text": "If <code>pPresentIds</code> is not <code>NULL</code>, <code>pPresentIds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> <code>uint64_t</code> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPresentIdKHR-swapchainCount-arraylength",
          "text": "<code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkWaitForPresentKHR": {
      "core": [
        {
          "vuid": "VUID-vkWaitForPresentKHR-swapchain-04997",
          "text": "<code>swapchain</code> <strong class=\"purple\">must</strong> not be in the retired state",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWaitForPresentKHR-presentWait-06234",
          "text": "The <a href=\"#features-presentWait\"><code>presentWait</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWaitForPresentKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWaitForPresentKHR-swapchain-parameter",
          "text": "<code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWaitForPresentKHR-swapchain-parent",
          "text": "<code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPresentFrameTokenGGP": {
      "core": [
        {
          "vuid": "VUID-VkPresentFrameTokenGGP-frameToken-02680",
          "text": "<code>frameToken</code> <strong class=\"purple\">must</strong> be a valid <code>GgpFrameToken</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPresentFrameTokenGGP-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkSwapchainPresentModeInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkSwapchainPresentModeInfoEXT-swapchainCount-07760",
          "text": "<code>swapchainCount</code> <strong class=\"purple\">must</strong> be equal to <a href=\"#VkPresentInfoKHR\">VkPresentInfoKHR</a>::<code>swapchainCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainPresentModeInfoEXT-pPresentModes-07761",
          "text": "Each entry in <code>pPresentModes</code> <strong class=\"purple\">must</strong> be a presentation mode specified in <a href=\"#VkSwapchainPresentModesCreateInfoEXT\">VkSwapchainPresentModesCreateInfoEXT</a>::<code>pPresentModes</code> when creating the entry&#8217;s corresponding swapchain",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainPresentModeInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainPresentModeInfoEXT-pPresentModes-parameter",
          "text": "<code>pPresentModes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <a href=\"#VkPresentModeKHR\">VkPresentModeKHR</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainPresentModeInfoEXT-swapchainCount-arraylength",
          "text": "<code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkSwapchainPresentFenceInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkSwapchainPresentFenceInfoEXT-swapchainCount-07757",
          "text": "<code>swapchainCount</code> <strong class=\"purple\">must</strong> be equal to <a href=\"#VkPresentInfoKHR\">VkPresentInfoKHR</a>::<code>swapchainCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainPresentFenceInfoEXT-pFences-07758",
          "text": "Each element of <code>pFences</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> be unsignaled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainPresentFenceInfoEXT-pFences-07759",
          "text": "Each element of <code>pFences</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <strong class=\"purple\">must</strong> not be associated with any other queue command that has not yet completed execution on that queue",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainPresentFenceInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainPresentFenceInfoEXT-pFences-parameter",
          "text": "<code>pFences</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <a href=\"#VkFence\">VkFence</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSwapchainPresentFenceInfoEXT-swapchainCount-arraylength",
          "text": "<code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkReleaseSwapchainImagesEXT": {
      "core": [
        {
          "vuid": "VUID-vkReleaseSwapchainImagesEXT-swapchainMaintenance1-10159",
          "text": "Feature <a href=\"#features-swapchainMaintenance1\"><code>swapchainMaintenance1</code></a> <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkReleaseSwapchainImagesEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkReleaseSwapchainImagesEXT-pReleaseInfo-parameter",
          "text": "<code>pReleaseInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkReleaseSwapchainImagesInfoEXT\">VkReleaseSwapchainImagesInfoEXT</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkReleaseSwapchainImagesInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkReleaseSwapchainImagesInfoEXT-pImageIndices-07785",
          "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 <code>swapchain</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkReleaseSwapchainImagesInfoEXT-pImageIndices-07786",
          "text": "All uses of presentable images identified by elements of <code>pImageIndices</code> <strong class=\"purple\">must</strong> have completed execution",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkReleaseSwapchainImagesInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkReleaseSwapchainImagesInfoEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkReleaseSwapchainImagesInfoEXT-swapchain-parameter",
          "text": "<code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkReleaseSwapchainImagesInfoEXT-pImageIndices-parameter",
          "text": "<code>pImageIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>imageIndexCount</code> <code>uint32_t</code> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkReleaseSwapchainImagesInfoEXT-imageIndexCount-arraylength",
          "text": "<code>imageIndexCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkSetHdrMetadataEXT": {
      "core": [
        {
          "vuid": "VUID-vkSetHdrMetadataEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetHdrMetadataEXT-pSwapchains-parameter",
          "text": "<code>pSwapchains</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetHdrMetadataEXT-pMetadata-parameter",
          "text": "<code>pMetadata</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <a href=\"#VkHdrMetadataEXT\">VkHdrMetadataEXT</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetHdrMetadataEXT-swapchainCount-arraylength",
          "text": "<code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetHdrMetadataEXT-pSwapchains-parent",
          "text": "Each element of <code>pSwapchains</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkHdrMetadataEXT": {
      "core": [
        {
          "vuid": "VUID-VkHdrMetadataEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_HDR_METADATA_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkHdrMetadataEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkAntiLagUpdateAMD": {
      "core": [
        {
          "vuid": "VUID-vkAntiLagUpdateAMD-antiLag-10061",
          "text": "The <a href=\"#features-antiLag\"><code>antiLag</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAntiLagUpdateAMD-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkAntiLagUpdateAMD-pData-parameter",
          "text": "<code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAntiLagDataAMD\">VkAntiLagDataAMD</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkAntiLagDataAMD": {
      "core": [
        {
          "vuid": "VUID-VkAntiLagDataAMD-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANTI_LAG_DATA_AMD</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAntiLagDataAMD-mode-parameter",
          "text": "<code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAntiLagModeAMD\">VkAntiLagModeAMD</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAntiLagDataAMD-pPresentationInfo-parameter",
          "text": "If <code>pPresentationInfo</code> is not <code>NULL</code>, <code>pPresentationInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAntiLagPresentationInfoAMD\">VkAntiLagPresentationInfoAMD</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkAntiLagPresentationInfoAMD": {
      "core": [
        {
          "vuid": "VUID-VkAntiLagPresentationInfoAMD-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANTI_LAG_PRESENTATION_INFO_AMD</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAntiLagPresentationInfoAMD-stage-parameter",
          "text": "<code>stage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAntiLagStageAMD\">VkAntiLagStageAMD</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkSetLatencySleepModeNV": {
      "core": [
        {
          "vuid": "VUID-vkSetLatencySleepModeNV-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetLatencySleepModeNV-swapchain-parameter",
          "text": "<code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetLatencySleepModeNV-pSleepModeInfo-parameter",
          "text": "<code>pSleepModeInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkLatencySleepModeInfoNV\">VkLatencySleepModeInfoNV</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetLatencySleepModeNV-swapchain-parent",
          "text": "<code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkLatencySleepModeInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkLatencySleepModeInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkLatencySleepNV": {
      "core": [
        {
          "vuid": "VUID-vkLatencySleepNV-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkLatencySleepNV-swapchain-parameter",
          "text": "<code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkLatencySleepNV-pSleepInfo-parameter",
          "text": "<code>pSleepInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkLatencySleepInfoNV\">VkLatencySleepInfoNV</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkLatencySleepNV-swapchain-parent",
          "text": "<code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkLatencySleepInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkLatencySleepInfoNV-signalSemaphore-09361",
          "text": "<code>signalSemaphore</code> <strong class=\"purple\">must</strong> be a timeline semaphore",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkLatencySleepInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkLatencySleepInfoNV-signalSemaphore-parameter",
          "text": "<code>signalSemaphore</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphore\">VkSemaphore</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "vkSetLatencyMarkerNV": {
      "core": [
        {
          "vuid": "VUID-vkSetLatencyMarkerNV-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetLatencyMarkerNV-swapchain-parameter",
          "text": "<code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetLatencyMarkerNV-pLatencyMarkerInfo-parameter",
          "text": "<code>pLatencyMarkerInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSetLatencyMarkerInfoNV\">VkSetLatencyMarkerInfoNV</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetLatencyMarkerNV-swapchain-parent",
          "text": "<code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkSetLatencyMarkerInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkSetLatencyMarkerInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkSetLatencyMarkerInfoNV-marker-parameter",
          "text": "<code>marker</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkLatencyMarkerNV\">VkLatencyMarkerNV</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkGetLatencyTimingsNV": {
      "core": [
        {
          "vuid": "VUID-vkGetLatencyTimingsNV-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetLatencyTimingsNV-swapchain-parameter",
          "text": "<code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetLatencyTimingsNV-pLatencyMarkerInfo-parameter",
          "text": "<code>pLatencyMarkerInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkGetLatencyMarkerInfoNV\">VkGetLatencyMarkerInfoNV</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetLatencyTimingsNV-swapchain-parent",
          "text": "<code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkGetLatencyMarkerInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkGetLatencyMarkerInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkGetLatencyMarkerInfoNV-pTimings-parameter",
          "text": "If <code>timingCount</code> is not <code>0</code>, and <code>pTimings</code> is not <code>NULL</code>, <code>pTimings</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>timingCount</code> <a href=\"#VkLatencyTimingsFrameReportNV\">VkLatencyTimingsFrameReportNV</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkLatencyTimingsFrameReportNV": {
      "core": [
        {
          "vuid": "VUID-VkLatencyTimingsFrameReportNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_LATENCY_TIMINGS_FRAME_REPORT_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkLatencySubmissionPresentIdNV": {
      "core": [
        {
          "vuid": "VUID-VkLatencySubmissionPresentIdNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkQueueNotifyOutOfBandNV": {
      "core": [
        {
          "vuid": "VUID-vkQueueNotifyOutOfBandNV-queue-parameter",
          "text": "<code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueNotifyOutOfBandNV-pQueueTypeInfo-parameter",
          "text": "<code>pQueueTypeInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkOutOfBandQueueTypeInfoNV\">VkOutOfBandQueueTypeInfoNV</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkOutOfBandQueueTypeInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkOutOfBandQueueTypeInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkOutOfBandQueueTypeInfoNV-queueType-parameter",
          "text": "<code>queueType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkOutOfBandQueueTypeNV\">VkOutOfBandQueueTypeNV</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkSwapchainLatencyCreateInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkSwapchainLatencyCreateInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkLatencySurfaceCapabilitiesNV": {
      "core": [
        {
          "vuid": "VUID-VkLatencySurfaceCapabilitiesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkLatencySurfaceCapabilitiesNV-pPresentModes-parameter",
          "text": "If <code>presentModeCount</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>presentModeCount</code> <a href=\"#VkPresentModeKHR\">VkPresentModeKHR</a> values",
          "page": "vkspec"
        }
      ]
    },
    "VkSwapchainPresentBarrierCreateInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkSwapchainPresentBarrierCreateInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateDeferredOperationKHR": {
      "core": [
        {
          "vuid": "VUID-vkCreateDeferredOperationKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateDeferredOperationKHR-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateDeferredOperationKHR-pDeferredOperation-parameter",
          "text": "<code>pDeferredOperation</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "vkDeferredOperationJoinKHR": {
      "core": [
        {
          "vuid": "VUID-vkDeferredOperationJoinKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDeferredOperationJoinKHR-operation-parameter",
          "text": "<code>operation</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDeferredOperationJoinKHR-operation-parent",
          "text": "<code>operation</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroyDeferredOperationKHR": {
      "core": [
        {
          "vuid": "VUID-vkDestroyDeferredOperationKHR-operation-03434",
          "text": "If <code>VkAllocationCallbacks</code> were provided when <code>operation</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyDeferredOperationKHR-operation-03435",
          "text": "If no <code>VkAllocationCallbacks</code> were provided when <code>operation</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyDeferredOperationKHR-operation-03436",
          "text": "<code>operation</code> <strong class=\"purple\">must</strong> be completed",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyDeferredOperationKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyDeferredOperationKHR-operation-parameter",
          "text": "If <code>operation</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>operation</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyDeferredOperationKHR-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyDeferredOperationKHR-operation-parent",
          "text": "If <code>operation</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetDeferredOperationMaxConcurrencyKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetDeferredOperationMaxConcurrencyKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeferredOperationMaxConcurrencyKHR-operation-parameter",
          "text": "<code>operation</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeferredOperationMaxConcurrencyKHR-operation-parent",
          "text": "<code>operation</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetDeferredOperationResultKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetDeferredOperationResultKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeferredOperationResultKHR-operation-parameter",
          "text": "<code>operation</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeferredOperationResultKHR-operation-parent",
          "text": "<code>operation</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreatePrivateDataSlot": {
      "core": [
        {
          "vuid": "VUID-vkCreatePrivateDataSlot-privateData-04564",
          "text": "The <a href=\"#features-privateData\"><code>privateData</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreatePrivateDataSlot-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreatePrivateDataSlot-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPrivateDataSlotCreateInfo\">VkPrivateDataSlotCreateInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreatePrivateDataSlot-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreatePrivateDataSlot-pPrivateDataSlot-parameter",
          "text": "<code>pPrivateDataSlot</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPrivateDataSlot\">VkPrivateDataSlot</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkPrivateDataSlotCreateInfo": {
      "core": [
        {
          "vuid": "VUID-VkPrivateDataSlotCreateInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPrivateDataSlotCreateInfo-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPrivateDataSlotCreateInfo-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroyPrivateDataSlot": {
      "core": [
        {
          "vuid": "VUID-vkDestroyPrivateDataSlot-privateDataSlot-04062",
          "text": "If <code>VkAllocationCallbacks</code> were provided when <code>privateDataSlot</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyPrivateDataSlot-privateDataSlot-04063",
          "text": "If no <code>VkAllocationCallbacks</code> were provided when <code>privateDataSlot</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyPrivateDataSlot-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyPrivateDataSlot-privateDataSlot-parameter",
          "text": "If <code>privateDataSlot</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>privateDataSlot</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPrivateDataSlot\">VkPrivateDataSlot</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyPrivateDataSlot-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyPrivateDataSlot-privateDataSlot-parent",
          "text": "If <code>privateDataSlot</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkSetPrivateData": {
      "core": [
        {
          "vuid": "VUID-vkSetPrivateData-objectHandle-04016",
          "text": "<code>objectHandle</code> <strong class=\"purple\">must</strong> be <code>device</code> or a child of <code>device</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetPrivateData-objectHandle-04017",
          "text": "<code>objectHandle</code> <strong class=\"purple\">must</strong> be a valid handle to an object of type <code>objectType</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetPrivateData-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetPrivateData-objectType-parameter",
          "text": "<code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectType\">VkObjectType</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetPrivateData-privateDataSlot-parameter",
          "text": "<code>privateDataSlot</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPrivateDataSlot\">VkPrivateDataSlot</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetPrivateData-privateDataSlot-parent",
          "text": "<code>privateDataSlot</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPrivateData": {
      "core": [
        {
          "vuid": "VUID-vkGetPrivateData-objectType-04018",
          "text": "<code>objectHandle</code> <strong class=\"purple\">must</strong> be <code>device</code> or a child of <code>device</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPrivateData-objectHandle-09498",
          "text": "<code>objectHandle</code> <strong class=\"purple\">must</strong> be a valid handle to an object of type <code>objectType</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPrivateData-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPrivateData-objectType-parameter",
          "text": "<code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectType\">VkObjectType</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPrivateData-privateDataSlot-parameter",
          "text": "<code>privateDataSlot</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPrivateDataSlot\">VkPrivateDataSlot</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPrivateData-pData-parameter",
          "text": "<code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint64_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPrivateData-privateDataSlot-parent",
          "text": "<code>privateDataSlot</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdBuildAccelerationStructureNV": {
      "core": [
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-geometryCount-02241",
          "text": "<code>geometryCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxGeometryCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-dst-02488",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02489",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02490",
          "text": "If <code>update</code> is <code>VK_TRUE</code>, <code>src</code> <strong class=\"purple\">must</strong> have previously been constructed with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV</code> set in <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a>::<code>flags</code> in the original build",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02491",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02492",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-scratch-03522",
          "text": "<code>scratch</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_RAY_TRACING_BIT_NV</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-instanceData-03523",
          "text": "If <code>instanceData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>instanceData</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_RAY_TRACING_BIT_NV</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-accelerationStructureReference-03786",
          "text": "Each <a href=\"#VkAccelerationStructureInstanceKHR\">VkAccelerationStructureInstanceKHR</a>::<code>accelerationStructureReference</code> value in <code>instanceData</code> <strong class=\"purple\">must</strong> be a valid device address containing a value obtained from <a href=\"#vkGetAccelerationStructureHandleNV\">vkGetAccelerationStructureHandleNV</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-03524",
          "text": "If <code>update</code> is <code>VK_TRUE</code>, then objects that were previously active <strong class=\"purple\">must</strong> not be made inactive as per <a href=\"#acceleration-structure-inactive-prims\">Inactive Primitives and Instances</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-03525",
          "text": "If <code>update</code> is <code>VK_TRUE</code>, then objects that were previously inactive <strong class=\"purple\">must</strong> not be made active as per <a href=\"#acceleration-structure-inactive-prims\">Inactive Primitives and Instances</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-03526",
          "text": "If <code>update</code> is <code>VK_TRUE</code>, the <code>src</code> and <code>dst</code> objects <strong class=\"purple\">must</strong> either be the same object or not have any <a href=\"#resources-memory-aliasing\">memory aliasing</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-dst-07787",
          "text": "<code>dst</code> <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object via <a href=\"#vkBindAccelerationStructureMemoryNV\">vkBindAccelerationStructureMemoryNV</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-pInfo-parameter",
          "text": "<code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-instanceData-parameter",
          "text": "If <code>instanceData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>instanceData</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-dst-parameter",
          "text": "<code>dst</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureNV\">VkAccelerationStructureNV</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-src-parameter",
          "text": "If <code>src</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>src</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureNV\">VkAccelerationStructureNV</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-scratch-parameter",
          "text": "<code>scratch</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commonparent",
          "text": "Each of <code>commandBuffer</code>, <code>dst</code>, <code>instanceData</code>, <code>scratch</code>, and <code>src</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdBuildAccelerationStructuresKHR": {
      "core": [
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-accelerationStructure-08923",
          "text": "The <a href=\"#features-accelerationStructure\"><code>VkPhysicalDeviceAccelerationStructureFeaturesKHR</code>::<code>accelerationStructure</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-mode-04628",
          "text": "The <code>mode</code> member of each element of <code>pInfos</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuildAccelerationStructureModeKHR\">VkBuildAccelerationStructureModeKHR</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-srcAccelerationStructure-04629",
          "text": "If the <code>srcAccelerationStructure</code> member of any element of <code>pInfos</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-04630",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03403",
          "text": "The <code>srcAccelerationStructure</code> member of any element of <code>pInfos</code> <strong class=\"purple\">must</strong> not be the same acceleration structure as the <code>dstAccelerationStructure</code> member of any other element of <code>pInfos</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03698",
          "text": "The <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> <strong class=\"purple\">must</strong> not be the same acceleration structure as the <code>dstAccelerationStructure</code> member of any other element of <code>pInfos</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03800",
          "text": "The <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03699",
          "text": "For each element of <code>pInfos</code>, if its <code>type</code> member is <code>VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR</code>, its <code>dstAccelerationStructure</code> member <strong class=\"purple\">must</strong> have been created with a value of <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>type</code> equal to either <code>VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR</code> or <code>VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03700",
          "text": "For each element of <code>pInfos</code>, if its <code>type</code> member is <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR</code>, its <code>dstAccelerationStructure</code> member <strong class=\"purple\">must</strong> have been created with a value of <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>type</code> equal to either <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR</code> or <code>VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03663",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, <a href=\"#acceleration-structure-inactive-prims\">inactive primitives</a> in its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> not be made active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03664",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, active primitives in its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> not be made <a href=\"#acceleration-structure-inactive-prims\">inactive</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-None-03407",
          "text": "The <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> <strong class=\"purple\">must</strong> not be referenced by the <code>geometry.instances.data</code> member of any element of <code>pGeometries</code> or <code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code> in any other element of <code>pInfos</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03701",
          "text": "The range of memory backing the <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>srcAccelerationStructure</code> member of any other element of <code>pInfos</code> with a <code>mode</code> equal to <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, which is accessed by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03702",
          "text": "The range of memory backing the <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>dstAccelerationStructure</code> member of any other element of <code>pInfos</code>, which is accessed by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03703",
          "text": "The range of memory backing the <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>scratchData</code> member of any element of <code>pInfos</code> (including the same element), which is accessed by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-scratchData-03704",
          "text": "The range of memory backing the <code>scratchData</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>scratchData</code> member of any other element of <code>pInfos</code>, which is accessed by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-scratchData-03705",
          "text": "The range of memory backing the <code>scratchData</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>srcAccelerationStructure</code> member of any element of <code>pInfos</code> with a <code>mode</code> equal to <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code> (including the same element), which is accessed by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03706",
          "text": "The range of memory backing the <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing any acceleration structure referenced by the <code>geometry.instances.data</code> member of any element of <code>pGeometries</code> or <code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code> in any other element of <code>pInfos</code>, which is accessed by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03667",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> have previously been constructed with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR</code> set in <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a>::<code>flags</code> in the build",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03668",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>srcAccelerationStructure</code> and <code>dstAccelerationStructure</code> members <strong class=\"purple\">must</strong> either be the same <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a>, or not have any <a href=\"#resources-memory-aliasing\">memory aliasing</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03758",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>geometryCount</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03759",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>flags</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03760",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>type</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03761",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, its <code>geometryType</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03762",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, its <code>flags</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03763",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, its <code>geometry.triangles.vertexFormat</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03764",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, its <code>geometry.triangles.maxVertex</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03765",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, its <code>geometry.triangles.indexType</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03766",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if its <code>geometry.triangles.transformData</code> address was <code>NULL</code> when <code>srcAccelerationStructure</code> was last built, then it <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03767",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if its <code>geometry.triangles.transformData</code> address was not <code>NULL</code> when <code>srcAccelerationStructure</code> was last built, then it <strong class=\"purple\">must</strong> not be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03768",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, and <code>geometry.triangles.indexType</code> is not <code>VK_INDEX_TYPE_NONE_KHR</code>, then the value of each index referenced <strong class=\"purple\">must</strong> be the same as the corresponding index value when <code>srcAccelerationStructure</code> was last built",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-primitiveCount-03769",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, the <code>primitiveCount</code> member of its corresponding <code>VkAccelerationStructureBuildRangeInfoKHR</code> structure <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03801",
          "text": "For each element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, the corresponding <code>ppBuildRangeInfos</code>[i][j].<code>primitiveCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceAccelerationStructurePropertiesKHR\">VkPhysicalDeviceAccelerationStructurePropertiesKHR</a>::<code>maxInstanceCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03707",
          "text": "For each element of <code>pInfos</code>, the <code>buffer</code> used to create its <code>dstAccelerationStructure</code> member <strong class=\"purple\">must</strong> be bound to device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03708",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code> the <code>buffer</code> used to create its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> be bound to device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03709",
          "text": "For each element of <code>pInfos</code>, the <code>buffer</code> used to create each acceleration structure referenced by the <code>geometry.instances.data</code> member of any element of <code>pGeometries</code> or <code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code> <strong class=\"purple\">must</strong> be bound to device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03671",
          "text": "If <code>pInfos</code>[i].<code>mode</code> is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR</code>, all addresses between <code>pInfos</code>[i].<code>scratchData.deviceAddress</code> and <code>pInfos</code>[i].<code>scratchData.deviceAddress</code> +  N - 1 <strong class=\"purple\">must</strong> be in the buffer device address range of the same buffer, where N is given by the <code>buildScratchSize</code> member of the <a href=\"#VkAccelerationStructureBuildSizesInfoKHR\">VkAccelerationStructureBuildSizesInfoKHR</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureBuildSizesKHR\">vkGetAccelerationStructureBuildSizesKHR</a> with an identical <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structure and primitive count",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03672",
          "text": "If <code>pInfos</code>[i].<code>mode</code> is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, all addresses between <code>pInfos</code>[i].<code>scratchData.deviceAddress</code> and <code>pInfos</code>[i].<code>scratchData.deviceAddress</code> +  N - 1 <strong class=\"purple\">must</strong> be in the buffer device address range of the same buffer, where N is given by the <code>updateScratchSize</code> member of the <a href=\"#VkAccelerationStructureBuildSizesInfoKHR\">VkAccelerationStructureBuildSizesInfoKHR</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureBuildSizesKHR\">vkGetAccelerationStructureBuildSizesKHR</a> with an identical <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structure and primitive count",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-geometry-03673",
          "text": "The buffers from which the buffer device addresses for all of the <code>geometry.triangles.vertexData</code>, <code>geometry.triangles.indexData</code>, <code>geometry.triangles.transformData</code>, <code>geometry.aabbs.data</code>, and <code>geometry.instances.data</code> members of all <code>pInfos</code>[i].<code>pGeometries</code> and <code>pInfos</code>[i].<code>ppGeometries</code> are queried <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03674",
          "text": "The buffer from which the buffer device address <code>pInfos</code>[i].<code>scratchData.deviceAddress</code> is queried <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_STORAGE_BUFFER_BIT</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03802",
          "text": "For each element of <code>pInfos</code>, its <code>scratchData.deviceAddress</code> member <strong class=\"purple\">must</strong> be a valid device address obtained from <a href=\"#vkGetBufferDeviceAddress\">vkGetBufferDeviceAddress</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03803",
          "text": "For each element of <code>pInfos</code>, if <code>scratchData.deviceAddress</code> is the address of a non-sparse buffer then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03710",
          "text": "For each element of <code>pInfos</code>, its <code>scratchData.deviceAddress</code> member <strong class=\"purple\">must</strong> be a multiple of <a href=\"#VkPhysicalDeviceAccelerationStructurePropertiesKHR\">VkPhysicalDeviceAccelerationStructurePropertiesKHR</a>::<code>minAccelerationStructureScratchOffsetAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03804",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, <code>geometry.triangles.vertexData.deviceAddress</code> <strong class=\"purple\">must</strong> be a valid device address obtained from <a href=\"#vkGetBufferDeviceAddress\">vkGetBufferDeviceAddress</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03805",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.vertexData.deviceAddress</code> is the address of a non-sparse buffer then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03711",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, <code>geometry.triangles.vertexData.deviceAddress</code> <strong class=\"purple\">must</strong> be aligned to the size in bytes of the smallest component of the format in <code>vertexFormat</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03806",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.indexType</code> is not <code>VK_INDEX_TYPE_NONE_KHR</code>, <code>geometry.triangles.indexData.deviceAddress</code> <strong class=\"purple\">must</strong> be a valid device address obtained from <a href=\"#vkGetBufferDeviceAddress\">vkGetBufferDeviceAddress</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03807",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.indexType</code> is not <code>VK_INDEX_TYPE_NONE_KHR</code>, if <code>geometry.triangles.indexData.deviceAddress</code> is the address of a non-sparse buffer then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03712",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, and with <code>geometry.triangles.indexType</code> not equal to <code>VK_INDEX_TYPE_NONE_KHR</code>, <code>geometry.triangles.indexData.deviceAddress</code> <strong class=\"purple\">must</strong> be aligned to the size in bytes of the type in <code>indexType</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03808",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.transformData.deviceAddress</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be a valid device address obtained from <a href=\"#vkGetBufferDeviceAddress\">vkGetBufferDeviceAddress</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03809",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.transformData.deviceAddress</code> is the address of a non-sparse buffer then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03810",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.transformData.deviceAddress</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be aligned to <code>16</code> bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03811",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_AABBS_KHR</code>, <code>geometry.aabbs.data.deviceAddress</code> <strong class=\"purple\">must</strong> be a valid device address obtained from <a href=\"#vkGetBufferDeviceAddress\">vkGetBufferDeviceAddress</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03812",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_AABBS_KHR</code>, if <code>geometry.aabbs.data.deviceAddress</code> is the address of a non-sparse buffer then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03714",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_AABBS_KHR</code>, <code>geometry.aabbs.data.deviceAddress</code> <strong class=\"purple\">must</strong> be aligned to <code>8</code> bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03715",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, if <code>geometry.arrayOfPointers</code> is <code>VK_FALSE</code>, <code>geometry.instances.data.deviceAddress</code> <strong class=\"purple\">must</strong> be aligned to <code>16</code> bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03716",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, if <code>geometry.arrayOfPointers</code> is <code>VK_TRUE</code>, <code>geometry.instances.data.deviceAddress</code> <strong class=\"purple\">must</strong> be aligned to <code>8</code> bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03717",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, if <code>geometry.arrayOfPointers</code> is <code>VK_TRUE</code>, each element of <code>geometry.instances.data.deviceAddress</code> in device memory <strong class=\"purple\">must</strong> be aligned to <code>16</code> bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03813",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, <code>geometry.instances.data.deviceAddress</code> <strong class=\"purple\">must</strong> be a valid device address obtained from <a href=\"#vkGetBufferDeviceAddress\">vkGetBufferDeviceAddress</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03814",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, if <code>geometry.instances.data.deviceAddress</code> is the address of a non-sparse buffer then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-06707",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, each <a href=\"#VkAccelerationStructureInstanceKHR\">VkAccelerationStructureInstanceKHR</a>::<code>accelerationStructureReference</code> value in <code>geometry.instances.data.deviceAddress</code> <strong class=\"purple\">must</strong> be a valid device address containing a value obtained from <a href=\"#vkGetAccelerationStructureDeviceAddressKHR\">vkGetAccelerationStructureDeviceAddressKHR</a> or <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-commandBuffer-09547",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-10126",
          "text": "For each <code>pInfos</code>[i], <code>dstAccelerationStructure</code> <strong class=\"purple\">must</strong> have been created with a value of <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>size</code> greater than or equal to either:<div class=\"ulist\">\n<ul>\n<li>\n<p>the memory size required by the build operation, as returned by\n<a href=\"#vkGetAccelerationStructureBuildSizesKHR\">vkGetAccelerationStructureBuildSizesKHR</a> with\n<span class=\"eq\"><code>pBuildInfo</code> = <code>pInfos</code>[i]</span> and with each element of the\n<code>pMaxPrimitiveCounts</code> array greater than or equal to the equivalent\n<code>ppBuildRangeInfos</code>[i][j].<code>primitiveCount</code> values for <code>j</code> in\n<span class=\"eq\">[0,<code>pInfos</code>[i].<code>geometryCount</code>)</span> or,</p>\n</li>\n<li>\n<p>the result of querying the corresponding\n<code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code>, if\nupdating a compacted acceleration structure</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-ppBuildRangeInfos-03676",
          "text": "Each element of <code>ppBuildRangeInfos</code>[i] <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pInfos</code>[i].<code>geometryCount</code> <code>VkAccelerationStructureBuildRangeInfoKHR</code> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-parameter",
          "text": "<code>pInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>infoCount</code> valid <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-ppBuildRangeInfos-parameter",
          "text": "<code>ppBuildRangeInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>infoCount</code> <a href=\"#VkAccelerationStructureBuildRangeInfoKHR\">VkAccelerationStructureBuildRangeInfoKHR</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-infoCount-arraylength",
          "text": "<code>infoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdBuildAccelerationStructuresIndirectKHR": {
      "core": [
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-accelerationStructureIndirectBuild-03650",
          "text": "The <a href=\"#features-accelerationStructureIndirectBuild\"><code>VkPhysicalDeviceAccelerationStructureFeaturesKHR</code>::<code>accelerationStructureIndirectBuild</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-mode-04628",
          "text": "The <code>mode</code> member of each element of <code>pInfos</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuildAccelerationStructureModeKHR\">VkBuildAccelerationStructureModeKHR</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-srcAccelerationStructure-04629",
          "text": "If the <code>srcAccelerationStructure</code> member of any element of <code>pInfos</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-04630",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03403",
          "text": "The <code>srcAccelerationStructure</code> member of any element of <code>pInfos</code> <strong class=\"purple\">must</strong> not be the same acceleration structure as the <code>dstAccelerationStructure</code> member of any other element of <code>pInfos</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03698",
          "text": "The <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> <strong class=\"purple\">must</strong> not be the same acceleration structure as the <code>dstAccelerationStructure</code> member of any other element of <code>pInfos</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03800",
          "text": "The <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03699",
          "text": "For each element of <code>pInfos</code>, if its <code>type</code> member is <code>VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR</code>, its <code>dstAccelerationStructure</code> member <strong class=\"purple\">must</strong> have been created with a value of <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>type</code> equal to either <code>VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR</code> or <code>VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03700",
          "text": "For each element of <code>pInfos</code>, if its <code>type</code> member is <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR</code>, its <code>dstAccelerationStructure</code> member <strong class=\"purple\">must</strong> have been created with a value of <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>type</code> equal to either <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR</code> or <code>VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03663",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, <a href=\"#acceleration-structure-inactive-prims\">inactive primitives</a> in its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> not be made active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03664",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, active primitives in its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> not be made <a href=\"#acceleration-structure-inactive-prims\">inactive</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-None-03407",
          "text": "The <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> <strong class=\"purple\">must</strong> not be referenced by the <code>geometry.instances.data</code> member of any element of <code>pGeometries</code> or <code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code> in any other element of <code>pInfos</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03701",
          "text": "The range of memory backing the <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>srcAccelerationStructure</code> member of any other element of <code>pInfos</code> with a <code>mode</code> equal to <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, which is accessed by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03702",
          "text": "The range of memory backing the <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>dstAccelerationStructure</code> member of any other element of <code>pInfos</code>, which is accessed by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03703",
          "text": "The range of memory backing the <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>scratchData</code> member of any element of <code>pInfos</code> (including the same element), which is accessed by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-scratchData-03704",
          "text": "The range of memory backing the <code>scratchData</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>scratchData</code> member of any other element of <code>pInfos</code>, which is accessed by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-scratchData-03705",
          "text": "The range of memory backing the <code>scratchData</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>srcAccelerationStructure</code> member of any element of <code>pInfos</code> with a <code>mode</code> equal to <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code> (including the same element), which is accessed by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03706",
          "text": "The range of memory backing the <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing any acceleration structure referenced by the <code>geometry.instances.data</code> member of any element of <code>pGeometries</code> or <code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code> in any other element of <code>pInfos</code>, which is accessed by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03667",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> have previously been constructed with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR</code> set in <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a>::<code>flags</code> in the build",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03668",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>srcAccelerationStructure</code> and <code>dstAccelerationStructure</code> members <strong class=\"purple\">must</strong> either be the same <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a>, or not have any <a href=\"#resources-memory-aliasing\">memory aliasing</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03758",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>geometryCount</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03759",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>flags</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03760",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>type</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03761",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, its <code>geometryType</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03762",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, its <code>flags</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03763",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, its <code>geometry.triangles.vertexFormat</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03764",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, its <code>geometry.triangles.maxVertex</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03765",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, its <code>geometry.triangles.indexType</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03766",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if its <code>geometry.triangles.transformData</code> address was <code>NULL</code> when <code>srcAccelerationStructure</code> was last built, then it <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03767",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if its <code>geometry.triangles.transformData</code> address was not <code>NULL</code> when <code>srcAccelerationStructure</code> was last built, then it <strong class=\"purple\">must</strong> not be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03768",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, and <code>geometry.triangles.indexType</code> is not <code>VK_INDEX_TYPE_NONE_KHR</code>, then the value of each index referenced <strong class=\"purple\">must</strong> be the same as the corresponding index value when <code>srcAccelerationStructure</code> was last built",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-primitiveCount-03769",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, the <code>primitiveCount</code> member of its corresponding <code>VkAccelerationStructureBuildRangeInfoKHR</code> structure <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03801",
          "text": "For each element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, the corresponding <code>ppMaxPrimitiveCounts</code>[i][j] <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceAccelerationStructurePropertiesKHR\">VkPhysicalDeviceAccelerationStructurePropertiesKHR</a>::<code>maxInstanceCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03707",
          "text": "For each element of <code>pInfos</code>, the <code>buffer</code> used to create its <code>dstAccelerationStructure</code> member <strong class=\"purple\">must</strong> be bound to device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03708",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code> the <code>buffer</code> used to create its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> be bound to device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03709",
          "text": "For each element of <code>pInfos</code>, the <code>buffer</code> used to create each acceleration structure referenced by the <code>geometry.instances.data</code> member of any element of <code>pGeometries</code> or <code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code> <strong class=\"purple\">must</strong> be bound to device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03671",
          "text": "If <code>pInfos</code>[i].<code>mode</code> is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR</code>, all addresses between <code>pInfos</code>[i].<code>scratchData.deviceAddress</code> and <code>pInfos</code>[i].<code>scratchData.deviceAddress</code> +  N - 1 <strong class=\"purple\">must</strong> be in the buffer device address range of the same buffer, where N is given by the <code>buildScratchSize</code> member of the <a href=\"#VkAccelerationStructureBuildSizesInfoKHR\">VkAccelerationStructureBuildSizesInfoKHR</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureBuildSizesKHR\">vkGetAccelerationStructureBuildSizesKHR</a> with an identical <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structure and primitive count",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03672",
          "text": "If <code>pInfos</code>[i].<code>mode</code> is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, all addresses between <code>pInfos</code>[i].<code>scratchData.deviceAddress</code> and <code>pInfos</code>[i].<code>scratchData.deviceAddress</code> +  N - 1 <strong class=\"purple\">must</strong> be in the buffer device address range of the same buffer, where N is given by the <code>updateScratchSize</code> member of the <a href=\"#VkAccelerationStructureBuildSizesInfoKHR\">VkAccelerationStructureBuildSizesInfoKHR</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureBuildSizesKHR\">vkGetAccelerationStructureBuildSizesKHR</a> with an identical <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structure and primitive count",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-geometry-03673",
          "text": "The buffers from which the buffer device addresses for all of the <code>geometry.triangles.vertexData</code>, <code>geometry.triangles.indexData</code>, <code>geometry.triangles.transformData</code>, <code>geometry.aabbs.data</code>, and <code>geometry.instances.data</code> members of all <code>pInfos</code>[i].<code>pGeometries</code> and <code>pInfos</code>[i].<code>ppGeometries</code> are queried <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03674",
          "text": "The buffer from which the buffer device address <code>pInfos</code>[i].<code>scratchData.deviceAddress</code> is queried <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_STORAGE_BUFFER_BIT</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03802",
          "text": "For each element of <code>pInfos</code>, its <code>scratchData.deviceAddress</code> member <strong class=\"purple\">must</strong> be a valid device address obtained from <a href=\"#vkGetBufferDeviceAddress\">vkGetBufferDeviceAddress</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03803",
          "text": "For each element of <code>pInfos</code>, if <code>scratchData.deviceAddress</code> is the address of a non-sparse buffer then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03710",
          "text": "For each element of <code>pInfos</code>, its <code>scratchData.deviceAddress</code> member <strong class=\"purple\">must</strong> be a multiple of <a href=\"#VkPhysicalDeviceAccelerationStructurePropertiesKHR\">VkPhysicalDeviceAccelerationStructurePropertiesKHR</a>::<code>minAccelerationStructureScratchOffsetAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03804",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, <code>geometry.triangles.vertexData.deviceAddress</code> <strong class=\"purple\">must</strong> be a valid device address obtained from <a href=\"#vkGetBufferDeviceAddress\">vkGetBufferDeviceAddress</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03805",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.vertexData.deviceAddress</code> is the address of a non-sparse buffer then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03711",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, <code>geometry.triangles.vertexData.deviceAddress</code> <strong class=\"purple\">must</strong> be aligned to the size in bytes of the smallest component of the format in <code>vertexFormat</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03806",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.indexType</code> is not <code>VK_INDEX_TYPE_NONE_KHR</code>, <code>geometry.triangles.indexData.deviceAddress</code> <strong class=\"purple\">must</strong> be a valid device address obtained from <a href=\"#vkGetBufferDeviceAddress\">vkGetBufferDeviceAddress</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03807",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.indexType</code> is not <code>VK_INDEX_TYPE_NONE_KHR</code>, if <code>geometry.triangles.indexData.deviceAddress</code> is the address of a non-sparse buffer then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03712",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, and with <code>geometry.triangles.indexType</code> not equal to <code>VK_INDEX_TYPE_NONE_KHR</code>, <code>geometry.triangles.indexData.deviceAddress</code> <strong class=\"purple\">must</strong> be aligned to the size in bytes of the type in <code>indexType</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03808",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.transformData.deviceAddress</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be a valid device address obtained from <a href=\"#vkGetBufferDeviceAddress\">vkGetBufferDeviceAddress</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03809",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.transformData.deviceAddress</code> is the address of a non-sparse buffer then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03810",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.transformData.deviceAddress</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be aligned to <code>16</code> bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03811",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_AABBS_KHR</code>, <code>geometry.aabbs.data.deviceAddress</code> <strong class=\"purple\">must</strong> be a valid device address obtained from <a href=\"#vkGetBufferDeviceAddress\">vkGetBufferDeviceAddress</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03812",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_AABBS_KHR</code>, if <code>geometry.aabbs.data.deviceAddress</code> is the address of a non-sparse buffer then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03714",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_AABBS_KHR</code>, <code>geometry.aabbs.data.deviceAddress</code> <strong class=\"purple\">must</strong> be aligned to <code>8</code> bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03715",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, if <code>geometry.arrayOfPointers</code> is <code>VK_FALSE</code>, <code>geometry.instances.data.deviceAddress</code> <strong class=\"purple\">must</strong> be aligned to <code>16</code> bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03716",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, if <code>geometry.arrayOfPointers</code> is <code>VK_TRUE</code>, <code>geometry.instances.data.deviceAddress</code> <strong class=\"purple\">must</strong> be aligned to <code>8</code> bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03717",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, if <code>geometry.arrayOfPointers</code> is <code>VK_TRUE</code>, each element of <code>geometry.instances.data.deviceAddress</code> in device memory <strong class=\"purple\">must</strong> be aligned to <code>16</code> bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03813",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, <code>geometry.instances.data.deviceAddress</code> <strong class=\"purple\">must</strong> be a valid device address obtained from <a href=\"#vkGetBufferDeviceAddress\">vkGetBufferDeviceAddress</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03814",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, if <code>geometry.instances.data.deviceAddress</code> is the address of a non-sparse buffer then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-06707",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, each <a href=\"#VkAccelerationStructureInstanceKHR\">VkAccelerationStructureInstanceKHR</a>::<code>accelerationStructureReference</code> value in <code>geometry.instances.data.deviceAddress</code> <strong class=\"purple\">must</strong> be a valid device address containing a value obtained from <a href=\"#vkGetAccelerationStructureDeviceAddressKHR\">vkGetAccelerationStructureDeviceAddressKHR</a> or <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-commandBuffer-09547",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03645",
          "text": "For any element of <code>pIndirectDeviceAddresses</code>, if the buffer from which it was queried is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03646",
          "text": "For any element of <code>pIndirectDeviceAddresses</code>[i], all device addresses between <code>pIndirectDeviceAddresses</code>[i] and <span class=\"eq\"><code>pIndirectDeviceAddresses</code>[i] +  (<code>pInfos</code>[i].<code>geometryCount</code> × <code>pIndirectStrides</code>[i]) - 1</span> <strong class=\"purple\">must</strong> be in the buffer device address range of the same buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03647",
          "text": "For any element of <code>pIndirectDeviceAddresses</code>, the buffer from which it was queried <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03648",
          "text": "Each element of <code>pIndirectDeviceAddresses</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectStrides-03787",
          "text": "Each element of <code>pIndirectStrides</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03651",
          "text": "Each <a href=\"#VkAccelerationStructureBuildRangeInfoKHR\">VkAccelerationStructureBuildRangeInfoKHR</a> structure referenced by any element of <code>pIndirectDeviceAddresses</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureBuildRangeInfoKHR\">VkAccelerationStructureBuildRangeInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03652",
          "text": "<code>pInfos</code>[i].<code>dstAccelerationStructure</code> <strong class=\"purple\">must</strong> have been created with a value of <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>size</code> greater than or equal to the memory size required by the build operation, as returned by <a href=\"#vkGetAccelerationStructureBuildSizesKHR\">vkGetAccelerationStructureBuildSizesKHR</a> with <span class=\"eq\"><code>pBuildInfo</code> = <code>pInfos</code>[i]</span> and <span class=\"eq\"><code>pMaxPrimitiveCounts</code> = <code>ppMaxPrimitiveCounts</code>[i]</span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-ppMaxPrimitiveCounts-03653",
          "text": "Each <code>ppMaxPrimitiveCounts</code>[i][j] <strong class=\"purple\">must</strong> be greater than or equal to the <code>primitiveCount</code> value specified by the <a href=\"#VkAccelerationStructureBuildRangeInfoKHR\">VkAccelerationStructureBuildRangeInfoKHR</a> structure located at <span class=\"eq\"><code>pIndirectDeviceAddresses</code>[i] +  (<code>j</code> × <code>pIndirectStrides</code>[i])</span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-parameter",
          "text": "<code>pInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>infoCount</code> valid <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-parameter",
          "text": "<code>pIndirectDeviceAddresses</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>infoCount</code> <a href=\"#VkDeviceAddress\">VkDeviceAddress</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectStrides-parameter",
          "text": "<code>pIndirectStrides</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>infoCount</code> <code>uint32_t</code> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-ppMaxPrimitiveCounts-parameter",
          "text": "<code>ppMaxPrimitiveCounts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>infoCount</code> <code>uint32_t</code> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-infoCount-arraylength",
          "text": "<code>infoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkAccelerationStructureBuildGeometryInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03654",
          "text": "<code>type</code> <strong class=\"purple\">must</strong> not be <code>VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-pGeometries-03788",
          "text": "If <code>geometryCount</code> is not <code>0</code>, exactly one of <code>pGeometries</code> or <code>ppGeometries</code> <strong class=\"purple\">must</strong> be a valid pointer, the other <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03789",
          "text": "If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR</code>, the <code>geometryType</code> member of elements of either <code>pGeometries</code> or <code>ppGeometries</code> <strong class=\"purple\">must</strong> be <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03790",
          "text": "If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR</code>, <code>geometryCount</code> <strong class=\"purple\">must</strong> be <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03791",
          "text": "If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR</code> the <code>geometryType</code> member of elements of either <code>pGeometries</code> or <code>ppGeometries</code> <strong class=\"purple\">must</strong> not be <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03792",
          "text": "If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR</code> then the <code>geometryType</code> member of each geometry in either <code>pGeometries</code> or <code>ppGeometries</code> <strong class=\"purple\">must</strong> be the same",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03793",
          "text": "If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR</code> then <code>geometryCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceAccelerationStructurePropertiesKHR\">VkPhysicalDeviceAccelerationStructurePropertiesKHR</a>::<code>maxGeometryCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03794",
          "text": "If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR</code> and the <code>geometryType</code> member of either <code>pGeometries</code> or <code>ppGeometries</code> is <code>VK_GEOMETRY_TYPE_AABBS_KHR</code>, the total number of AABBs in all geometries <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceAccelerationStructurePropertiesKHR\">VkPhysicalDeviceAccelerationStructurePropertiesKHR</a>::<code>maxPrimitiveCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03795",
          "text": "If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR</code> and the <code>geometryType</code> member of either <code>pGeometries</code> or <code>ppGeometries</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, the total number of triangles in all geometries <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceAccelerationStructurePropertiesKHR\">VkPhysicalDeviceAccelerationStructurePropertiesKHR</a>::<code>maxPrimitiveCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-flags-03796",
          "text": "If <code>flags</code> has the <code>VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR</code> bit set, then it <strong class=\"purple\">must</strong> not have the <code>VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-dstAccelerationStructure-04927",
          "text": "If <code>dstAccelerationStructure</code> was created with <code>VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV</code> set in <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>flags</code>, <code>VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV</code> <strong class=\"purple\">must</strong> be set in <code>flags</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-flags-04928",
          "text": "If <code>VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV</code> is set in <code>flags</code>, <code>dstAccelerationStructure</code> <strong class=\"purple\">must</strong> have been created with <code>VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV</code> set in <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>flags</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-flags-04929",
          "text": "If <code>VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV</code> is set in <code>flags</code>, <code>type</code> <strong class=\"purple\">must</strong> not be <code>VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-flags-07334",
          "text": "If <code>flags</code> has the <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT</code> bit set then it <strong class=\"purple\">must</strong> not have the <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-parameter",
          "text": "<code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureTypeKHR\">VkAccelerationStructureTypeKHR</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBuildAccelerationStructureFlagBitsKHR\">VkBuildAccelerationStructureFlagBitsKHR</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-pGeometries-parameter",
          "text": "If <code>geometryCount</code> is not <code>0</code>, and <code>pGeometries</code> is not <code>NULL</code>, <code>pGeometries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>geometryCount</code> valid <a href=\"#VkAccelerationStructureGeometryKHR\">VkAccelerationStructureGeometryKHR</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-ppGeometries-parameter",
          "text": "If <code>geometryCount</code> is not <code>0</code>, and <code>ppGeometries</code> is not <code>NULL</code>, <code>ppGeometries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>geometryCount</code> valid pointers to valid <a href=\"#VkAccelerationStructureGeometryKHR\">VkAccelerationStructureGeometryKHR</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-commonparent",
          "text": "Both of <code>dstAccelerationStructure</code>, and <code>srcAccelerationStructure</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkAccelerationStructureGeometryKHR": {
      "core": [
        {
          "vuid": "VUID-VkAccelerationStructureGeometryKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureGeometryKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureGeometryKHR-geometryType-parameter",
          "text": "<code>geometryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkGeometryTypeKHR\">VkGeometryTypeKHR</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureGeometryKHR-triangles-parameter",
          "text": "If <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, the <code>triangles</code> member of <code>geometry</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureGeometryTrianglesDataKHR\">VkAccelerationStructureGeometryTrianglesDataKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureGeometryKHR-aabbs-parameter",
          "text": "If <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_AABBS_KHR</code>, the <code>aabbs</code> member of <code>geometry</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureGeometryAabbsDataKHR\">VkAccelerationStructureGeometryAabbsDataKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureGeometryKHR-instances-parameter",
          "text": "If <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, the <code>instances</code> member of <code>geometry</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureGeometryInstancesDataKHR\">VkAccelerationStructureGeometryInstancesDataKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureGeometryKHR-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkGeometryFlagBitsKHR\">VkGeometryFlagBitsKHR</a> values",
          "page": "vkspec"
        }
      ]
    },
    "VkAccelerationStructureGeometryTrianglesDataKHR": {
      "core": [
        {
          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexStride-03735",
          "text": "<code>vertexStride</code> <strong class=\"purple\">must</strong> be a multiple of the size in bytes of the smallest component of <code>vertexFormat</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexStride-03819",
          "text": "<code>vertexStride</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\">2<sup>32</sup>-1</span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexFormat-03797",
          "text": "The <a href=\"#resources-buffer-view-format-features\">format features</a> of <code>vertexFormat</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-indexType-03798",
          "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_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-pNext-pNext",
          "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=\"#VkAccelerationStructureGeometryMotionTrianglesDataNV\">VkAccelerationStructureGeometryMotionTrianglesDataNV</a>, <a href=\"#VkAccelerationStructureTrianglesDisplacementMicromapNV\">VkAccelerationStructureTrianglesDisplacementMicromapNV</a>, or <a href=\"#VkAccelerationStructureTrianglesOpacityMicromapEXT\">VkAccelerationStructureTrianglesOpacityMicromapEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexFormat-parameter",
          "text": "<code>vertexFormat</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-indexType-parameter",
          "text": "<code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkAccelerationStructureGeometryMotionTrianglesDataNV": {
      "core": [
        {
          "vuid": "VUID-VkAccelerationStructureGeometryMotionTrianglesDataNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkAccelerationStructureTrianglesOpacityMicromapEXT": {
      "core": [
        {
          "vuid": "VUID-VkAccelerationStructureTrianglesOpacityMicromapEXT-pUsageCounts-07335",
          "text": "Only one of <code>pUsageCounts</code> or <code>ppUsageCounts</code> <strong class=\"purple\">can</strong> be a valid pointer, the other <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureTrianglesOpacityMicromapEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureTrianglesOpacityMicromapEXT-indexType-parameter",
          "text": "<code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureTrianglesOpacityMicromapEXT-pUsageCounts-parameter",
          "text": "If <code>usageCountsCount</code> is not <code>0</code>, and <code>pUsageCounts</code> is not <code>NULL</code>, <code>pUsageCounts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>usageCountsCount</code> <a href=\"#VkMicromapUsageEXT\">VkMicromapUsageEXT</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureTrianglesOpacityMicromapEXT-ppUsageCounts-parameter",
          "text": "If <code>usageCountsCount</code> is not <code>0</code>, and <code>ppUsageCounts</code> is not <code>NULL</code>, <code>ppUsageCounts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>usageCountsCount</code> valid pointers to <a href=\"#VkMicromapUsageEXT\">VkMicromapUsageEXT</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureTrianglesOpacityMicromapEXT-micromap-parameter",
          "text": "If <code>micromap</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>micromap</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkMicromapEXT\">VkMicromapEXT</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkAccelerationStructureTrianglesDisplacementMicromapNV": {
      "core": [
        {
          "vuid": "VUID-VkAccelerationStructureTrianglesDisplacementMicromapNV-displacementBiasAndScaleFormat-09501",
          "text": "<code>displacementBiasAndScaleFormat</code> <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureTrianglesDisplacementMicromapNV-displacementVectorFormat-09502",
          "text": "<code>displacementVectorFormat</code> <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureTrianglesDisplacementMicromapNV-pUsageCounts-07992",
          "text": "Only one of <code>pUsageCounts</code> or <code>ppUsageCounts</code> <strong class=\"purple\">can</strong> be a valid pointer, the other <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureTrianglesDisplacementMicromapNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureTrianglesDisplacementMicromapNV-displacementBiasAndScaleFormat-parameter",
          "text": "<code>displacementBiasAndScaleFormat</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureTrianglesDisplacementMicromapNV-displacementVectorFormat-parameter",
          "text": "<code>displacementVectorFormat</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureTrianglesDisplacementMicromapNV-indexType-parameter",
          "text": "<code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureTrianglesDisplacementMicromapNV-pUsageCounts-parameter",
          "text": "If <code>usageCountsCount</code> is not <code>0</code>, and <code>pUsageCounts</code> is not <code>NULL</code>, <code>pUsageCounts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>usageCountsCount</code> <a href=\"#VkMicromapUsageEXT\">VkMicromapUsageEXT</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureTrianglesDisplacementMicromapNV-ppUsageCounts-parameter",
          "text": "If <code>usageCountsCount</code> is not <code>0</code>, and <code>ppUsageCounts</code> is not <code>NULL</code>, <code>ppUsageCounts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>usageCountsCount</code> valid pointers to <a href=\"#VkMicromapUsageEXT\">VkMicromapUsageEXT</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureTrianglesDisplacementMicromapNV-micromap-parameter",
          "text": "If <code>micromap</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>micromap</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkMicromapEXT\">VkMicromapEXT</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkTransformMatrixKHR": {
      "core": [
        {
          "vuid": "VUID-VkTransformMatrixKHR-matrix-03799",
          "text": "The first three columns of <code>matrix</code> <strong class=\"purple\">must</strong> define an invertible 3x3 matrix",
          "page": "vkspec"
        }
      ]
    },
    "VkAccelerationStructureGeometryAabbsDataKHR": {
      "core": [
        {
          "vuid": "VUID-VkAccelerationStructureGeometryAabbsDataKHR-stride-03545",
          "text": "<code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>8</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureGeometryAabbsDataKHR-stride-03820",
          "text": "<code>stride</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\">2<sup>32</sup>-1</span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureGeometryAabbsDataKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureGeometryAabbsDataKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkAabbPositionsKHR": {
      "core": [
        {
          "vuid": "VUID-VkAabbPositionsKHR-minX-03546",
          "text": "<code>minX</code> <strong class=\"purple\">must</strong> be less than or equal to <code>maxX</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAabbPositionsKHR-minY-03547",
          "text": "<code>minY</code> <strong class=\"purple\">must</strong> be less than or equal to <code>maxY</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAabbPositionsKHR-minZ-03548",
          "text": "<code>minZ</code> <strong class=\"purple\">must</strong> be less than or equal to <code>maxZ</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkAccelerationStructureGeometryInstancesDataKHR": {
      "core": [
        {
          "vuid": "VUID-VkAccelerationStructureGeometryInstancesDataKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureGeometryInstancesDataKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkAccelerationStructureInstanceKHR": {
      "core": [
        {
          "vuid": "VUID-VkAccelerationStructureInstanceKHR-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkGeometryInstanceFlagBitsKHR\">VkGeometryInstanceFlagBitsKHR</a> values",
          "page": "vkspec"
        }
      ]
    },
    "VkAccelerationStructureMotionInstanceNV": {
      "core": [
        {
          "vuid": "VUID-VkAccelerationStructureMotionInstanceNV-type-parameter",
          "text": "<code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureMotionInstanceTypeNV\">VkAccelerationStructureMotionInstanceTypeNV</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureMotionInstanceNV-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureMotionInstanceNV-staticInstance-parameter",
          "text": "If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV</code>, the <code>staticInstance</code> member of <code>data</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureInstanceKHR\">VkAccelerationStructureInstanceKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureMotionInstanceNV-matrixMotionInstance-parameter",
          "text": "If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV</code>, the <code>matrixMotionInstance</code> member of <code>data</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureMatrixMotionInstanceNV\">VkAccelerationStructureMatrixMotionInstanceNV</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureMotionInstanceNV-srtMotionInstance-parameter",
          "text": "If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV</code>, the <code>srtMotionInstance</code> member of <code>data</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureSRTMotionInstanceNV\">VkAccelerationStructureSRTMotionInstanceNV</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkAccelerationStructureMatrixMotionInstanceNV": {
      "core": [
        {
          "vuid": "VUID-VkAccelerationStructureMatrixMotionInstanceNV-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkGeometryInstanceFlagBitsKHR\">VkGeometryInstanceFlagBitsKHR</a> values",
          "page": "vkspec"
        }
      ]
    },
    "VkAccelerationStructureSRTMotionInstanceNV": {
      "core": [
        {
          "vuid": "VUID-VkAccelerationStructureSRTMotionInstanceNV-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkGeometryInstanceFlagBitsKHR\">VkGeometryInstanceFlagBitsKHR</a> values",
          "page": "vkspec"
        }
      ]
    },
    "VkAccelerationStructureBuildRangeInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03656",
          "text": "For geometries of type <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if the geometry uses indices, the offset <code>primitiveOffset</code> from <a href=\"#VkAccelerationStructureGeometryTrianglesDataKHR\">VkAccelerationStructureGeometryTrianglesDataKHR</a>::<code>indexData</code> <strong class=\"purple\">must</strong> be a multiple of the element size of <a href=\"#VkAccelerationStructureGeometryTrianglesDataKHR\">VkAccelerationStructureGeometryTrianglesDataKHR</a>::<code>indexType</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03657",
          "text": "For geometries of type <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if the geometry does not use indices, the offset <code>primitiveOffset</code> from <a href=\"#VkAccelerationStructureGeometryTrianglesDataKHR\">VkAccelerationStructureGeometryTrianglesDataKHR</a>::<code>vertexData</code> <strong class=\"purple\">must</strong> be a multiple of the component size of <a href=\"#VkAccelerationStructureGeometryTrianglesDataKHR\">VkAccelerationStructureGeometryTrianglesDataKHR</a>::<code>vertexFormat</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureBuildRangeInfoKHR-transformOffset-03658",
          "text": "For geometries of type <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, the offset <code>transformOffset</code> from <a href=\"#VkAccelerationStructureGeometryTrianglesDataKHR\">VkAccelerationStructureGeometryTrianglesDataKHR</a>::<code>transformData</code> <strong class=\"purple\">must</strong> be a multiple of 16",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03659",
          "text": "For geometries of type <code>VK_GEOMETRY_TYPE_AABBS_KHR</code>, the offset <code>primitiveOffset</code> from <a href=\"#VkAccelerationStructureGeometryAabbsDataKHR\">VkAccelerationStructureGeometryAabbsDataKHR</a>::<code>data</code> <strong class=\"purple\">must</strong> be a multiple of 8",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03660",
          "text": "For geometries of type <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, the offset <code>primitiveOffset</code> from <a href=\"#VkAccelerationStructureGeometryInstancesDataKHR\">VkAccelerationStructureGeometryInstancesDataKHR</a>::<code>data</code> <strong class=\"purple\">must</strong> be a multiple of 16",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdWriteAccelerationStructuresPropertiesKHR": {
      "core": [
        {
          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-accelerationStructure-08924",
          "text": "The <a href=\"#features-accelerationStructure\"><code>VkPhysicalDeviceAccelerationStructureFeaturesKHR</code>::<code>accelerationStructure</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryPool-02493",
          "text": "<code>queryPool</code> <strong class=\"purple\">must</strong> have been created with a <code>queryType</code> matching <code>queryType</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryPool-02494",
          "text": "The queries identified by <code>queryPool</code> and <code>firstQuery</code> <strong class=\"purple\">must</strong> be <em>unavailable</em>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-buffer-03736",
          "text": "The <code>buffer</code> used to create each acceleration structure in <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> be bound to device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-query-04880",
          "text": "The sum of <code>firstQuery</code> plus <code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-04964",
          "text": "All acceleration structures in <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> have been built prior to the execution of this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-accelerationStructures-03431",
          "text": "All acceleration structures in <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> have been built with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR</code> if <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryType-06742",
          "text": "<code>queryType</code> <strong class=\"purple\">must</strong> be <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR</code>, <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR</code>, <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code>, or <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-parameter",
          "text": "<code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>accelerationStructureCount</code> valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryType-parameter",
          "text": "<code>queryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryType\">VkQueryType</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryPool-parameter",
          "text": "<code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-accelerationStructureCount-arraylength",
          "text": "<code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commonparent",
          "text": "Each of <code>commandBuffer</code>, <code>queryPool</code>, and the elements of <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdWriteAccelerationStructuresPropertiesNV": {
      "core": [
        {
          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-03755",
          "text": "<code>queryPool</code> <strong class=\"purple\">must</strong> have been created with a <code>queryType</code> matching <code>queryType</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-03756",
          "text": "The queries identified by <code>queryPool</code> and <code>firstQuery</code> <strong class=\"purple\">must</strong> be <em>unavailable</em>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-accelerationStructure-03757",
          "text": "<code>accelerationStructure</code> <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object via <a href=\"#vkBindAccelerationStructureMemoryNV\">vkBindAccelerationStructureMemoryNV</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-pAccelerationStructures-04958",
          "text": "All acceleration structures in <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> have been built prior to the execution of this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-pAccelerationStructures-06215",
          "text": "All acceleration structures in <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> have been built with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR</code> if <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryType-06216",
          "text": "<code>queryType</code> <strong class=\"purple\">must</strong> be <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-pAccelerationStructures-parameter",
          "text": "<code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>accelerationStructureCount</code> valid <a href=\"#VkAccelerationStructureNV\">VkAccelerationStructureNV</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryType-parameter",
          "text": "<code>queryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryType\">VkQueryType</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-parameter",
          "text": "<code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-accelerationStructureCount-arraylength",
          "text": "<code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commonparent",
          "text": "Each of <code>commandBuffer</code>, <code>queryPool</code>, and the elements of <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdCopyAccelerationStructureNV": {
      "core": [
        {
          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-mode-03410",
          "text": "<code>mode</code> <strong class=\"purple\">must</strong> be <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR</code> or <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-src-04963",
          "text": "The source acceleration structure <code>src</code> <strong class=\"purple\">must</strong> have been constructed prior to the execution of this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-src-03411",
          "text": "If <code>mode</code> is <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR</code>, <code>src</code> <strong class=\"purple\">must</strong> have been constructed with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR</code> in the build",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-buffer-03718",
          "text": "The <code>buffer</code> used to create <code>src</code> <strong class=\"purple\">must</strong> be bound to device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-buffer-03719",
          "text": "The <code>buffer</code> used to create <code>dst</code> <strong class=\"purple\">must</strong> be bound to device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-dst-07791",
          "text": "The range of memory backing <code>dst</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing <code>src</code> that is accessed by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-dst-07792",
          "text": "<code>dst</code> <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object via <a href=\"#vkBindAccelerationStructureMemoryNV\">vkBindAccelerationStructureMemoryNV</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-dst-parameter",
          "text": "<code>dst</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureNV\">VkAccelerationStructureNV</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-src-parameter",
          "text": "<code>src</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureNV\">VkAccelerationStructureNV</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-mode-parameter",
          "text": "<code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCopyAccelerationStructureModeKHR\">VkCopyAccelerationStructureModeKHR</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commonparent",
          "text": "Each of <code>commandBuffer</code>, <code>dst</code>, and <code>src</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdCopyAccelerationStructureKHR": {
      "core": [
        {
          "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-accelerationStructure-08925",
          "text": "The <a href=\"#features-accelerationStructure\"><code>VkPhysicalDeviceAccelerationStructureFeaturesKHR</code>::<code>accelerationStructure</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-buffer-03737",
          "text": "The <code>buffer</code> used to create <code>pInfo-&gt;src</code> <strong class=\"purple\">must</strong> be bound to device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-buffer-03738",
          "text": "The <code>buffer</code> used to create <code>pInfo-&gt;dst</code> <strong class=\"purple\">must</strong> be bound to device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-pInfo-parameter",
          "text": "<code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyAccelerationStructureInfoKHR\">VkCopyAccelerationStructureInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkCopyAccelerationStructureInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-mode-03410",
          "text": "<code>mode</code> <strong class=\"purple\">must</strong> be <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR</code> or <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-src-04963",
          "text": "The source acceleration structure <code>src</code> <strong class=\"purple\">must</strong> have been constructed prior to the execution of this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-src-03411",
          "text": "If <code>mode</code> is <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR</code>, <code>src</code> <strong class=\"purple\">must</strong> have been constructed with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR</code> in the build",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-buffer-03718",
          "text": "The <code>buffer</code> used to create <code>src</code> <strong class=\"purple\">must</strong> be bound to device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-buffer-03719",
          "text": "The <code>buffer</code> used to create <code>dst</code> <strong class=\"purple\">must</strong> be bound to device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-dst-07791",
          "text": "The range of memory backing <code>dst</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing <code>src</code> that is accessed by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-src-parameter",
          "text": "<code>src</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-dst-parameter",
          "text": "<code>dst</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-mode-parameter",
          "text": "<code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCopyAccelerationStructureModeKHR\">VkCopyAccelerationStructureModeKHR</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-commonparent",
          "text": "Both of <code>dst</code>, and <code>src</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdCopyAccelerationStructureToMemoryKHR": {
      "core": [
        {
          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-accelerationStructure-08926",
          "text": "The <a href=\"#features-accelerationStructure\"><code>VkPhysicalDeviceAccelerationStructureFeaturesKHR</code>::<code>accelerationStructure</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-03739",
          "text": "<code>pInfo-&gt;dst.deviceAddress</code> <strong class=\"purple\">must</strong> be a valid device address for a buffer bound to device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-03740",
          "text": "<code>pInfo-&gt;dst.deviceAddress</code> <strong class=\"purple\">must</strong> be aligned to <code>256</code> bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-03741",
          "text": "If the buffer pointed to by <code>pInfo-&gt;dst.deviceAddress</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-None-03559",
          "text": "The <code>buffer</code> used to create <code>pInfo-&gt;src</code> <strong class=\"purple\">must</strong> be bound to device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-parameter",
          "text": "<code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyAccelerationStructureToMemoryInfoKHR\">VkCopyAccelerationStructureToMemoryInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkCopyAccelerationStructureToMemoryInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-src-04959",
          "text": "The source acceleration structure <code>src</code> <strong class=\"purple\">must</strong> have been constructed prior to the execution of this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-dst-03561",
          "text": "The memory pointed to by <code>dst</code> <strong class=\"purple\">must</strong> be at least as large as the serialization size of <code>src</code>, as reported by <a href=\"#vkWriteAccelerationStructuresPropertiesKHR\">vkWriteAccelerationStructuresPropertiesKHR</a> or <a href=\"#vkCmdWriteAccelerationStructuresPropertiesKHR\">vkCmdWriteAccelerationStructuresPropertiesKHR</a> with a query type of <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-mode-03412",
          "text": "<code>mode</code> <strong class=\"purple\">must</strong> be <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-src-parameter",
          "text": "<code>src</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-mode-parameter",
          "text": "<code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCopyAccelerationStructureModeKHR\">VkCopyAccelerationStructureModeKHR</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdCopyMemoryToAccelerationStructureKHR": {
      "core": [
        {
          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-accelerationStructure-08927",
          "text": "The <a href=\"#features-accelerationStructure\"><code>VkPhysicalDeviceAccelerationStructureFeaturesKHR</code>::<code>accelerationStructure</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-03742",
          "text": "<code>pInfo-&gt;src.deviceAddress</code> <strong class=\"purple\">must</strong> be a valid device address for a buffer bound to device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-03743",
          "text": "<code>pInfo-&gt;src.deviceAddress</code> <strong class=\"purple\">must</strong> be aligned to <code>256</code> bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-03744",
          "text": "If the buffer pointed to by <code>pInfo-&gt;src.deviceAddress</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-buffer-03745",
          "text": "The <code>buffer</code> used to create <code>pInfo-&gt;dst</code> <strong class=\"purple\">must</strong> be bound to device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-parameter",
          "text": "<code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyMemoryToAccelerationStructureInfoKHR\">VkCopyMemoryToAccelerationStructureInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkCopyMemoryToAccelerationStructureInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-src-04960",
          "text": "The source memory pointed to by <code>src</code> <strong class=\"purple\">must</strong> contain data previously serialized using <a href=\"#vkCmdCopyAccelerationStructureToMemoryKHR\">vkCmdCopyAccelerationStructureToMemoryKHR</a>, potentially modified to relocate acceleration structure references as described in that command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-mode-03413",
          "text": "<code>mode</code> <strong class=\"purple\">must</strong> be <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-pInfo-03414",
          "text": "The data in <code>src</code> <strong class=\"purple\">must</strong> have a format compatible with the destination physical device as returned by <a href=\"#vkGetDeviceAccelerationStructureCompatibilityKHR\">vkGetDeviceAccelerationStructureCompatibilityKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-dst-03746",
          "text": "<code>dst</code> <strong class=\"purple\">must</strong> have been created with a <code>size</code> greater than or equal to that used to serialize the data in <code>src</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-dst-parameter",
          "text": "<code>dst</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-mode-parameter",
          "text": "<code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCopyAccelerationStructureModeKHR\">VkCopyAccelerationStructureModeKHR</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkGetDeviceAccelerationStructureCompatibilityKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-accelerationStructure-08928",
          "text": "The <a href=\"#features-accelerationStructure\"><code>VkPhysicalDeviceAccelerationStructureFeaturesKHR</code>::<code>accelerationStructure</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-pVersionInfo-parameter",
          "text": "<code>pVersionInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureVersionInfoKHR\">VkAccelerationStructureVersionInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-pCompatibility-parameter",
          "text": "<code>pCompatibility</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkAccelerationStructureCompatibilityKHR\">VkAccelerationStructureCompatibilityKHR</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkAccelerationStructureVersionInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkAccelerationStructureVersionInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureVersionInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkAccelerationStructureVersionInfoKHR-pVersionData-parameter",
          "text": "<code>pVersionData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of \\(2 \\times \\mathtt{VK\\_UUID\\_SIZE}\\) <code>uint8_t</code> values",
          "page": "vkspec"
        }
      ]
    },
    "vkBuildAccelerationStructuresKHR": {
      "core": [
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-accelerationStructureHostCommands-03581",
          "text": "The <a href=\"#features-accelerationStructureHostCommands\"><code>VkPhysicalDeviceAccelerationStructureFeaturesKHR</code>::<code>accelerationStructureHostCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-mode-04628",
          "text": "The <code>mode</code> member of each element of <code>pInfos</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuildAccelerationStructureModeKHR\">VkBuildAccelerationStructureModeKHR</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-srcAccelerationStructure-04629",
          "text": "If the <code>srcAccelerationStructure</code> member of any element of <code>pInfos</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-04630",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03403",
          "text": "The <code>srcAccelerationStructure</code> member of any element of <code>pInfos</code> <strong class=\"purple\">must</strong> not be the same acceleration structure as the <code>dstAccelerationStructure</code> member of any other element of <code>pInfos</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03698",
          "text": "The <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> <strong class=\"purple\">must</strong> not be the same acceleration structure as the <code>dstAccelerationStructure</code> member of any other element of <code>pInfos</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03800",
          "text": "The <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03699",
          "text": "For each element of <code>pInfos</code>, if its <code>type</code> member is <code>VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR</code>, its <code>dstAccelerationStructure</code> member <strong class=\"purple\">must</strong> have been created with a value of <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>type</code> equal to either <code>VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR</code> or <code>VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03700",
          "text": "For each element of <code>pInfos</code>, if its <code>type</code> member is <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR</code>, its <code>dstAccelerationStructure</code> member <strong class=\"purple\">must</strong> have been created with a value of <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>type</code> equal to either <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR</code> or <code>VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03663",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, <a href=\"#acceleration-structure-inactive-prims\">inactive primitives</a> in its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> not be made active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03664",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, active primitives in its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> not be made <a href=\"#acceleration-structure-inactive-prims\">inactive</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-None-03407",
          "text": "The <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> <strong class=\"purple\">must</strong> not be referenced by the <code>geometry.instances.data</code> member of any element of <code>pGeometries</code> or <code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code> in any other element of <code>pInfos</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03701",
          "text": "The range of memory backing the <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>srcAccelerationStructure</code> member of any other element of <code>pInfos</code> with a <code>mode</code> equal to <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, which is accessed by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03702",
          "text": "The range of memory backing the <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>dstAccelerationStructure</code> member of any other element of <code>pInfos</code>, which is accessed by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03703",
          "text": "The range of memory backing the <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>scratchData</code> member of any element of <code>pInfos</code> (including the same element), which is accessed by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-scratchData-03704",
          "text": "The range of memory backing the <code>scratchData</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>scratchData</code> member of any other element of <code>pInfos</code>, which is accessed by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-scratchData-03705",
          "text": "The range of memory backing the <code>scratchData</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>srcAccelerationStructure</code> member of any element of <code>pInfos</code> with a <code>mode</code> equal to <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code> (including the same element), which is accessed by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03706",
          "text": "The range of memory backing the <code>dstAccelerationStructure</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing any acceleration structure referenced by the <code>geometry.instances.data</code> member of any element of <code>pGeometries</code> or <code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code> in any other element of <code>pInfos</code>, which is accessed by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03667",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> have previously been constructed with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR</code> set in <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a>::<code>flags</code> in the build",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03668",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>srcAccelerationStructure</code> and <code>dstAccelerationStructure</code> members <strong class=\"purple\">must</strong> either be the same <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a>, or not have any <a href=\"#resources-memory-aliasing\">memory aliasing</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03758",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>geometryCount</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03759",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>flags</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03760",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, its <code>type</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03761",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, its <code>geometryType</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03762",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, its <code>flags</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03763",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, its <code>geometry.triangles.vertexFormat</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03764",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, its <code>geometry.triangles.maxVertex</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03765",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, its <code>geometry.triangles.indexType</code> member <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03766",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if its <code>geometry.triangles.transformData</code> address was <code>NULL</code> when <code>srcAccelerationStructure</code> was last built, then it <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03767",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if its <code>geometry.triangles.transformData</code> address was not <code>NULL</code> when <code>srcAccelerationStructure</code> was last built, then it <strong class=\"purple\">must</strong> not be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03768",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, if <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, and <code>geometry.triangles.indexType</code> is not <code>VK_INDEX_TYPE_NONE_KHR</code>, then the value of each index referenced <strong class=\"purple\">must</strong> be the same as the corresponding index value when <code>srcAccelerationStructure</code> was last built",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-primitiveCount-03769",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, then for each <code>VkAccelerationStructureGeometryKHR</code> structure referred to by its <code>pGeometries</code> or <code>ppGeometries</code> members, the <code>primitiveCount</code> member of its corresponding <code>VkAccelerationStructureBuildRangeInfoKHR</code> structure <strong class=\"purple\">must</strong> have the same value which was specified when <code>srcAccelerationStructure</code> was last built",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03801",
          "text": "For each element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, the corresponding <code>ppBuildRangeInfos</code>[i][j].<code>primitiveCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceAccelerationStructurePropertiesKHR\">VkPhysicalDeviceAccelerationStructurePropertiesKHR</a>::<code>maxInstanceCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-10126",
          "text": "For each <code>pInfos</code>[i], <code>dstAccelerationStructure</code> <strong class=\"purple\">must</strong> have been created with a value of <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>size</code> greater than or equal to either:<div class=\"ulist\">\n<ul>\n<li>\n<p>the memory size required by the build operation, as returned by\n<a href=\"#vkGetAccelerationStructureBuildSizesKHR\">vkGetAccelerationStructureBuildSizesKHR</a> with\n<span class=\"eq\"><code>pBuildInfo</code> = <code>pInfos</code>[i]</span> and with each element of the\n<code>pMaxPrimitiveCounts</code> array greater than or equal to the equivalent\n<code>ppBuildRangeInfos</code>[i][j].<code>primitiveCount</code> values for <code>j</code> in\n<span class=\"eq\">[0,<code>pInfos</code>[i].<code>geometryCount</code>)</span> or,</p>\n</li>\n<li>\n<p>the result of querying the corresponding\n<code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code>, if\nupdating a compacted acceleration structure</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-ppBuildRangeInfos-03676",
          "text": "Each element of <code>ppBuildRangeInfos</code>[i] <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pInfos</code>[i].<code>geometryCount</code> <code>VkAccelerationStructureBuildRangeInfoKHR</code> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-deferredOperation-03678",
          "text": "Any previous deferred operation that was associated with <code>deferredOperation</code> <strong class=\"purple\">must</strong> be complete",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03722",
          "text": "For each element of <code>pInfos</code>, the <code>buffer</code> used to create its <code>dstAccelerationStructure</code> member <strong class=\"purple\">must</strong> be bound to host-visible device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03723",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code> the <code>buffer</code> used to create its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> be bound to host-visible device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03724",
          "text": "For each element of <code>pInfos</code>, the <code>buffer</code> used to create each acceleration structure referenced by the <code>geometry.instances.data</code> member of any element of <code>pGeometries</code> or <code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code> <strong class=\"purple\">must</strong> be bound to host-visible device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03725",
          "text": "If <code>pInfos</code>[i].<code>mode</code> is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR</code>, all addresses between <code>pInfos</code>[i].<code>scratchData.hostAddress</code> and <code>pInfos</code>[i].<code>scratchData.hostAddress</code> + N - 1 <strong class=\"purple\">must</strong> be valid host memory, where N is given by the <code>buildScratchSize</code> member of the <a href=\"#VkAccelerationStructureBuildSizesInfoKHR\">VkAccelerationStructureBuildSizesInfoKHR</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureBuildSizesKHR\">vkGetAccelerationStructureBuildSizesKHR</a> with an identical <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structure and primitive count",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03726",
          "text": "If <code>pInfos</code>[i].<code>mode</code> is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code>, all addresses between <code>pInfos</code>[i].<code>scratchData.hostAddress</code> and <code>pInfos</code>[i].<code>scratchData.hostAddress</code> + N - 1 <strong class=\"purple\">must</strong> be valid host memory, where N is given by the <code>updateScratchSize</code> member of the <a href=\"#VkAccelerationStructureBuildSizesInfoKHR\">VkAccelerationStructureBuildSizesInfoKHR</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureBuildSizesKHR\">vkGetAccelerationStructureBuildSizesKHR</a> with an identical <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structure and primitive count",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03771",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, <code>geometry.triangles.vertexData.hostAddress</code> <strong class=\"purple\">must</strong> be a valid host address",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03772",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.indexType</code> is not <code>VK_INDEX_TYPE_NONE_KHR</code>, <code>geometry.triangles.indexData.hostAddress</code> <strong class=\"purple\">must</strong> be a valid host address",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03773",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if <code>geometry.triangles.transformData.hostAddress</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be a valid host address",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03774",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_AABBS_KHR</code>, <code>geometry.aabbs.data.hostAddress</code> <strong class=\"purple\">must</strong> be a valid host address",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03775",
          "text": "For each element of <code>pInfos</code>, the <code>buffer</code> used to create its <code>dstAccelerationStructure</code> member <strong class=\"purple\">must</strong> be bound to memory that was not allocated with multiple instances",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03776",
          "text": "For each element of <code>pInfos</code>, if its <code>mode</code> member is <code>VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR</code> the <code>buffer</code> used to create its <code>srcAccelerationStructure</code> member <strong class=\"purple\">must</strong> be bound to memory that was not allocated with multiple instances",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03777",
          "text": "For each element of <code>pInfos</code>, the <code>buffer</code> used to create each acceleration structure referenced by the <code>geometry.instances.data</code> member of any element of <code>pGeometries</code> or <code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code> <strong class=\"purple\">must</strong> be bound to memory that was not allocated with multiple instances",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03778",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, <code>geometry.instances.data.hostAddress</code> <strong class=\"purple\">must</strong> be a valid host address",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03779",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, each <a href=\"#VkAccelerationStructureInstanceKHR\">VkAccelerationStructureInstanceKHR</a>::<code>accelerationStructureReference</code> value in <code>geometry.instances.data.hostAddress</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-04930",
          "text": "For any element of <code>pInfos</code>[i].<code>pGeometries</code> or <code>pInfos</code>[i].<code>ppGeometries</code> with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code> with <code>VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV</code> set, each <code>accelerationStructureReference</code> in any structure in <a href=\"#VkAccelerationStructureMotionInstanceNV\">VkAccelerationStructureMotionInstanceNV</a> value in <code>geometry.instances.data.hostAddress</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-deferredOperation-parameter",
          "text": "If <code>deferredOperation</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>deferredOperation</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-parameter",
          "text": "<code>pInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>infoCount</code> valid <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-ppBuildRangeInfos-parameter",
          "text": "<code>ppBuildRangeInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>infoCount</code> <a href=\"#VkAccelerationStructureBuildRangeInfoKHR\">VkAccelerationStructureBuildRangeInfoKHR</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-infoCount-arraylength",
          "text": "<code>infoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildAccelerationStructuresKHR-deferredOperation-parent",
          "text": "If <code>deferredOperation</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCopyAccelerationStructureKHR": {
      "core": [
        {
          "vuid": "VUID-vkCopyAccelerationStructureKHR-accelerationStructureHostCommands-03582",
          "text": "The <a href=\"#features-accelerationStructureHostCommands\"><code>VkPhysicalDeviceAccelerationStructureFeaturesKHR</code>::<code>accelerationStructureHostCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyAccelerationStructureKHR-deferredOperation-03678",
          "text": "Any previous deferred operation that was associated with <code>deferredOperation</code> <strong class=\"purple\">must</strong> be complete",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyAccelerationStructureKHR-buffer-03727",
          "text": "The <code>buffer</code> used to create <code>pInfo-&gt;src</code> <strong class=\"purple\">must</strong> be bound to host-visible device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyAccelerationStructureKHR-buffer-03728",
          "text": "The <code>buffer</code> used to create <code>pInfo-&gt;dst</code> <strong class=\"purple\">must</strong> be bound to host-visible device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyAccelerationStructureKHR-buffer-03780",
          "text": "The <code>buffer</code> used to create <code>pInfo-&gt;src</code> <strong class=\"purple\">must</strong> be bound to memory that was not allocated with multiple instances",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyAccelerationStructureKHR-buffer-03781",
          "text": "The <code>buffer</code> used to create <code>pInfo-&gt;dst</code> <strong class=\"purple\">must</strong> be bound to memory that was not allocated with multiple instances",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyAccelerationStructureKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyAccelerationStructureKHR-deferredOperation-parameter",
          "text": "If <code>deferredOperation</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>deferredOperation</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyAccelerationStructureKHR-pInfo-parameter",
          "text": "<code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyAccelerationStructureInfoKHR\">VkCopyAccelerationStructureInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyAccelerationStructureKHR-deferredOperation-parent",
          "text": "If <code>deferredOperation</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCopyMemoryToAccelerationStructureKHR": {
      "core": [
        {
          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-accelerationStructureHostCommands-03583",
          "text": "The <a href=\"#features-accelerationStructureHostCommands\"><code>VkPhysicalDeviceAccelerationStructureFeaturesKHR</code>::<code>accelerationStructureHostCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-deferredOperation-03678",
          "text": "Any previous deferred operation that was associated with <code>deferredOperation</code> <strong class=\"purple\">must</strong> be complete",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-pInfo-03729",
          "text": "<code>pInfo-&gt;src.hostAddress</code> <strong class=\"purple\">must</strong> be a valid host pointer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-pInfo-03750",
          "text": "<code>pInfo-&gt;src.hostAddress</code> <strong class=\"purple\">must</strong> be aligned to 16 bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-buffer-03730",
          "text": "The <code>buffer</code> used to create <code>pInfo-&gt;dst</code> <strong class=\"purple\">must</strong> be bound to host-visible device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-buffer-03782",
          "text": "The <code>buffer</code> used to create <code>pInfo-&gt;dst</code> <strong class=\"purple\">must</strong> be bound to memory that was not allocated with multiple instances",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-deferredOperation-parameter",
          "text": "If <code>deferredOperation</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>deferredOperation</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-pInfo-parameter",
          "text": "<code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyMemoryToAccelerationStructureInfoKHR\">VkCopyMemoryToAccelerationStructureInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-deferredOperation-parent",
          "text": "If <code>deferredOperation</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCopyAccelerationStructureToMemoryKHR": {
      "core": [
        {
          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-accelerationStructureHostCommands-03584",
          "text": "The <a href=\"#features-accelerationStructureHostCommands\"><code>VkPhysicalDeviceAccelerationStructureFeaturesKHR</code>::<code>accelerationStructureHostCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-deferredOperation-03678",
          "text": "Any previous deferred operation that was associated with <code>deferredOperation</code> <strong class=\"purple\">must</strong> be complete",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-buffer-03731",
          "text": "The <code>buffer</code> used to create <code>pInfo-&gt;src</code> <strong class=\"purple\">must</strong> be bound to host-visible device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-pInfo-03732",
          "text": "<code>pInfo-&gt;dst.hostAddress</code> <strong class=\"purple\">must</strong> be a valid host pointer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-pInfo-03751",
          "text": "<code>pInfo-&gt;dst.hostAddress</code> <strong class=\"purple\">must</strong> be aligned to 16 bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-buffer-03783",
          "text": "The <code>buffer</code> used to create <code>pInfo-&gt;src</code> <strong class=\"purple\">must</strong> be bound to memory that was not allocated with multiple instances",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-deferredOperation-parameter",
          "text": "If <code>deferredOperation</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>deferredOperation</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-pInfo-parameter",
          "text": "<code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyAccelerationStructureToMemoryInfoKHR\">VkCopyAccelerationStructureToMemoryInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-deferredOperation-parent",
          "text": "If <code>deferredOperation</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkWriteAccelerationStructuresPropertiesKHR": {
      "core": [
        {
          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-accelerationStructureHostCommands-03585",
          "text": "The <a href=\"#features-accelerationStructureHostCommands\"><code>VkPhysicalDeviceAccelerationStructureFeaturesKHR</code>::<code>accelerationStructureHostCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-04964",
          "text": "All acceleration structures in <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> have been built prior to the execution of this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-accelerationStructures-03431",
          "text": "All acceleration structures in <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> have been built with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR</code> if <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-06742",
          "text": "<code>queryType</code> <strong class=\"purple\">must</strong> be <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR</code>, <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR</code>, <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code>, or <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03448",
          "text": "If <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code>, then <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of the size of <a href=\"#VkDeviceSize\">VkDeviceSize</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03449",
          "text": "If <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code>, then <code>pData</code> <strong class=\"purple\">must</strong> point to a <a href=\"#VkDeviceSize\">VkDeviceSize</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03450",
          "text": "If <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR</code>, then <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of the size of <a href=\"#VkDeviceSize\">VkDeviceSize</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03451",
          "text": "If <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR</code>, then <code>pData</code> <strong class=\"purple\">must</strong> point to a <a href=\"#VkDeviceSize\">VkDeviceSize</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-06731",
          "text": "If <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR</code>, then <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of the size of <a href=\"#VkDeviceSize\">VkDeviceSize</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-06732",
          "text": "If <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR</code>, then <code>pData</code> <strong class=\"purple\">must</strong> point to a <a href=\"#VkDeviceSize\">VkDeviceSize</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-06733",
          "text": "If <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR</code>, then <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of the size of <a href=\"#VkDeviceSize\">VkDeviceSize</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-06734",
          "text": "If <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR</code>, then <code>pData</code> <strong class=\"purple\">must</strong> point to a <a href=\"#VkDeviceSize\">VkDeviceSize</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-dataSize-03452",
          "text": "<code>dataSize</code> <strong class=\"purple\">must</strong> be greater than or equal to <span class=\"eq\"><code>accelerationStructureCount</code>*<code>stride</code></span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-buffer-03733",
          "text": "The <code>buffer</code> used to create each acceleration structure in <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> be bound to host-visible device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-buffer-03784",
          "text": "The <code>buffer</code> used to create each acceleration structure in <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> be bound to memory that was not allocated with multiple instances",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-parameter",
          "text": "<code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>accelerationStructureCount</code> valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-parameter",
          "text": "<code>queryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryType\">VkQueryType</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-pData-parameter",
          "text": "<code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-accelerationStructureCount-arraylength",
          "text": "<code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-dataSize-arraylength",
          "text": "<code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-parent",
          "text": "Each element of <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdBuildMicromapsEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdBuildMicromapsEXT-pInfos-07461",
          "text": "For each <code>pInfos</code>[i], <code>dstMicromap</code> <strong class=\"purple\">must</strong> have been created with a value of <a href=\"#VkMicromapCreateInfoEXT\">VkMicromapCreateInfoEXT</a>::<code>size</code> greater than or equal to the memory size required by the build operation, as returned by <a href=\"#vkGetMicromapBuildSizesEXT\">vkGetMicromapBuildSizesEXT</a> with <span class=\"eq\"><code>pBuildInfo</code> = <code>pInfos</code>[i]</span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildMicromapsEXT-mode-07462",
          "text": "The <code>mode</code> member of each element of <code>pInfos</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuildMicromapModeEXT\">VkBuildMicromapModeEXT</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildMicromapsEXT-dstMicromap-07463",
          "text": "The <code>dstMicromap</code> member of any element of <code>pInfos</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkMicromapEXT\">VkMicromapEXT</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildMicromapsEXT-pInfos-07464",
          "text": "For each element of <code>pInfos</code> its <code>type</code> member <strong class=\"purple\">must</strong> match the value of <a href=\"#VkMicromapCreateInfoEXT\">VkMicromapCreateInfoEXT</a>::<code>type</code> when its <code>dstMicromap</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildMicromapsEXT-dstMicromap-07465",
          "text": "The range of memory backing the <code>dstMicromap</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>dstMicromap</code> member of any other element of <code>pInfos</code>, which is accessed by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildMicromapsEXT-dstMicromap-07466",
          "text": "The range of memory backing the <code>dstMicromap</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>scratchData</code> member of any element of <code>pInfos</code> (including the same element), which is accessed by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildMicromapsEXT-scratchData-07467",
          "text": "The range of memory backing the <code>scratchData</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>scratchData</code> member of any other element of <code>pInfos</code>, which is accessed by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildMicromapsEXT-pInfos-07508",
          "text": "For each element of <code>pInfos</code>, the <code>buffer</code> used to create its <code>dstMicromap</code> member <strong class=\"purple\">must</strong> be bound to device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildMicromapsEXT-pInfos-07509",
          "text": "If <code>pInfos</code>[i].<code>mode</code> is <code>VK_BUILD_MICROMAP_MODE_BUILD_EXT</code>, all addresses between <code>pInfos</code>[i].<code>scratchData.deviceAddress</code> and <code>pInfos</code>[i].<code>scratchData.deviceAddress</code> +  N - 1 <strong class=\"purple\">must</strong> be in the buffer device address range of the same buffer, where N is given by the <code>buildScratchSize</code> member of the <a href=\"#VkMicromapBuildSizesInfoEXT\">VkMicromapBuildSizesInfoEXT</a> structure returned from a call to <a href=\"#vkGetMicromapBuildSizesEXT\">vkGetMicromapBuildSizesEXT</a> with an identical <a href=\"#VkMicromapBuildInfoEXT\">VkMicromapBuildInfoEXT</a> structure and primitive count",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildMicromapsEXT-data-07510",
          "text": "The buffers from which the buffer device addresses for all of the <code>data</code> and <code>triangleArray</code> members of all <code>pInfos</code>[i] are queried <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildMicromapsEXT-pInfos-07511",
          "text": "For each element of <code>pInfos</code>[i] the buffer from which the buffer device address <code>pInfos</code>[i].<code>scratchData.deviceAddress</code> is queried <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_STORAGE_BUFFER_BIT</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildMicromapsEXT-pInfos-07512",
          "text": "For each element of <code>pInfos</code>, its <code>scratchData.deviceAddress</code>, <code>data.deviceAddress</code>, and <code>triangleArray.deviceAddress</code> members <strong class=\"purple\">must</strong> be valid device addresses obtained from <a href=\"#vkGetBufferDeviceAddress\">vkGetBufferDeviceAddress</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildMicromapsEXT-pInfos-07513",
          "text": "For each element of <code>pInfos</code>, if <code>scratchData.deviceAddress</code>, <code>data.deviceAddress</code>, or <code>triangleArray.deviceAddress</code> is the address of a non-sparse buffer then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildMicromapsEXT-pInfos-07514",
          "text": "For each element of <code>pInfos</code>, its <code>scratchData.deviceAddress</code> member <strong class=\"purple\">must</strong> be a multiple of <a href=\"#VkPhysicalDeviceAccelerationStructurePropertiesKHR\">VkPhysicalDeviceAccelerationStructurePropertiesKHR</a>::<code>minAccelerationStructureScratchOffsetAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildMicromapsEXT-pInfos-07515",
          "text": "For each element of <code>pInfos</code>, its <code>triangleArray.deviceAddress</code> and <code>data.deviceAddress</code> members <strong class=\"purple\">must</strong> be a multiple of <code>256</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildMicromapsEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildMicromapsEXT-pInfos-parameter",
          "text": "<code>pInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>infoCount</code> valid <a href=\"#VkMicromapBuildInfoEXT\">VkMicromapBuildInfoEXT</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildMicromapsEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildMicromapsEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildMicromapsEXT-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildMicromapsEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBuildMicromapsEXT-infoCount-arraylength",
          "text": "<code>infoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkMicromapBuildInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkMicromapBuildInfoEXT-pUsageCounts-07516",
          "text": "Only one of <code>pUsageCounts</code> or <code>ppUsageCounts</code> <strong class=\"purple\">can</strong> be a valid pointer, the other <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMicromapBuildInfoEXT-type-07517",
          "text": "If <code>type</code> is <code>VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT</code> the <code>format</code> member of <a href=\"#VkMicromapUsageEXT\">VkMicromapUsageEXT</a> <strong class=\"purple\">must</strong> be a valid value from <code>VkOpacityMicromapFormatEXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMicromapBuildInfoEXT-type-07518",
          "text": "If <code>type</code> is <code>VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT</code> the <code>format</code> member of <a href=\"#VkMicromapTriangleEXT\">VkMicromapTriangleEXT</a> <strong class=\"purple\">must</strong> be a valid value from <code>VkOpacityMicromapFormatEXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMicromapBuildInfoEXT-type-08704",
          "text": "If <code>type</code> is <code>VK_MICROMAP_TYPE_DISPLACEMENT_MICROMAP_NV</code> the <code>format</code> member of <a href=\"#VkMicromapUsageEXT\">VkMicromapUsageEXT</a> <strong class=\"purple\">must</strong> be a valid value from <code>VkDisplacementMicromapFormatNV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMicromapBuildInfoEXT-type-08705",
          "text": "If <code>type</code> is <code>VK_MICROMAP_TYPE_DISPLACEMENT_MICROMAP_NV</code> the <code>format</code> member of <a href=\"#VkMicromapTriangleEXT\">VkMicromapTriangleEXT</a> <strong class=\"purple\">must</strong> be a valid value from <code>VkDisplacementMicromapFormatNV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMicromapBuildInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMicromapBuildInfoEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMicromapBuildInfoEXT-type-parameter",
          "text": "<code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkMicromapTypeEXT\">VkMicromapTypeEXT</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMicromapBuildInfoEXT-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBuildMicromapFlagBitsEXT\">VkBuildMicromapFlagBitsEXT</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMicromapBuildInfoEXT-pUsageCounts-parameter",
          "text": "If <code>usageCountsCount</code> is not <code>0</code>, and <code>pUsageCounts</code> is not <code>NULL</code>, <code>pUsageCounts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>usageCountsCount</code> <a href=\"#VkMicromapUsageEXT\">VkMicromapUsageEXT</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMicromapBuildInfoEXT-ppUsageCounts-parameter",
          "text": "If <code>usageCountsCount</code> is not <code>0</code>, and <code>ppUsageCounts</code> is not <code>NULL</code>, <code>ppUsageCounts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>usageCountsCount</code> valid pointers to <a href=\"#VkMicromapUsageEXT\">VkMicromapUsageEXT</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkMicromapUsageEXT": {
      "core": [
        {
          "vuid": "VUID-VkMicromapUsageEXT-format-07519",
          "text": "If the <a href=\"#VkMicromapTypeEXT\">VkMicromapTypeEXT</a> of the micromap is <code>VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT</code> then <code>format</code> <strong class=\"purple\">must</strong> be <code>VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT</code> or <code>VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMicromapUsageEXT-format-07520",
          "text": "If the <a href=\"#VkMicromapTypeEXT\">VkMicromapTypeEXT</a> of the micromap is <code>VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT</code> and <code>format</code> is <code>VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT</code> then <code>subdivisionLevel</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceOpacityMicromapPropertiesEXT\">VkPhysicalDeviceOpacityMicromapPropertiesEXT</a>::<code>maxOpacity2StateSubdivisionLevel</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMicromapUsageEXT-format-07521",
          "text": "If the <a href=\"#VkMicromapTypeEXT\">VkMicromapTypeEXT</a> of the micromap is <code>VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT</code> and <code>format</code> is <code>VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT</code> then <code>subdivisionLevel</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceOpacityMicromapPropertiesEXT\">VkPhysicalDeviceOpacityMicromapPropertiesEXT</a>::<code>maxOpacity4StateSubdivisionLevel</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMicromapUsageEXT-format-08706",
          "text": "If the <a href=\"#VkMicromapTypeEXT\">VkMicromapTypeEXT</a> of the micromap is <code>VK_MICROMAP_TYPE_DISPLACEMENT_MICROMAP_NV</code> then <code>format</code> <strong class=\"purple\">must</strong> be <code>VK_DISPLACEMENT_MICROMAP_FORMAT_64_TRIANGLES_64_BYTES_NV</code>, <code>VK_DISPLACEMENT_MICROMAP_FORMAT_256_TRIANGLES_128_BYTES_NV</code> or <code>VK_DISPLACEMENT_MICROMAP_FORMAT_1024_TRIANGLES_128_BYTES_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMicromapUsageEXT-subdivisionLevel-08707",
          "text": "If the <a href=\"#VkMicromapTypeEXT\">VkMicromapTypeEXT</a> of the micromap is <code>VK_MICROMAP_TYPE_DISPLACEMENT_MICROMAP_NV</code> then <code>subdivisionLevel</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceDisplacementMicromapPropertiesNV\">VkPhysicalDeviceDisplacementMicromapPropertiesNV</a>::<code>maxDisplacementMicromapSubdivisionLevel</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkMicromapTriangleEXT": {
      "core": [
        {
          "vuid": "VUID-VkMicromapTriangleEXT-format-07522",
          "text": "If the <a href=\"#VkMicromapTypeEXT\">VkMicromapTypeEXT</a> of the micromap is <code>VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT</code> then <code>format</code> <strong class=\"purple\">must</strong> be <code>VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT</code> or <code>VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMicromapTriangleEXT-format-07523",
          "text": "If the <a href=\"#VkMicromapTypeEXT\">VkMicromapTypeEXT</a> of the micromap is <code>VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT</code> and <code>format</code> is <code>VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT</code> then <code>subdivisionLevel</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceOpacityMicromapPropertiesEXT\">VkPhysicalDeviceOpacityMicromapPropertiesEXT</a>::<code>maxOpacity2StateSubdivisionLevel</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMicromapTriangleEXT-format-07524",
          "text": "If the <a href=\"#VkMicromapTypeEXT\">VkMicromapTypeEXT</a> of the micromap is <code>VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT</code> and <code>format</code> is <code>VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT</code> then <code>subdivisionLevel</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceOpacityMicromapPropertiesEXT\">VkPhysicalDeviceOpacityMicromapPropertiesEXT</a>::<code>maxOpacity4StateSubdivisionLevel</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMicromapTriangleEXT-format-08708",
          "text": "If the <a href=\"#VkMicromapTypeEXT\">VkMicromapTypeEXT</a> of the micromap is <code>VK_MICROMAP_TYPE_DISPLACEMENT_MICROMAP_NV</code> then <code>format</code> <strong class=\"purple\">must</strong> be <code>VK_DISPLACEMENT_MICROMAP_FORMAT_64_TRIANGLES_64_BYTES_NV</code>, <code>VK_DISPLACEMENT_MICROMAP_FORMAT_256_TRIANGLES_128_BYTES_NV</code> or <code>VK_DISPLACEMENT_MICROMAP_FORMAT_1024_TRIANGLES_128_BYTES_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMicromapTriangleEXT-subdivisionLevel-08709",
          "text": "If the <a href=\"#VkMicromapTypeEXT\">VkMicromapTypeEXT</a> of the micromap is <code>VK_MICROMAP_TYPE_DISPLACEMENT_MICROMAP_NV</code> then <code>subdivisionLevel</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceDisplacementMicromapPropertiesNV\">VkPhysicalDeviceDisplacementMicromapPropertiesNV</a>::<code>maxDisplacementMicromapSubdivisionLevel</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdWriteMicromapsPropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdWriteMicromapsPropertiesEXT-queryPool-07525",
          "text": "<code>queryPool</code> <strong class=\"purple\">must</strong> have been created with a <code>queryType</code> matching <code>queryType</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteMicromapsPropertiesEXT-queryPool-07526",
          "text": "The queries identified by <code>queryPool</code> and <code>firstQuery</code> <strong class=\"purple\">must</strong> be <em>unavailable</em>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteMicromapsPropertiesEXT-buffer-07527",
          "text": "The <code>buffer</code> used to create each micromap in <code>pMicrmaps</code> <strong class=\"purple\">must</strong> be bound to device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteMicromapsPropertiesEXT-query-07528",
          "text": "The sum of <code>query</code> plus <code>micromapCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteMicromapsPropertiesEXT-pMicromaps-07501",
          "text": "All micromaps in <code>pMicromaps</code> <strong class=\"purple\">must</strong> have been constructed prior to the execution of this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteMicromapsPropertiesEXT-pMicromaps-07502",
          "text": "All micromaps in <code>pMicromaps</code> <strong class=\"purple\">must</strong> have been constructed with <code>VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT</code> if <code>queryType</code> is <code>VK_QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteMicromapsPropertiesEXT-queryType-07503",
          "text": "<code>queryType</code> <strong class=\"purple\">must</strong> be <code>VK_QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT</code> or <code>VK_QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteMicromapsPropertiesEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteMicromapsPropertiesEXT-pMicromaps-parameter",
          "text": "<code>pMicromaps</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>micromapCount</code> valid <a href=\"#VkMicromapEXT\">VkMicromapEXT</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteMicromapsPropertiesEXT-queryType-parameter",
          "text": "<code>queryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryType\">VkQueryType</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteMicromapsPropertiesEXT-queryPool-parameter",
          "text": "<code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteMicromapsPropertiesEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteMicromapsPropertiesEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteMicromapsPropertiesEXT-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteMicromapsPropertiesEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteMicromapsPropertiesEXT-micromapCount-arraylength",
          "text": "<code>micromapCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdWriteMicromapsPropertiesEXT-commonparent",
          "text": "Each of <code>commandBuffer</code>, <code>queryPool</code>, and the elements of <code>pMicromaps</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdCopyMicromapEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdCopyMicromapEXT-buffer-07529",
          "text": "The <code>buffer</code> used to create <code>pInfo-&gt;src</code> <strong class=\"purple\">must</strong> be bound to device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMicromapEXT-buffer-07530",
          "text": "The <code>buffer</code> used to create <code>pInfo-&gt;dst</code> <strong class=\"purple\">must</strong> be bound to device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMicromapEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMicromapEXT-pInfo-parameter",
          "text": "<code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyMicromapInfoEXT\">VkCopyMicromapInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMicromapEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMicromapEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMicromapEXT-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMicromapEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkCopyMicromapInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkCopyMicromapInfoEXT-mode-07531",
          "text": "<code>mode</code> <strong class=\"purple\">must</strong> be <code>VK_COPY_MICROMAP_MODE_COMPACT_EXT</code> or <code>VK_COPY_MICROMAP_MODE_CLONE_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMicromapInfoEXT-src-07532",
          "text": "The source acceleration structure <code>src</code> <strong class=\"purple\">must</strong> have been constructed prior to the execution of this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMicromapInfoEXT-mode-07533",
          "text": "If <code>mode</code> is <code>VK_COPY_MICROMAP_MODE_COMPACT_EXT</code>, <code>src</code> <strong class=\"purple\">must</strong> have been constructed with <code>VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT</code> in the build",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMicromapInfoEXT-buffer-07534",
          "text": "The <code>buffer</code> used to create <code>src</code> <strong class=\"purple\">must</strong> be bound to device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMicromapInfoEXT-buffer-07535",
          "text": "The <code>buffer</code> used to create <code>dst</code> <strong class=\"purple\">must</strong> be bound to device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMicromapInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMicromapInfoEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMicromapInfoEXT-src-parameter",
          "text": "<code>src</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkMicromapEXT\">VkMicromapEXT</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMicromapInfoEXT-dst-parameter",
          "text": "<code>dst</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkMicromapEXT\">VkMicromapEXT</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMicromapInfoEXT-mode-parameter",
          "text": "<code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCopyMicromapModeEXT\">VkCopyMicromapModeEXT</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMicromapInfoEXT-commonparent",
          "text": "Both of <code>dst</code>, and <code>src</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdCopyMicromapToMemoryEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdCopyMicromapToMemoryEXT-pInfo-07536",
          "text": "<code>pInfo-&gt;dst.deviceAddress</code> <strong class=\"purple\">must</strong> be a valid device address for a buffer bound to device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMicromapToMemoryEXT-pInfo-07537",
          "text": "<code>pInfo-&gt;dst.deviceAddress</code> <strong class=\"purple\">must</strong> be aligned to <code>256</code> bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMicromapToMemoryEXT-pInfo-07538",
          "text": "If the buffer pointed to by <code>pInfo-&gt;dst.deviceAddress</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMicromapToMemoryEXT-buffer-07539",
          "text": "The <code>buffer</code> used to create <code>pInfo-&gt;src</code> <strong class=\"purple\">must</strong> be bound to device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMicromapToMemoryEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMicromapToMemoryEXT-pInfo-parameter",
          "text": "<code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyMicromapToMemoryInfoEXT\">VkCopyMicromapToMemoryInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMicromapToMemoryEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMicromapToMemoryEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMicromapToMemoryEXT-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMicromapToMemoryEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkCopyMicromapToMemoryInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkCopyMicromapToMemoryInfoEXT-src-07540",
          "text": "The source micromap <code>src</code> <strong class=\"purple\">must</strong> have been constructed prior to the execution of this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMicromapToMemoryInfoEXT-dst-07541",
          "text": "The memory pointed to by <code>dst</code> <strong class=\"purple\">must</strong> be at least as large as the serialization size of <code>src</code>, as reported by <a href=\"#vkWriteMicromapsPropertiesEXT\">vkWriteMicromapsPropertiesEXT</a> or <a href=\"#vkCmdWriteMicromapsPropertiesEXT\">vkCmdWriteMicromapsPropertiesEXT</a> with a query type of <code>VK_QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMicromapToMemoryInfoEXT-mode-07542",
          "text": "<code>mode</code> <strong class=\"purple\">must</strong> be <code>VK_COPY_MICROMAP_MODE_SERIALIZE_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMicromapToMemoryInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_MICROMAP_TO_MEMORY_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMicromapToMemoryInfoEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMicromapToMemoryInfoEXT-src-parameter",
          "text": "<code>src</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkMicromapEXT\">VkMicromapEXT</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMicromapToMemoryInfoEXT-mode-parameter",
          "text": "<code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCopyMicromapModeEXT\">VkCopyMicromapModeEXT</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdCopyMemoryToMicromapEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdCopyMemoryToMicromapEXT-pInfo-07543",
          "text": "<code>pInfo-&gt;src.deviceAddress</code> <strong class=\"purple\">must</strong> be a valid device address for a buffer bound to device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToMicromapEXT-pInfo-07544",
          "text": "<code>pInfo-&gt;src.deviceAddress</code> <strong class=\"purple\">must</strong> be aligned to <code>256</code> bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToMicromapEXT-pInfo-07545",
          "text": "If the buffer pointed to by <code>pInfo-&gt;src.deviceAddress</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToMicromapEXT-buffer-07546",
          "text": "The <code>buffer</code> used to create <code>pInfo-&gt;dst</code> <strong class=\"purple\">must</strong> be bound to device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToMicromapEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToMicromapEXT-pInfo-parameter",
          "text": "<code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyMemoryToMicromapInfoEXT\">VkCopyMemoryToMicromapInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToMicromapEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToMicromapEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToMicromapEXT-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCopyMemoryToMicromapEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkCopyMemoryToMicromapInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkCopyMemoryToMicromapInfoEXT-src-07547",
          "text": "The source memory pointed to by <code>src</code> <strong class=\"purple\">must</strong> contain data previously serialized using <a href=\"#vkCmdCopyMicromapToMemoryEXT\">vkCmdCopyMicromapToMemoryEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToMicromapInfoEXT-mode-07548",
          "text": "<code>mode</code> <strong class=\"purple\">must</strong> be <code>VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToMicromapInfoEXT-src-07549",
          "text": "The data in <code>src</code> <strong class=\"purple\">must</strong> have a format compatible with the destination physical device as returned by <a href=\"#vkGetDeviceMicromapCompatibilityEXT\">vkGetDeviceMicromapCompatibilityEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToMicromapInfoEXT-dst-07550",
          "text": "<code>dst</code> <strong class=\"purple\">must</strong> have been created with a <code>size</code> greater than or equal to that used to serialize the data in <code>src</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToMicromapInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_MEMORY_TO_MICROMAP_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToMicromapInfoEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToMicromapInfoEXT-dst-parameter",
          "text": "<code>dst</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkMicromapEXT\">VkMicromapEXT</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCopyMemoryToMicromapInfoEXT-mode-parameter",
          "text": "<code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCopyMicromapModeEXT\">VkCopyMicromapModeEXT</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkGetDeviceMicromapCompatibilityEXT": {
      "core": [
        {
          "vuid": "VUID-vkGetDeviceMicromapCompatibilityEXT-micromap-07551",
          "text": "The <a href=\"#features-micromap\"><code>micromap</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceMicromapCompatibilityEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceMicromapCompatibilityEXT-pVersionInfo-parameter",
          "text": "<code>pVersionInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMicromapVersionInfoEXT\">VkMicromapVersionInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceMicromapCompatibilityEXT-pCompatibility-parameter",
          "text": "<code>pCompatibility</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkAccelerationStructureCompatibilityKHR\">VkAccelerationStructureCompatibilityKHR</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkMicromapVersionInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkMicromapVersionInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMicromapVersionInfoEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMicromapVersionInfoEXT-pVersionData-parameter",
          "text": "<code>pVersionData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of \\(2 \\times \\mathtt{VK\\_UUID\\_SIZE}\\) <code>uint8_t</code> values",
          "page": "vkspec"
        }
      ]
    },
    "vkBuildMicromapsEXT": {
      "core": [
        {
          "vuid": "VUID-vkBuildMicromapsEXT-pInfos-07461",
          "text": "For each <code>pInfos</code>[i], <code>dstMicromap</code> <strong class=\"purple\">must</strong> have been created with a value of <a href=\"#VkMicromapCreateInfoEXT\">VkMicromapCreateInfoEXT</a>::<code>size</code> greater than or equal to the memory size required by the build operation, as returned by <a href=\"#vkGetMicromapBuildSizesEXT\">vkGetMicromapBuildSizesEXT</a> with <span class=\"eq\"><code>pBuildInfo</code> = <code>pInfos</code>[i]</span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildMicromapsEXT-mode-07462",
          "text": "The <code>mode</code> member of each element of <code>pInfos</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuildMicromapModeEXT\">VkBuildMicromapModeEXT</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildMicromapsEXT-dstMicromap-07463",
          "text": "The <code>dstMicromap</code> member of any element of <code>pInfos</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkMicromapEXT\">VkMicromapEXT</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildMicromapsEXT-pInfos-07464",
          "text": "For each element of <code>pInfos</code> its <code>type</code> member <strong class=\"purple\">must</strong> match the value of <a href=\"#VkMicromapCreateInfoEXT\">VkMicromapCreateInfoEXT</a>::<code>type</code> when its <code>dstMicromap</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildMicromapsEXT-dstMicromap-07465",
          "text": "The range of memory backing the <code>dstMicromap</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>dstMicromap</code> member of any other element of <code>pInfos</code>, which is accessed by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildMicromapsEXT-dstMicromap-07466",
          "text": "The range of memory backing the <code>dstMicromap</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>scratchData</code> member of any element of <code>pInfos</code> (including the same element), which is accessed by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildMicromapsEXT-scratchData-07467",
          "text": "The range of memory backing the <code>scratchData</code> member of any element of <code>pInfos</code> that is accessed by this command <strong class=\"purple\">must</strong> not overlap the memory backing the <code>scratchData</code> member of any other element of <code>pInfos</code>, which is accessed by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildMicromapsEXT-pInfos-07552",
          "text": "For each element of <code>pInfos</code>, the <code>buffer</code> used to create its <code>dstMicromap</code> member <strong class=\"purple\">must</strong> be bound to host-visible device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildMicromapsEXT-pInfos-07553",
          "text": "For each element of <code>pInfos</code>, all referenced addresses of <code>pInfos</code>[i].<code>data.hostAddress</code> <strong class=\"purple\">must</strong> be valid host memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildMicromapsEXT-pInfos-07554",
          "text": "For each element of <code>pInfos</code>, all referenced addresses of <code>pInfos</code>[i].<code>triangleArray.hostAddress</code> <strong class=\"purple\">must</strong> be valid host memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildMicromapsEXT-micromapHostCommands-07555",
          "text": "The <a href=\"#features-micromapHostCommands\"><code>VkPhysicalDeviceOpacityMicromapFeaturesEXT</code>::<code>micromapHostCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildMicromapsEXT-pInfos-07556",
          "text": "If <code>pInfos</code>[i].<code>mode</code> is <code>VK_BUILD_MICROMAP_MODE_BUILD_EXT</code>, all addresses between <code>pInfos</code>[i].<code>scratchData.hostAddress</code> and <code>pInfos</code>[i].<code>scratchData.hostAddress</code> + N - 1 <strong class=\"purple\">must</strong> be valid host memory, where N is given by the <code>buildScratchSize</code> member of the <a href=\"#VkMicromapBuildSizesInfoEXT\">VkMicromapBuildSizesInfoEXT</a> structure returned from a call to <a href=\"#vkGetMicromapBuildSizesEXT\">vkGetMicromapBuildSizesEXT</a> with an identical <a href=\"#VkMicromapBuildInfoEXT\">VkMicromapBuildInfoEXT</a> structure and primitive count",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildMicromapsEXT-pInfos-07557",
          "text": "For each element of <code>pInfos</code>, the <code>buffer</code> used to create its <code>dstMicromap</code> member <strong class=\"purple\">must</strong> be bound to memory that was not allocated with multiple instances",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildMicromapsEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildMicromapsEXT-deferredOperation-parameter",
          "text": "If <code>deferredOperation</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>deferredOperation</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildMicromapsEXT-pInfos-parameter",
          "text": "<code>pInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>infoCount</code> valid <a href=\"#VkMicromapBuildInfoEXT\">VkMicromapBuildInfoEXT</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildMicromapsEXT-infoCount-arraylength",
          "text": "<code>infoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBuildMicromapsEXT-deferredOperation-parent",
          "text": "If <code>deferredOperation</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCopyMicromapEXT": {
      "core": [
        {
          "vuid": "VUID-vkCopyMicromapEXT-deferredOperation-03678",
          "text": "Any previous deferred operation that was associated with <code>deferredOperation</code> <strong class=\"purple\">must</strong> be complete",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyMicromapEXT-buffer-07558",
          "text": "The <code>buffer</code> used to create <code>pInfo-&gt;src</code> <strong class=\"purple\">must</strong> be bound to host-visible device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyMicromapEXT-buffer-07559",
          "text": "The <code>buffer</code> used to create <code>pInfo-&gt;dst</code> <strong class=\"purple\">must</strong> be bound to host-visible device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyMicromapEXT-micromapHostCommands-07560",
          "text": "The <a href=\"#features-micromapHostCommands\"><code>VkPhysicalDeviceOpacityMicromapFeaturesEXT</code>::<code>micromapHostCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyMicromapEXT-buffer-07561",
          "text": "The <code>buffer</code> used to create <code>pInfo-&gt;src</code> <strong class=\"purple\">must</strong> be bound to memory that was not allocated with multiple instances",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyMicromapEXT-buffer-07562",
          "text": "The <code>buffer</code> used to create <code>pInfo-&gt;dst</code> <strong class=\"purple\">must</strong> be bound to memory that was not allocated with multiple instances",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyMicromapEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyMicromapEXT-deferredOperation-parameter",
          "text": "If <code>deferredOperation</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>deferredOperation</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyMicromapEXT-pInfo-parameter",
          "text": "<code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyMicromapInfoEXT\">VkCopyMicromapInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyMicromapEXT-deferredOperation-parent",
          "text": "If <code>deferredOperation</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCopyMemoryToMicromapEXT": {
      "core": [
        {
          "vuid": "VUID-vkCopyMemoryToMicromapEXT-deferredOperation-03678",
          "text": "Any previous deferred operation that was associated with <code>deferredOperation</code> <strong class=\"purple\">must</strong> be complete",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyMemoryToMicromapEXT-pInfo-07563",
          "text": "<code>pInfo-&gt;src.hostAddress</code> <strong class=\"purple\">must</strong> be a valid host pointer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyMemoryToMicromapEXT-pInfo-07564",
          "text": "<code>pInfo-&gt;src.hostAddress</code> <strong class=\"purple\">must</strong> be aligned to 16 bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyMemoryToMicromapEXT-buffer-07565",
          "text": "The <code>buffer</code> used to create <code>pInfo-&gt;dst</code> <strong class=\"purple\">must</strong> be bound to host-visible device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyMemoryToMicromapEXT-micromapHostCommands-07566",
          "text": "The <a href=\"#features-micromapHostCommands\"><code>VkPhysicalDeviceOpacityMicromapFeaturesEXT</code>::<code>micromapHostCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyMemoryToMicromapEXT-buffer-07567",
          "text": "The <code>buffer</code> used to create <code>pInfo-&gt;dst</code> <strong class=\"purple\">must</strong> be bound to memory that was not allocated with multiple instances",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyMemoryToMicromapEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyMemoryToMicromapEXT-deferredOperation-parameter",
          "text": "If <code>deferredOperation</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>deferredOperation</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyMemoryToMicromapEXT-pInfo-parameter",
          "text": "<code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyMemoryToMicromapInfoEXT\">VkCopyMemoryToMicromapInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyMemoryToMicromapEXT-deferredOperation-parent",
          "text": "If <code>deferredOperation</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCopyMicromapToMemoryEXT": {
      "core": [
        {
          "vuid": "VUID-vkCopyMicromapToMemoryEXT-deferredOperation-03678",
          "text": "Any previous deferred operation that was associated with <code>deferredOperation</code> <strong class=\"purple\">must</strong> be complete",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyMicromapToMemoryEXT-buffer-07568",
          "text": "The <code>buffer</code> used to create <code>pInfo-&gt;src</code> <strong class=\"purple\">must</strong> be bound to host-visible device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyMicromapToMemoryEXT-pInfo-07569",
          "text": "<code>pInfo-&gt;dst.hostAddress</code> <strong class=\"purple\">must</strong> be a valid host pointer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyMicromapToMemoryEXT-pInfo-07570",
          "text": "<code>pInfo-&gt;dst.hostAddress</code> <strong class=\"purple\">must</strong> be aligned to 16 bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyMicromapToMemoryEXT-micromapHostCommands-07571",
          "text": "The <a href=\"#features-micromapHostCommands\"><code>VkPhysicalDeviceOpacityMicromapFeaturesEXT</code>::<code>micromapHostCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyMicromapToMemoryEXT-buffer-07572",
          "text": "The <code>buffer</code> used to create <code>pInfo-&gt;src</code> <strong class=\"purple\">must</strong> be bound to memory that was not allocated with multiple instances",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyMicromapToMemoryEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyMicromapToMemoryEXT-deferredOperation-parameter",
          "text": "If <code>deferredOperation</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>deferredOperation</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyMicromapToMemoryEXT-pInfo-parameter",
          "text": "<code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyMicromapToMemoryInfoEXT\">VkCopyMicromapToMemoryInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCopyMicromapToMemoryEXT-deferredOperation-parent",
          "text": "If <code>deferredOperation</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkWriteMicromapsPropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-vkWriteMicromapsPropertiesEXT-pMicromaps-07501",
          "text": "All micromaps in <code>pMicromaps</code> <strong class=\"purple\">must</strong> have been constructed prior to the execution of this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWriteMicromapsPropertiesEXT-pMicromaps-07502",
          "text": "All micromaps in <code>pMicromaps</code> <strong class=\"purple\">must</strong> have been constructed with <code>VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT</code> if <code>queryType</code> is <code>VK_QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWriteMicromapsPropertiesEXT-queryType-07503",
          "text": "<code>queryType</code> <strong class=\"purple\">must</strong> be <code>VK_QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT</code> or <code>VK_QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWriteMicromapsPropertiesEXT-queryType-10071",
          "text": "If <code>queryType</code> is <code>VK_QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT</code> or <code>VK_QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT</code> then <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of the size of <a href=\"#VkDeviceSize\">VkDeviceSize</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWriteMicromapsPropertiesEXT-queryType-10072",
          "text": "If <code>queryType</code> is <code>VK_QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT</code> or <code>VK_QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT</code> then <code>pData</code> <strong class=\"purple\">must</strong> point to a <a href=\"#VkDeviceSize\">VkDeviceSize</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWriteMicromapsPropertiesEXT-dataSize-07576",
          "text": "<code>dataSize</code> <strong class=\"purple\">must</strong> be greater than or equal to <span class=\"eq\"><code>micromapCount</code>*<code>stride</code></span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWriteMicromapsPropertiesEXT-buffer-07577",
          "text": "The <code>buffer</code> used to create each micromap in <code>pMicromaps</code> <strong class=\"purple\">must</strong> be bound to host-visible device memory",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWriteMicromapsPropertiesEXT-micromapHostCommands-07578",
          "text": "The <a href=\"#features-micromapHostCommands\"><code>VkPhysicalDeviceOpacityMicromapFeaturesEXT</code>::<code>micromapHostCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWriteMicromapsPropertiesEXT-buffer-07579",
          "text": "The <code>buffer</code> used to create each micromap in <code>pMicromaps</code> <strong class=\"purple\">must</strong> be bound to memory that was not allocated with multiple instances",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWriteMicromapsPropertiesEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWriteMicromapsPropertiesEXT-pMicromaps-parameter",
          "text": "<code>pMicromaps</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>micromapCount</code> valid <a href=\"#VkMicromapEXT\">VkMicromapEXT</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWriteMicromapsPropertiesEXT-queryType-parameter",
          "text": "<code>queryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryType\">VkQueryType</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWriteMicromapsPropertiesEXT-pData-parameter",
          "text": "<code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWriteMicromapsPropertiesEXT-micromapCount-arraylength",
          "text": "<code>micromapCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWriteMicromapsPropertiesEXT-dataSize-arraylength",
          "text": "<code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkWriteMicromapsPropertiesEXT-pMicromaps-parent",
          "text": "Each element of <code>pMicromaps</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdTraceRaysNV": {
      "core": [
        {
          "vuid": "VUID-vkCmdTraceRaysNV-magFilter-04553",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-magFilter-09598",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-mipmapMode-04770",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-mipmapMode-09599",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-unnormalizedCoordinates-09635",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>levelCount</code> and <code>layerCount</code> <strong class=\"purple\">must</strong> be 1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-unnormalizedCoordinates-09636",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_VIEW_TYPE_1D</code> or <code>VK_IMAGE_VIEW_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-None-06479",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is sampled with <a href=\"#textures-depth-compare-operation\">depth comparison</a>, 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_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-None-02691",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed using atomic operations as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-None-07888",
          "text": "If a <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> descriptor is accessed using atomic operations as a result of this command, then the storage texel buffer&#8217;s <a href=\"#resources-buffer-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-None-02692",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-None-02693",
          "text": "If the <a href=\"#VK_EXT_filter_cubic\">VK_EXT_filter_cubic</a> extension is not enabled and any <a href=\"#VkImageView\">VkImageView</a> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, it <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-filterCubic-02694",
          "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 <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubic</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-filterCubicMinmax-02695",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubicMinmax</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-cubicRangeClamp-09212",
          "text": "If the <a href=\"#features-filter-cubic-range-clamp\"><code>cubicRangeClamp</code></a> feature is not enabled, then 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=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-reductionMode-09213",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with a <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code> as a result of this command <strong class=\"purple\">must</strong> sample with <code>VK_FILTER_CUBIC_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-selectableCubicWeights-09214",
          "text": "If the <a href=\"#features-filter-cubic-weight-selection\"><code>selectableCubicWeights</code></a> feature is not enabled, then 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 href=\"#VkSamplerCubicWeightsCreateInfoQCOM\">VkSamplerCubicWeightsCreateInfoQCOM</a>::<code>cubicWeights</code> equal to <code>VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-flags-02696",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-OpTypeImage-07027",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being written as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-OpTypeImage-07028",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being read as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-OpTypeImage-07029",
          "text": "For any <a href=\"#VkBufferView\">VkBufferView</a> being written as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-OpTypeImage-07030",
          "text": "Any <a href=\"#VkBufferView\">VkBufferView</a> being read as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code> then the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-None-08600",
          "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-None-08601",
          "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-None-10068",
          "text": "For each array of resources that is used by <a href=\"#shaders-binding\">a bound shader</a>, the indices used to access members of the array <strong class=\"purple\">must</strong> be less than the descriptor count for the identified binding in the descriptor sets used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-maintenance4-08602",
          "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-None-08114",
          "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-None-08115",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created without <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-None-08116",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-None-08604",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-None-08117",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-None-08119",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkPipeline\">VkPipeline</a> created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-None-08605",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkShaderEXT\">VkShaderEXT</a> created with a <code>VkDescriptorSetLayout</code> that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-None-08606",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is not enabled, a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-None-08608",
          "text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state specified statically in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-None-08609",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <a href=\"#VkImage\">VkImage</a> with a <a href=\"#VkImageView\">VkImageView</a> 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-None-08610",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-None-08611",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-None-08607",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-uniformBuffers-06935",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-None-08612",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-storageBuffers-06936",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>storageBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-None-08613",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-02707",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, any resource accessed by <a href=\"#shaders-binding\">bound shaders</a> <strong class=\"purple\">must</strong> not be a protected resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-None-06550",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> only be used with <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-ConstOffset-06551",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> not use the <code>ConstOffset</code> and <code>Offset</code> operands",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-viewType-07752",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> match the <code>Dim</code> operand of the <code>OpTypeImage</code> as described in <a href=\"#spirvenv-image-dimensions\">Compatibility Between SPIR-V Image Dimensions and Vulkan ImageView Types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-format-07753",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the <a href=\"#formats-numericformat\">numeric type</a> of the image view&#8217;s <code>format</code> and the <code>Sampled</code> <code>Type</code> operand of the <code>OpTypeImage</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-OpImageWrite-08795",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with a format other than <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-OpImageWrite-08796",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with the format <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have four components",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-OpImageWrite-04469",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the buffer view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-SampledType-04470",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-SampledType-04471",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-SampledType-04472",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-SampledType-04473",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-sparseImageInt64Atomics-04474",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-sparseImageInt64Atomics-04475",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-OpImageWeightedSampleQCOM-06971",
          "text": "If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-OpImageWeightedSampleQCOM-06972",
          "text": "If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image 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_2_WEIGHT_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-OpImageBoxFilterQCOM-06973",
          "text": "If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-OpImageBlockMatchSSDQCOM-06974",
          "text": "If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-OpImageBlockMatchSADQCOM-06975",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-OpImageBlockMatchSADQCOM-06976",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-OpImageWeightedSampleQCOM-06977",
          "text": "If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-OpImageWeightedSampleQCOM-06978",
          "text": "If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-OpImageBlockMatchWindow-09215",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-OpImageBlockMatchWindow-09216",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s format <strong class=\"purple\">must</strong> be a single-component format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-OpImageBlockMatchWindow-09217",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-None-07288",
          "text": "Any shader invocation executed by this command <strong class=\"purple\">must</strong> <a href=\"#shaders-termination\">terminate</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-None-09600",
          "text": "If a descriptor with type equal to any of <code>VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> is accessed as a result of this command, the image subresource identified by that descriptor <strong class=\"purple\">must</strong> be in the image layout identified when the descriptor was written",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-None-03429",
          "text": "Any shader group handle referenced by this call <strong class=\"purple\">must</strong> have been queried from the currently bound ray tracing pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-None-09458",
          "text": "If the bound ray tracing pipeline state was created with the <code>VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR</code> dynamic state enabled then <a href=\"#vkCmdSetRayTracingPipelineStackSizeKHR\">vkCmdSetRayTracingPipelineStackSizeKHR</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this trace command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-04624",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-maxRecursionDepth-03625",
          "text": "This command <strong class=\"purple\">must</strong> not cause a pipeline trace ray instruction to be executed from a shader invocation with a <a href=\"#ray-tracing-recursion-depth\">recursion depth</a> greater than the value of <code>maxRecursionDepth</code> used to create the bound ray tracing pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingTableBuffer-04042",
          "text": "If <code>raygenShaderBindingTableBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingOffset-02455",
          "text": "<code>raygenShaderBindingOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>raygenShaderBindingTableBuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingOffset-02456",
          "text": "<code>raygenShaderBindingOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupBaseAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingTableBuffer-04043",
          "text": "If <code>missShaderBindingTableBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingOffset-02457",
          "text": "<code>missShaderBindingOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>missShaderBindingTableBuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingOffset-02458",
          "text": "<code>missShaderBindingOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupBaseAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingTableBuffer-04044",
          "text": "If <code>hitShaderBindingTableBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingOffset-02459",
          "text": "<code>hitShaderBindingOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>hitShaderBindingTableBuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingOffset-02460",
          "text": "<code>hitShaderBindingOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupBaseAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingTableBuffer-04045",
          "text": "If <code>callableShaderBindingTableBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingOffset-02461",
          "text": "<code>callableShaderBindingOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>callableShaderBindingTableBuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingOffset-02462",
          "text": "<code>callableShaderBindingOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupBaseAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingStride-02463",
          "text": "<code>missShaderBindingStride</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupHandleSize</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingStride-02464",
          "text": "<code>hitShaderBindingStride</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupHandleSize</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingStride-02465",
          "text": "<code>callableShaderBindingStride</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupHandleSize</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingStride-02466",
          "text": "<code>missShaderBindingStride</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>maxShaderGroupStride</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingStride-02467",
          "text": "<code>hitShaderBindingStride</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>maxShaderGroupStride</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingStride-02468",
          "text": "<code>callableShaderBindingStride</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>maxShaderGroupStride</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-width-02469",
          "text": "<code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-height-02470",
          "text": "<code>height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-depth-02471",
          "text": "<code>depth</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingTableBuffer-parameter",
          "text": "<code>raygenShaderBindingTableBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingTableBuffer-parameter",
          "text": "If <code>missShaderBindingTableBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>missShaderBindingTableBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingTableBuffer-parameter",
          "text": "If <code>hitShaderBindingTableBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>hitShaderBindingTableBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingTableBuffer-parameter",
          "text": "If <code>callableShaderBindingTableBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>callableShaderBindingTableBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysNV-commonparent",
          "text": "Each of <code>callableShaderBindingTableBuffer</code>, <code>commandBuffer</code>, <code>hitShaderBindingTableBuffer</code>, <code>missShaderBindingTableBuffer</code>, and <code>raygenShaderBindingTableBuffer</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdTraceRaysKHR": {
      "core": [
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-magFilter-04553",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-magFilter-09598",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-mipmapMode-04770",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-mipmapMode-09599",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-unnormalizedCoordinates-09635",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>levelCount</code> and <code>layerCount</code> <strong class=\"purple\">must</strong> be 1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-unnormalizedCoordinates-09636",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_VIEW_TYPE_1D</code> or <code>VK_IMAGE_VIEW_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-None-06479",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is sampled with <a href=\"#textures-depth-compare-operation\">depth comparison</a>, 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_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-None-02691",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed using atomic operations as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-None-07888",
          "text": "If a <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> descriptor is accessed using atomic operations as a result of this command, then the storage texel buffer&#8217;s <a href=\"#resources-buffer-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-None-02692",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-None-02693",
          "text": "If the <a href=\"#VK_EXT_filter_cubic\">VK_EXT_filter_cubic</a> extension is not enabled and any <a href=\"#VkImageView\">VkImageView</a> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, it <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-filterCubic-02694",
          "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 <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubic</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-filterCubicMinmax-02695",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubicMinmax</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-cubicRangeClamp-09212",
          "text": "If the <a href=\"#features-filter-cubic-range-clamp\"><code>cubicRangeClamp</code></a> feature is not enabled, then 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=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-reductionMode-09213",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with a <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code> as a result of this command <strong class=\"purple\">must</strong> sample with <code>VK_FILTER_CUBIC_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-selectableCubicWeights-09214",
          "text": "If the <a href=\"#features-filter-cubic-weight-selection\"><code>selectableCubicWeights</code></a> feature is not enabled, then 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 href=\"#VkSamplerCubicWeightsCreateInfoQCOM\">VkSamplerCubicWeightsCreateInfoQCOM</a>::<code>cubicWeights</code> equal to <code>VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-flags-02696",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-OpTypeImage-07027",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being written as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-OpTypeImage-07028",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being read as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-OpTypeImage-07029",
          "text": "For any <a href=\"#VkBufferView\">VkBufferView</a> being written as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-OpTypeImage-07030",
          "text": "Any <a href=\"#VkBufferView\">VkBufferView</a> being read as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code> then the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-None-08600",
          "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-None-08601",
          "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-None-10068",
          "text": "For each array of resources that is used by <a href=\"#shaders-binding\">a bound shader</a>, the indices used to access members of the array <strong class=\"purple\">must</strong> be less than the descriptor count for the identified binding in the descriptor sets used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-maintenance4-08602",
          "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-None-08114",
          "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-None-08115",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created without <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-None-08116",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-None-08604",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-None-08117",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-None-08119",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkPipeline\">VkPipeline</a> created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-None-08605",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkShaderEXT\">VkShaderEXT</a> created with a <code>VkDescriptorSetLayout</code> that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-None-08606",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is not enabled, a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-None-08608",
          "text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state specified statically in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-None-08609",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <a href=\"#VkImage\">VkImage</a> with a <a href=\"#VkImageView\">VkImageView</a> 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-None-08610",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-None-08611",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-None-08607",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-uniformBuffers-06935",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-None-08612",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-storageBuffers-06936",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>storageBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-None-08613",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-02707",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, any resource accessed by <a href=\"#shaders-binding\">bound shaders</a> <strong class=\"purple\">must</strong> not be a protected resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-None-06550",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> only be used with <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-ConstOffset-06551",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> not use the <code>ConstOffset</code> and <code>Offset</code> operands",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-viewType-07752",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> match the <code>Dim</code> operand of the <code>OpTypeImage</code> as described in <a href=\"#spirvenv-image-dimensions\">Compatibility Between SPIR-V Image Dimensions and Vulkan ImageView Types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-format-07753",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the <a href=\"#formats-numericformat\">numeric type</a> of the image view&#8217;s <code>format</code> and the <code>Sampled</code> <code>Type</code> operand of the <code>OpTypeImage</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-OpImageWrite-08795",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with a format other than <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-OpImageWrite-08796",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with the format <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have four components",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-OpImageWrite-04469",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the buffer view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-SampledType-04470",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-SampledType-04471",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-SampledType-04472",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-SampledType-04473",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-sparseImageInt64Atomics-04474",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-sparseImageInt64Atomics-04475",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-OpImageWeightedSampleQCOM-06971",
          "text": "If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-OpImageWeightedSampleQCOM-06972",
          "text": "If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image 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_2_WEIGHT_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-OpImageBoxFilterQCOM-06973",
          "text": "If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-OpImageBlockMatchSSDQCOM-06974",
          "text": "If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-OpImageBlockMatchSADQCOM-06975",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-OpImageBlockMatchSADQCOM-06976",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-OpImageWeightedSampleQCOM-06977",
          "text": "If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-OpImageWeightedSampleQCOM-06978",
          "text": "If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-OpImageBlockMatchWindow-09215",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-OpImageBlockMatchWindow-09216",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s format <strong class=\"purple\">must</strong> be a single-component format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-OpImageBlockMatchWindow-09217",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-None-07288",
          "text": "Any shader invocation executed by this command <strong class=\"purple\">must</strong> <a href=\"#shaders-termination\">terminate</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-None-09600",
          "text": "If a descriptor with type equal to any of <code>VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> is accessed as a result of this command, the image subresource identified by that descriptor <strong class=\"purple\">must</strong> be in the image layout identified when the descriptor was written",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-None-03429",
          "text": "Any shader group handle referenced by this call <strong class=\"purple\">must</strong> have been queried from the currently bound ray tracing pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-None-09458",
          "text": "If the bound ray tracing pipeline state was created with the <code>VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR</code> dynamic state enabled then <a href=\"#vkCmdSetRayTracingPipelineStackSizeKHR\">vkCmdSetRayTracingPipelineStackSizeKHR</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this trace command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-maxPipelineRayRecursionDepth-03679",
          "text": "This command <strong class=\"purple\">must</strong> not cause a shader call instruction to be executed from a shader invocation with a <a href=\"#ray-tracing-recursion-depth\">recursion depth</a> greater than the value of <code>maxPipelineRayRecursionDepth</code> used to create the bound ray tracing pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-03635",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-size-04023",
          "text": "The <code>size</code> member of <code>pRayGenShaderBindingTable</code> <strong class=\"purple\">must</strong> be equal to its <code>stride</code> member",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-pRayGenShaderBindingTable-03680",
          "text": "If the buffer from which <code>pRayGenShaderBindingTable-&gt;deviceAddress</code> was queried is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-pRayGenShaderBindingTable-03681",
          "text": "The buffer from which the <code>pRayGenShaderBindingTable-&gt;deviceAddress</code> is queried <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-pRayGenShaderBindingTable-03682",
          "text": "<code>pRayGenShaderBindingTable-&gt;deviceAddress</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-03683",
          "text": "If the buffer from which <code>pMissShaderBindingTable-&gt;deviceAddress</code> was queried is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-03684",
          "text": "The buffer from which the <code>pMissShaderBindingTable-&gt;deviceAddress</code> is queried <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-03685",
          "text": "<code>pMissShaderBindingTable-&gt;deviceAddress</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-stride-03686",
          "text": "<code>pMissShaderBindingTable-&gt;stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupHandleAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-stride-04029",
          "text": "<code>pMissShaderBindingTable-&gt;stride</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>maxShaderGroupStride</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-03687",
          "text": "If the buffer from which <code>pHitShaderBindingTable-&gt;deviceAddress</code> was queried is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-03688",
          "text": "The buffer from which the <code>pHitShaderBindingTable-&gt;deviceAddress</code> is queried <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-03689",
          "text": "<code>pHitShaderBindingTable-&gt;deviceAddress</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-stride-03690",
          "text": "<code>pHitShaderBindingTable-&gt;stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupHandleAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-stride-04035",
          "text": "<code>pHitShaderBindingTable-&gt;stride</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>maxShaderGroupStride</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-03691",
          "text": "If the buffer from which <code>pCallableShaderBindingTable-&gt;deviceAddress</code> was queried is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-03692",
          "text": "The buffer from which the <code>pCallableShaderBindingTable-&gt;deviceAddress</code> is queried <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-03693",
          "text": "<code>pCallableShaderBindingTable-&gt;deviceAddress</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-stride-03694",
          "text": "<code>pCallableShaderBindingTable-&gt;stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupHandleAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-stride-04041",
          "text": "<code>pCallableShaderBindingTable-&gt;stride</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>maxShaderGroupStride</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-flags-03696",
          "text": "If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>, <code>pHitShaderBindingTable-&gt;deviceAddress</code> <strong class=\"purple\">must</strong> not be zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-flags-03697",
          "text": "If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code>, <code>pHitShaderBindingTable-&gt;deviceAddress</code> <strong class=\"purple\">must</strong> not be zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-flags-03511",
          "text": "If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR</code>, the shader group handle identified by <code>pMissShaderBindingTable-&gt;deviceAddress</code> <strong class=\"purple\">must</strong> not be set to zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-flags-03512",
          "text": "If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR</code>, entries in the table identified by <code>pHitShaderBindingTable-&gt;deviceAddress</code> accessed as a result of this command in order to execute an any-hit shader <strong class=\"purple\">must</strong> not be set to zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-flags-03513",
          "text": "If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>, entries in the table identified by <code>pHitShaderBindingTable-&gt;deviceAddress</code> accessed as a result of this command in order to execute a closest hit shader <strong class=\"purple\">must</strong> not be set to zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-flags-03514",
          "text": "If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code>, entries in the table identified by <code>pHitShaderBindingTable-&gt;deviceAddress</code> accessed as a result of this command in order to execute an intersection shader <strong class=\"purple\">must</strong> not be set to zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-04735",
          "text": "Any non-zero hit shader group entries in the table identified by <code>pHitShaderBindingTable-&gt;deviceAddress</code> accessed by this call from a geometry with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code> <strong class=\"purple\">must</strong> have been created with <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-04736",
          "text": "Any non-zero hit shader group entries in the table identified by <code>pHitShaderBindingTable-&gt;deviceAddress</code> accessed by this call from a geometry with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_AABBS_KHR</code> <strong class=\"purple\">must</strong> have been created with <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-width-03638",
          "text": "<code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\"><code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0] × <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupSize</code>[0]</span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-height-03639",
          "text": "<code>height</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\"><code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1] × <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupSize</code>[1]</span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-depth-03640",
          "text": "<code>depth</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\"><code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2] × <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupSize</code>[2]</span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-width-03641",
          "text": "<span class=\"eq\"><code>width</code> × <code>height</code> × <code>depth</code></span> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>maxRayDispatchInvocationCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-pRaygenShaderBindingTable-parameter",
          "text": "<code>pRaygenShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedDeviceAddressRegionKHR\">VkStridedDeviceAddressRegionKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-parameter",
          "text": "<code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedDeviceAddressRegionKHR\">VkStridedDeviceAddressRegionKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-parameter",
          "text": "<code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedDeviceAddressRegionKHR\">VkStridedDeviceAddressRegionKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-parameter",
          "text": "<code>pCallableShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedDeviceAddressRegionKHR\">VkStridedDeviceAddressRegionKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysKHR-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdBindInvocationMaskHUAWEI": {
      "core": [
        {
          "vuid": "VUID-vkCmdBindInvocationMaskHUAWEI-None-04976",
          "text": "The <a href=\"#features-invocationMask\"><code>invocationMask</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindInvocationMaskHUAWEI-imageView-04977",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindInvocationMaskHUAWEI-imageView-04978",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindInvocationMaskHUAWEI-imageView-04979",
          "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 <code>VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI</code> set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindInvocationMaskHUAWEI-imageView-04980",
          "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_GENERAL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindInvocationMaskHUAWEI-width-04981",
          "text": "Thread mask image resolution <strong class=\"purple\">must</strong> match the <code>width</code> and <code>height</code> in <a href=\"#vkCmdTraceRaysKHR\">vkCmdTraceRaysKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindInvocationMaskHUAWEI-None-04982",
          "text": "Each element in the invocation mask image <strong class=\"purple\">must</strong> have the value <code>0</code> or <code>1</code>. The value 1 means the invocation is active",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindInvocationMaskHUAWEI-depth-04983",
          "text": "<code>depth</code> in <a href=\"#vkCmdTraceRaysKHR\">vkCmdTraceRaysKHR</a> <strong class=\"purple\">must</strong> be 1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindInvocationMaskHUAWEI-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindInvocationMaskHUAWEI-imageView-parameter",
          "text": "If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>imageView</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageView\">VkImageView</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindInvocationMaskHUAWEI-imageLayout-parameter",
          "text": "<code>imageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindInvocationMaskHUAWEI-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindInvocationMaskHUAWEI-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindInvocationMaskHUAWEI-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindInvocationMaskHUAWEI-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBindInvocationMaskHUAWEI-commonparent",
          "text": "Both of <code>commandBuffer</code>, and <code>imageView</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdTraceRaysIndirectKHR": {
      "core": [
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-magFilter-04553",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-magFilter-09598",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-mipmapMode-04770",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-mipmapMode-09599",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-unnormalizedCoordinates-09635",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>levelCount</code> and <code>layerCount</code> <strong class=\"purple\">must</strong> be 1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-unnormalizedCoordinates-09636",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_VIEW_TYPE_1D</code> or <code>VK_IMAGE_VIEW_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-06479",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is sampled with <a href=\"#textures-depth-compare-operation\">depth comparison</a>, 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_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02691",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed using atomic operations as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-07888",
          "text": "If a <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> descriptor is accessed using atomic operations as a result of this command, then the storage texel buffer&#8217;s <a href=\"#resources-buffer-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02692",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02693",
          "text": "If the <a href=\"#VK_EXT_filter_cubic\">VK_EXT_filter_cubic</a> extension is not enabled and any <a href=\"#VkImageView\">VkImageView</a> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, it <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-filterCubic-02694",
          "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 <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubic</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-filterCubicMinmax-02695",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubicMinmax</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-cubicRangeClamp-09212",
          "text": "If the <a href=\"#features-filter-cubic-range-clamp\"><code>cubicRangeClamp</code></a> feature is not enabled, then 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=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-reductionMode-09213",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with a <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code> as a result of this command <strong class=\"purple\">must</strong> sample with <code>VK_FILTER_CUBIC_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-selectableCubicWeights-09214",
          "text": "If the <a href=\"#features-filter-cubic-weight-selection\"><code>selectableCubicWeights</code></a> feature is not enabled, then 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 href=\"#VkSamplerCubicWeightsCreateInfoQCOM\">VkSamplerCubicWeightsCreateInfoQCOM</a>::<code>cubicWeights</code> equal to <code>VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-02696",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpTypeImage-07027",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being written as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpTypeImage-07028",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being read as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpTypeImage-07029",
          "text": "For any <a href=\"#VkBufferView\">VkBufferView</a> being written as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpTypeImage-07030",
          "text": "Any <a href=\"#VkBufferView\">VkBufferView</a> being read as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code> then the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-08600",
          "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-08601",
          "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-10068",
          "text": "For each array of resources that is used by <a href=\"#shaders-binding\">a bound shader</a>, the indices used to access members of the array <strong class=\"purple\">must</strong> be less than the descriptor count for the identified binding in the descriptor sets used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-maintenance4-08602",
          "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-08114",
          "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-08115",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created without <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-08116",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-08604",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-08117",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-08119",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkPipeline\">VkPipeline</a> created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-08605",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkShaderEXT\">VkShaderEXT</a> created with a <code>VkDescriptorSetLayout</code> that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-08606",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is not enabled, a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-08608",
          "text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state specified statically in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-08609",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <a href=\"#VkImage\">VkImage</a> with a <a href=\"#VkImageView\">VkImageView</a> 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-08610",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-08611",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-08607",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-uniformBuffers-06935",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-08612",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-storageBuffers-06936",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>storageBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-08613",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-02707",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, any resource accessed by <a href=\"#shaders-binding\">bound shaders</a> <strong class=\"purple\">must</strong> not be a protected resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-06550",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> only be used with <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-ConstOffset-06551",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> not use the <code>ConstOffset</code> and <code>Offset</code> operands",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-viewType-07752",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> match the <code>Dim</code> operand of the <code>OpTypeImage</code> as described in <a href=\"#spirvenv-image-dimensions\">Compatibility Between SPIR-V Image Dimensions and Vulkan ImageView Types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-format-07753",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the <a href=\"#formats-numericformat\">numeric type</a> of the image view&#8217;s <code>format</code> and the <code>Sampled</code> <code>Type</code> operand of the <code>OpTypeImage</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpImageWrite-08795",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with a format other than <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpImageWrite-08796",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with the format <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have four components",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpImageWrite-04469",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the buffer view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-SampledType-04470",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-SampledType-04471",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-SampledType-04472",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-SampledType-04473",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-sparseImageInt64Atomics-04474",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-sparseImageInt64Atomics-04475",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpImageWeightedSampleQCOM-06971",
          "text": "If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpImageWeightedSampleQCOM-06972",
          "text": "If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image 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_2_WEIGHT_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpImageBoxFilterQCOM-06973",
          "text": "If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpImageBlockMatchSSDQCOM-06974",
          "text": "If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpImageBlockMatchSADQCOM-06975",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpImageBlockMatchSADQCOM-06976",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpImageWeightedSampleQCOM-06977",
          "text": "If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpImageWeightedSampleQCOM-06978",
          "text": "If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpImageBlockMatchWindow-09215",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpImageBlockMatchWindow-09216",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s format <strong class=\"purple\">must</strong> be a single-component format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpImageBlockMatchWindow-09217",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-07288",
          "text": "Any shader invocation executed by this command <strong class=\"purple\">must</strong> <a href=\"#shaders-termination\">terminate</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-09600",
          "text": "If a descriptor with type equal to any of <code>VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> is accessed as a result of this command, the image subresource identified by that descriptor <strong class=\"purple\">must</strong> be in the image layout identified when the descriptor was written",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-03429",
          "text": "Any shader group handle referenced by this call <strong class=\"purple\">must</strong> have been queried from the currently bound ray tracing pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-09458",
          "text": "If the bound ray tracing pipeline state was created with the <code>VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR</code> dynamic state enabled then <a href=\"#vkCmdSetRayTracingPipelineStackSizeKHR\">vkCmdSetRayTracingPipelineStackSizeKHR</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this trace command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-maxPipelineRayRecursionDepth-03679",
          "text": "This command <strong class=\"purple\">must</strong> not cause a shader call instruction to be executed from a shader invocation with a <a href=\"#ray-tracing-recursion-depth\">recursion depth</a> greater than the value of <code>maxPipelineRayRecursionDepth</code> used to create the bound ray tracing pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-03635",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-size-04023",
          "text": "The <code>size</code> member of <code>pRayGenShaderBindingTable</code> <strong class=\"purple\">must</strong> be equal to its <code>stride</code> member",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pRayGenShaderBindingTable-03680",
          "text": "If the buffer from which <code>pRayGenShaderBindingTable-&gt;deviceAddress</code> was queried is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pRayGenShaderBindingTable-03681",
          "text": "The buffer from which the <code>pRayGenShaderBindingTable-&gt;deviceAddress</code> is queried <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pRayGenShaderBindingTable-03682",
          "text": "<code>pRayGenShaderBindingTable-&gt;deviceAddress</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-03683",
          "text": "If the buffer from which <code>pMissShaderBindingTable-&gt;deviceAddress</code> was queried is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-03684",
          "text": "The buffer from which the <code>pMissShaderBindingTable-&gt;deviceAddress</code> is queried <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-03685",
          "text": "<code>pMissShaderBindingTable-&gt;deviceAddress</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-03686",
          "text": "<code>pMissShaderBindingTable-&gt;stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupHandleAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-04029",
          "text": "<code>pMissShaderBindingTable-&gt;stride</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>maxShaderGroupStride</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-03687",
          "text": "If the buffer from which <code>pHitShaderBindingTable-&gt;deviceAddress</code> was queried is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-03688",
          "text": "The buffer from which the <code>pHitShaderBindingTable-&gt;deviceAddress</code> is queried <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-03689",
          "text": "<code>pHitShaderBindingTable-&gt;deviceAddress</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-03690",
          "text": "<code>pHitShaderBindingTable-&gt;stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupHandleAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-04035",
          "text": "<code>pHitShaderBindingTable-&gt;stride</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>maxShaderGroupStride</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-03691",
          "text": "If the buffer from which <code>pCallableShaderBindingTable-&gt;deviceAddress</code> was queried is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-03692",
          "text": "The buffer from which the <code>pCallableShaderBindingTable-&gt;deviceAddress</code> is queried <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-03693",
          "text": "<code>pCallableShaderBindingTable-&gt;deviceAddress</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-03694",
          "text": "<code>pCallableShaderBindingTable-&gt;stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupHandleAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-04041",
          "text": "<code>pCallableShaderBindingTable-&gt;stride</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>maxShaderGroupStride</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03696",
          "text": "If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>, <code>pHitShaderBindingTable-&gt;deviceAddress</code> <strong class=\"purple\">must</strong> not be zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03697",
          "text": "If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code>, <code>pHitShaderBindingTable-&gt;deviceAddress</code> <strong class=\"purple\">must</strong> not be zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03511",
          "text": "If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR</code>, the shader group handle identified by <code>pMissShaderBindingTable-&gt;deviceAddress</code> <strong class=\"purple\">must</strong> not be set to zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03512",
          "text": "If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR</code>, entries in the table identified by <code>pHitShaderBindingTable-&gt;deviceAddress</code> accessed as a result of this command in order to execute an any-hit shader <strong class=\"purple\">must</strong> not be set to zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03513",
          "text": "If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>, entries in the table identified by <code>pHitShaderBindingTable-&gt;deviceAddress</code> accessed as a result of this command in order to execute a closest hit shader <strong class=\"purple\">must</strong> not be set to zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03514",
          "text": "If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code>, entries in the table identified by <code>pHitShaderBindingTable-&gt;deviceAddress</code> accessed as a result of this command in order to execute an intersection shader <strong class=\"purple\">must</strong> not be set to zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-04735",
          "text": "Any non-zero hit shader group entries in the table identified by <code>pHitShaderBindingTable-&gt;deviceAddress</code> accessed by this call from a geometry with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code> <strong class=\"purple\">must</strong> have been created with <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-04736",
          "text": "Any non-zero hit shader group entries in the table identified by <code>pHitShaderBindingTable-&gt;deviceAddress</code> accessed by this call from a geometry with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_AABBS_KHR</code> <strong class=\"purple\">must</strong> have been created with <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-indirectDeviceAddress-03632",
          "text": "If the buffer from which <code>indirectDeviceAddress</code> was queried is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-indirectDeviceAddress-03633",
          "text": "The buffer from which <code>indirectDeviceAddress</code> was queried <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-indirectDeviceAddress-03634",
          "text": "<code>indirectDeviceAddress</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-indirectDeviceAddress-03636",
          "text": "All device addresses between <code>indirectDeviceAddress</code> and <span class=\"eq\"><code>indirectDeviceAddress</code> +  <code>sizeof</code>(<code>VkTraceRaysIndirectCommandKHR</code>) - 1</span> <strong class=\"purple\">must</strong> be in the buffer device address range of the same buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-rayTracingPipelineTraceRaysIndirect-03637",
          "text": "The <a href=\"#features-rayTracingPipelineTraceRaysIndirect\"><code>rayTracingPipelineTraceRaysIndirect</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-rayTracingMotionBlurPipelineTraceRaysIndirect-04951",
          "text": "If the bound ray tracing pipeline was created with <code>VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV</code> <code>VkPhysicalDeviceRayTracingMotionBlurFeaturesNV</code>::<code>rayTracingMotionBlurPipelineTraceRaysIndirect</code> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pRaygenShaderBindingTable-parameter",
          "text": "<code>pRaygenShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedDeviceAddressRegionKHR\">VkStridedDeviceAddressRegionKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-parameter",
          "text": "<code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedDeviceAddressRegionKHR\">VkStridedDeviceAddressRegionKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-parameter",
          "text": "<code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedDeviceAddressRegionKHR\">VkStridedDeviceAddressRegionKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-parameter",
          "text": "<code>pCallableShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedDeviceAddressRegionKHR\">VkStridedDeviceAddressRegionKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkTraceRaysIndirectCommandKHR": {
      "core": [
        {
          "vuid": "VUID-VkTraceRaysIndirectCommandKHR-width-03638",
          "text": "<code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\"><code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0] × <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupSize</code>[0]</span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkTraceRaysIndirectCommandKHR-height-03639",
          "text": "<code>height</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\"><code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1] × <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupSize</code>[1]</span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkTraceRaysIndirectCommandKHR-depth-03640",
          "text": "<code>depth</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\"><code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2] × <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupSize</code>[2]</span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkTraceRaysIndirectCommandKHR-width-03641",
          "text": "<span class=\"eq\"><code>width</code> × <code>height</code> × <code>depth</code></span> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>maxRayDispatchInvocationCount</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdTraceRaysIndirect2KHR": {
      "core": [
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-magFilter-04553",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-magFilter-09598",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-mipmapMode-04770",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-mipmapMode-09599",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-unnormalizedCoordinates-09635",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>levelCount</code> and <code>layerCount</code> <strong class=\"purple\">must</strong> be 1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-unnormalizedCoordinates-09636",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_VIEW_TYPE_1D</code> or <code>VK_IMAGE_VIEW_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-06479",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is sampled with <a href=\"#textures-depth-compare-operation\">depth comparison</a>, 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_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-02691",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed using atomic operations as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-07888",
          "text": "If a <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> descriptor is accessed using atomic operations as a result of this command, then the storage texel buffer&#8217;s <a href=\"#resources-buffer-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-02692",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-02693",
          "text": "If the <a href=\"#VK_EXT_filter_cubic\">VK_EXT_filter_cubic</a> extension is not enabled and any <a href=\"#VkImageView\">VkImageView</a> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, it <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-filterCubic-02694",
          "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 <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubic</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-filterCubicMinmax-02695",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubicMinmax</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-cubicRangeClamp-09212",
          "text": "If the <a href=\"#features-filter-cubic-range-clamp\"><code>cubicRangeClamp</code></a> feature is not enabled, then 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=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-reductionMode-09213",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with a <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code> as a result of this command <strong class=\"purple\">must</strong> sample with <code>VK_FILTER_CUBIC_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-selectableCubicWeights-09214",
          "text": "If the <a href=\"#features-filter-cubic-weight-selection\"><code>selectableCubicWeights</code></a> feature is not enabled, then 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 href=\"#VkSamplerCubicWeightsCreateInfoQCOM\">VkSamplerCubicWeightsCreateInfoQCOM</a>::<code>cubicWeights</code> equal to <code>VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-flags-02696",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-OpTypeImage-07027",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being written as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-OpTypeImage-07028",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being read as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-OpTypeImage-07029",
          "text": "For any <a href=\"#VkBufferView\">VkBufferView</a> being written as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-OpTypeImage-07030",
          "text": "Any <a href=\"#VkBufferView\">VkBufferView</a> being read as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code> then the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-08600",
          "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-08601",
          "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-10068",
          "text": "For each array of resources that is used by <a href=\"#shaders-binding\">a bound shader</a>, the indices used to access members of the array <strong class=\"purple\">must</strong> be less than the descriptor count for the identified binding in the descriptor sets used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-maintenance4-08602",
          "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-08114",
          "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-08115",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created without <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-08116",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-08604",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-08117",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-08119",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkPipeline\">VkPipeline</a> created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-08605",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkShaderEXT\">VkShaderEXT</a> created with a <code>VkDescriptorSetLayout</code> that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-08606",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is not enabled, a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-08608",
          "text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state specified statically in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-08609",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <a href=\"#VkImage\">VkImage</a> with a <a href=\"#VkImageView\">VkImageView</a> 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-08610",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-08611",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-08607",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-uniformBuffers-06935",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-08612",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-storageBuffers-06936",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>storageBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-08613",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-commandBuffer-02707",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, any resource accessed by <a href=\"#shaders-binding\">bound shaders</a> <strong class=\"purple\">must</strong> not be a protected resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-06550",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> only be used with <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-ConstOffset-06551",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> not use the <code>ConstOffset</code> and <code>Offset</code> operands",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-viewType-07752",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> match the <code>Dim</code> operand of the <code>OpTypeImage</code> as described in <a href=\"#spirvenv-image-dimensions\">Compatibility Between SPIR-V Image Dimensions and Vulkan ImageView Types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-format-07753",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the <a href=\"#formats-numericformat\">numeric type</a> of the image view&#8217;s <code>format</code> and the <code>Sampled</code> <code>Type</code> operand of the <code>OpTypeImage</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-OpImageWrite-08795",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with a format other than <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-OpImageWrite-08796",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with the format <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have four components",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-OpImageWrite-04469",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the buffer view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-SampledType-04470",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-SampledType-04471",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-SampledType-04472",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-SampledType-04473",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-sparseImageInt64Atomics-04474",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-sparseImageInt64Atomics-04475",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-OpImageWeightedSampleQCOM-06971",
          "text": "If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-OpImageWeightedSampleQCOM-06972",
          "text": "If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image 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_2_WEIGHT_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-OpImageBoxFilterQCOM-06973",
          "text": "If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-OpImageBlockMatchSSDQCOM-06974",
          "text": "If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-OpImageBlockMatchSADQCOM-06975",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-OpImageBlockMatchSADQCOM-06976",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-OpImageWeightedSampleQCOM-06977",
          "text": "If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-OpImageWeightedSampleQCOM-06978",
          "text": "If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-OpImageBlockMatchWindow-09215",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-OpImageBlockMatchWindow-09216",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s format <strong class=\"purple\">must</strong> be a single-component format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-OpImageBlockMatchWindow-09217",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-07288",
          "text": "Any shader invocation executed by this command <strong class=\"purple\">must</strong> <a href=\"#shaders-termination\">terminate</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-09600",
          "text": "If a descriptor with type equal to any of <code>VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> is accessed as a result of this command, the image subresource identified by that descriptor <strong class=\"purple\">must</strong> be in the image layout identified when the descriptor was written",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-03429",
          "text": "Any shader group handle referenced by this call <strong class=\"purple\">must</strong> have been queried from the currently bound ray tracing pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-09458",
          "text": "If the bound ray tracing pipeline state was created with the <code>VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR</code> dynamic state enabled then <a href=\"#vkCmdSetRayTracingPipelineStackSizeKHR\">vkCmdSetRayTracingPipelineStackSizeKHR</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this trace command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-maxPipelineRayRecursionDepth-03679",
          "text": "This command <strong class=\"purple\">must</strong> not cause a shader call instruction to be executed from a shader invocation with a <a href=\"#ray-tracing-recursion-depth\">recursion depth</a> greater than the value of <code>maxPipelineRayRecursionDepth</code> used to create the bound ray tracing pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-commandBuffer-03635",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-indirectDeviceAddress-03632",
          "text": "If the buffer from which <code>indirectDeviceAddress</code> was queried is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-indirectDeviceAddress-03633",
          "text": "The buffer from which <code>indirectDeviceAddress</code> was queried <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-indirectDeviceAddress-03634",
          "text": "<code>indirectDeviceAddress</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-indirectDeviceAddress-03636",
          "text": "All device addresses between <code>indirectDeviceAddress</code> and <span class=\"eq\"><code>indirectDeviceAddress</code> +  <code>sizeof</code>(<code>VkTraceRaysIndirectCommand2KHR</code>) - 1</span> <strong class=\"purple\">must</strong> be in the buffer device address range of the same buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-rayTracingPipelineTraceRaysIndirect2-03637",
          "text": "The <a href=\"#features-rayTracingPipelineTraceRaysIndirect2\"><code>rayTracingPipelineTraceRaysIndirect2</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-rayTracingMotionBlurPipelineTraceRaysIndirect-04951",
          "text": "If the bound ray tracing pipeline was created with <code>VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV</code> <code>VkPhysicalDeviceRayTracingMotionBlurFeaturesNV</code>::<code>rayTracingMotionBlurPipelineTraceRaysIndirect</code> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkTraceRaysIndirectCommand2KHR": {
      "core": [
        {
          "vuid": "VUID-VkTraceRaysIndirectCommand2KHR-pRayGenShaderBindingTable-03680",
          "text": "If the buffer from which <code>raygenShaderRecordAddress</code> was queried is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkTraceRaysIndirectCommand2KHR-pRayGenShaderBindingTable-03681",
          "text": "The buffer from which the <code>raygenShaderRecordAddress</code> is queried <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkTraceRaysIndirectCommand2KHR-pRayGenShaderBindingTable-03682",
          "text": "<code>raygenShaderRecordAddress</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkTraceRaysIndirectCommand2KHR-pMissShaderBindingTable-03683",
          "text": "If the buffer from which <code>missShaderBindingTableAddress</code> was queried is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkTraceRaysIndirectCommand2KHR-pMissShaderBindingTable-03684",
          "text": "The buffer from which the <code>missShaderBindingTableAddress</code> is queried <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkTraceRaysIndirectCommand2KHR-pMissShaderBindingTable-03685",
          "text": "<code>missShaderBindingTableAddress</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkTraceRaysIndirectCommand2KHR-stride-03686",
          "text": "<code>missShaderBindingTableStride</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupHandleAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkTraceRaysIndirectCommand2KHR-stride-04029",
          "text": "<code>missShaderBindingTableStride</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>maxShaderGroupStride</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkTraceRaysIndirectCommand2KHR-pHitShaderBindingTable-03687",
          "text": "If the buffer from which <code>hitShaderBindingTableAddress</code> was queried is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkTraceRaysIndirectCommand2KHR-pHitShaderBindingTable-03688",
          "text": "The buffer from which the <code>hitShaderBindingTableAddress</code> is queried <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkTraceRaysIndirectCommand2KHR-pHitShaderBindingTable-03689",
          "text": "<code>hitShaderBindingTableAddress</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkTraceRaysIndirectCommand2KHR-stride-03690",
          "text": "<code>hitShaderBindingTableStride</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupHandleAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkTraceRaysIndirectCommand2KHR-stride-04035",
          "text": "<code>hitShaderBindingTableStride</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>maxShaderGroupStride</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkTraceRaysIndirectCommand2KHR-pCallableShaderBindingTable-03691",
          "text": "If the buffer from which <code>callableShaderBindingTableAddress</code> was queried is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkTraceRaysIndirectCommand2KHR-pCallableShaderBindingTable-03692",
          "text": "The buffer from which the <code>callableShaderBindingTableAddress</code> is queried <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR</code> usage flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkTraceRaysIndirectCommand2KHR-pCallableShaderBindingTable-03693",
          "text": "<code>callableShaderBindingTableAddress</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkTraceRaysIndirectCommand2KHR-stride-03694",
          "text": "<code>callableShaderBindingTableStride</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>shaderGroupHandleAlignment</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkTraceRaysIndirectCommand2KHR-stride-04041",
          "text": "<code>callableShaderBindingTableStride</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>maxShaderGroupStride</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkTraceRaysIndirectCommand2KHR-flags-03696",
          "text": "If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>, <code>hitShaderBindingTableAddress</code> <strong class=\"purple\">must</strong> not be zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkTraceRaysIndirectCommand2KHR-flags-03697",
          "text": "If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code>, <code>hitShaderBindingTableAddress</code> <strong class=\"purple\">must</strong> not be zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkTraceRaysIndirectCommand2KHR-flags-03511",
          "text": "If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR</code>, the shader group handle identified by <code>missShaderBindingTableAddress</code> <strong class=\"purple\">must</strong> not be set to zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkTraceRaysIndirectCommand2KHR-flags-03512",
          "text": "If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR</code>, entries in the table identified by <code>hitShaderBindingTableAddress</code> accessed as a result of this command in order to execute an any-hit shader <strong class=\"purple\">must</strong> not be set to zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkTraceRaysIndirectCommand2KHR-flags-03513",
          "text": "If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>, entries in the table identified by <code>hitShaderBindingTableAddress</code> accessed as a result of this command in order to execute a closest hit shader <strong class=\"purple\">must</strong> not be set to zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkTraceRaysIndirectCommand2KHR-flags-03514",
          "text": "If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code>, entries in the table identified by <code>hitShaderBindingTableAddress</code> accessed as a result of this command in order to execute an intersection shader <strong class=\"purple\">must</strong> not be set to zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkTraceRaysIndirectCommand2KHR-pHitShaderBindingTable-04735",
          "text": "Any non-zero hit shader group entries in the table identified by <code>hitShaderBindingTableAddress</code> accessed by this call from a geometry with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code> <strong class=\"purple\">must</strong> have been created with <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkTraceRaysIndirectCommand2KHR-pHitShaderBindingTable-04736",
          "text": "Any non-zero hit shader group entries in the table identified by <code>hitShaderBindingTableAddress</code> accessed by this call from a geometry with a <code>geometryType</code> of <code>VK_GEOMETRY_TYPE_AABBS_KHR</code> <strong class=\"purple\">must</strong> have been created with <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkTraceRaysIndirectCommand2KHR-width-03638",
          "text": "<code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\"><code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0] × <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupSize</code>[0]</span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkTraceRaysIndirectCommand2KHR-height-03639",
          "text": "<code>height</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\"><code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1] × <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupSize</code>[1]</span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkTraceRaysIndirectCommand2KHR-depth-03640",
          "text": "<code>depth</code> <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\"><code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2] × <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupSize</code>[2]</span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkTraceRaysIndirectCommand2KHR-width-03641",
          "text": "<span class=\"eq\"><code>width</code> × <code>height</code> × <code>depth</code></span> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPipelinePropertiesKHR</code>::<code>maxRayDispatchInvocationCount</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdDecompressMemoryNV": {
      "core": [
        {
          "vuid": "VUID-vkCmdDecompressMemoryNV-None-07684",
          "text": "The <a href=\"#features-memoryDecompression\"><code>memoryDecompression</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecompressMemoryNV-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecompressMemoryNV-pDecompressMemoryRegions-parameter",
          "text": "<code>pDecompressMemoryRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>decompressRegionCount</code> valid <a href=\"#VkDecompressMemoryRegionNV\">VkDecompressMemoryRegionNV</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecompressMemoryNV-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecompressMemoryNV-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecompressMemoryNV-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecompressMemoryNV-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecompressMemoryNV-decompressRegionCount-arraylength",
          "text": "<code>decompressRegionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkDecompressMemoryRegionNV": {
      "core": [
        {
          "vuid": "VUID-VkDecompressMemoryRegionNV-srcAddress-07685",
          "text": "The <code>srcAddress</code> <strong class=\"purple\">must</strong> be 4 byte aligned",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDecompressMemoryRegionNV-srcAddress-07686",
          "text": "The memory in range <code>srcAddress</code> and <code>srcAddress</code> +  <code>compressedSize</code> <strong class=\"purple\">must</strong> be valid and bound to a <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDecompressMemoryRegionNV-dstAddress-07687",
          "text": "The <code>dstAddress</code> <strong class=\"purple\">must</strong> be 4 byte aligned",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDecompressMemoryRegionNV-decompressionMethod-09395",
          "text": "If <code>decompressionMethod</code> is <code>VK_MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_NV</code>, then <code>decompressedSize</code> <strong class=\"purple\">must</strong> be less than or equal to 65536 bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDecompressMemoryRegionNV-dstAddress-07688",
          "text": "The memory in range <code>dstAddress</code> and <code>dstAddress</code> +  <code>decompressedSize</code> <strong class=\"purple\">must</strong> be valid and bound to a <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDecompressMemoryRegionNV-decompressedSize-07689",
          "text": "The <code>decompressedSize</code> <strong class=\"purple\">must</strong> be large enough to hold the decompressed data based on the <code>decompressionMethod</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDecompressMemoryRegionNV-decompressionMethod-07690",
          "text": "The <code>decompressionMethod</code> <strong class=\"purple\">must</strong> have a single bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDecompressMemoryRegionNV-srcAddress-07691",
          "text": "The <code>srcAddress</code> to <code>srcAddress</code> +  <code>compressedSize</code> region <strong class=\"purple\">must</strong> not overlap with the <code>dstAddress</code> and <code>dstAddress</code> +  <code>decompressedSize</code> region",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDecompressMemoryRegionNV-decompressionMethod-parameter",
          "text": "<code>decompressionMethod</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkMemoryDecompressionMethodFlagBitsNV\">VkMemoryDecompressionMethodFlagBitsNV</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDecompressMemoryRegionNV-decompressionMethod-requiredbitmask",
          "text": "<code>decompressionMethod</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdDecompressMemoryIndirectCountNV": {
      "core": [
        {
          "vuid": "VUID-vkCmdDecompressMemoryIndirectCountNV-None-07692",
          "text": "The <a href=\"#features-memoryDecompression\"><code>memoryDecompression</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsAddress-07693",
          "text": "If <code>indirectCommandsAddress</code> comes from a non-sparse buffer then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsAddress-07694",
          "text": "The <a href=\"#VkBuffer\">VkBuffer</a> that <code>indirectCommandsAddress</code> comes from <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecompressMemoryIndirectCountNV-offset-07695",
          "text": "<code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsCountAddress-07696",
          "text": "If <code>indirectCommandsCountAddress</code> comes from a non-sparse buffer then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsCountAddress-07697",
          "text": "The <a href=\"#VkBuffer\">VkBuffer</a> that <code>indirectCommandsCountAddress</code> comes from <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsCountAddress-07698",
          "text": "<code>indirectCommandsCountAddress</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsCountAddress-07699",
          "text": "The count stored in <code>indirectCommandsCountAddress</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceMemoryDecompressionPropertiesNV</code>::<code>maxDecompressionIndirectCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecompressMemoryIndirectCountNV-stride-07700",
          "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>VkDecompressMemoryRegionNV</code>)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsCountAddress-07701",
          "text": "If the count stored in <code>indirectCommandsCountAddress</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> +  sizeof(<code>VkDecompressMemoryRegionNV</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of the <a href=\"#VkBuffer\">VkBuffer</a> that <code>indirectCommandsAddress</code> comes from",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecompressMemoryIndirectCountNV-indirectCommandsCountAddress-07702",
          "text": "If the count stored in <code>indirectCommandsCountAddress</code> is greater than <code>1</code>, <code>indirectCommandsAddress</code> +  sizeof(<code>VkDecompressMemoryRegionNV</code>) +  <span class=\"eq\">(<code>stride</code> × (count stored in <code>countBuffer</code> - 1))</span> <strong class=\"purple\">must</strong> be less than or equal to the last valid address in the <a href=\"#VkBuffer\">VkBuffer</a> that <code>indirectCommandsAddress</code> was created from",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecompressMemoryIndirectCountNV-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecompressMemoryIndirectCountNV-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecompressMemoryIndirectCountNV-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecompressMemoryIndirectCountNV-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecompressMemoryIndirectCountNV-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoPictureResourceInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoPictureResourceInfoKHR-baseArrayLayer-07175",
          "text": "<code>baseArrayLayer</code> <strong class=\"purple\">must</strong> be less than the <a href=\"#VkImageViewCreateInfo\">VkImageViewCreateInfo</a>::<code>subresourceRange.layerCount</code> specified when the image view <code>imageViewBinding</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoPictureResourceInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoPictureResourceInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoPictureResourceInfoKHR-imageViewBinding-parameter",
          "text": "<code>imageViewBinding</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageView\">VkImageView</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoProfileInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoProfileInfoKHR-chromaSubsampling-07013",
          "text": "<code>chromaSubsampling</code> <strong class=\"purple\">must</strong> have a single bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoProfileInfoKHR-lumaBitDepth-07014",
          "text": "<code>lumaBitDepth</code> <strong class=\"purple\">must</strong> have a single bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoProfileInfoKHR-chromaSubsampling-07015",
          "text": "If <code>chromaSubsampling</code> is not <code>VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR</code>, then <code>chromaBitDepth</code> <strong class=\"purple\">must</strong> have a single bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoProfileInfoKHR-videoCodecOperation-07179",
          "text": "If <code>videoCodecOperation</code> is <code>VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoDecodeH264ProfileInfoKHR\">VkVideoDecodeH264ProfileInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoProfileInfoKHR-videoCodecOperation-07180",
          "text": "If <code>videoCodecOperation</code> is <code>VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoDecodeH265ProfileInfoKHR\">VkVideoDecodeH265ProfileInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoProfileInfoKHR-videoCodecOperation-09256",
          "text": "If <code>videoCodecOperation</code> is <code>VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoDecodeAV1ProfileInfoKHR\">VkVideoDecodeAV1ProfileInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoProfileInfoKHR-videoCodecOperation-07181",
          "text": "If <code>videoCodecOperation</code> is <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoEncodeH264ProfileInfoKHR\">VkVideoEncodeH264ProfileInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoProfileInfoKHR-videoCodecOperation-07182",
          "text": "If <code>videoCodecOperation</code> is <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoEncodeH265ProfileInfoKHR\">VkVideoEncodeH265ProfileInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoProfileInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_PROFILE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoProfileInfoKHR-videoCodecOperation-parameter",
          "text": "<code>videoCodecOperation</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkVideoCodecOperationFlagBitsKHR\">VkVideoCodecOperationFlagBitsKHR</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoProfileInfoKHR-chromaSubsampling-parameter",
          "text": "<code>chromaSubsampling</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkVideoChromaSubsamplingFlagBitsKHR\">VkVideoChromaSubsamplingFlagBitsKHR</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoProfileInfoKHR-chromaSubsampling-requiredbitmask",
          "text": "<code>chromaSubsampling</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoProfileInfoKHR-lumaBitDepth-parameter",
          "text": "<code>lumaBitDepth</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkVideoComponentBitDepthFlagBitsKHR\">VkVideoComponentBitDepthFlagBitsKHR</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoProfileInfoKHR-lumaBitDepth-requiredbitmask",
          "text": "<code>lumaBitDepth</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoProfileInfoKHR-chromaBitDepth-parameter",
          "text": "<code>chromaBitDepth</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkVideoComponentBitDepthFlagBitsKHR\">VkVideoComponentBitDepthFlagBitsKHR</a> values",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoDecodeUsageInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoDecodeUsageInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_DECODE_USAGE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeUsageInfoKHR-videoUsageHints-parameter",
          "text": "<code>videoUsageHints</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkVideoDecodeUsageFlagBitsKHR\">VkVideoDecodeUsageFlagBitsKHR</a> values",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoEncodeUsageInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoEncodeUsageInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_ENCODE_USAGE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeUsageInfoKHR-videoUsageHints-parameter",
          "text": "<code>videoUsageHints</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkVideoEncodeUsageFlagBitsKHR\">VkVideoEncodeUsageFlagBitsKHR</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeUsageInfoKHR-videoContentHints-parameter",
          "text": "<code>videoContentHints</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkVideoEncodeContentFlagBitsKHR\">VkVideoEncodeContentFlagBitsKHR</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeUsageInfoKHR-tuningMode-parameter",
          "text": "If <code>tuningMode</code> is not <code>0</code>, <code>tuningMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkVideoEncodeTuningModeKHR\">VkVideoEncodeTuningModeKHR</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoProfileListInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoProfileListInfoKHR-pProfiles-06813",
          "text": "<code>pProfiles</code> <strong class=\"purple\">must</strong> not contain more than one element whose <code>videoCodecOperation</code> member specifies a decode operation",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoProfileListInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_PROFILE_LIST_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoProfileListInfoKHR-pProfiles-parameter",
          "text": "If <code>profileCount</code> is not <code>0</code>, <code>pProfiles</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>profileCount</code> valid <a href=\"#VkVideoProfileInfoKHR\">VkVideoProfileInfoKHR</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceVideoCapabilitiesKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceVideoCapabilitiesKHR-pVideoProfile-07183",
          "text": "If <code>pVideoProfile-&gt;videoCodecOperation</code> specifies a decode operation, then the <code>pNext</code> chain of <code>pCapabilities</code> <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoDecodeCapabilitiesKHR\">VkVideoDecodeCapabilitiesKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceVideoCapabilitiesKHR-pVideoProfile-07184",
          "text": "If <code>pVideoProfile-&gt;videoCodecOperation</code> is <code>VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR</code>, then the <code>pNext</code> chain of <code>pCapabilities</code> <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoDecodeH264CapabilitiesKHR\">VkVideoDecodeH264CapabilitiesKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceVideoCapabilitiesKHR-pVideoProfile-07185",
          "text": "If <code>pVideoProfile-&gt;videoCodecOperation</code> is <code>VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR</code>, then the <code>pNext</code> chain of <code>pCapabilities</code> <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoDecodeH265CapabilitiesKHR\">VkVideoDecodeH265CapabilitiesKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceVideoCapabilitiesKHR-pVideoProfile-09257",
          "text": "If <code>pVideoProfile-&gt;videoCodecOperation</code> is <code>VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR</code>, then the <code>pNext</code> chain of <code>pCapabilities</code> <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoDecodeAV1CapabilitiesKHR\">VkVideoDecodeAV1CapabilitiesKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceVideoCapabilitiesKHR-pVideoProfile-07186",
          "text": "If <code>pVideoProfile-&gt;videoCodecOperation</code> specifies an encode operation, then the <code>pNext</code> chain of <code>pCapabilities</code> <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoEncodeCapabilitiesKHR\">VkVideoEncodeCapabilitiesKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceVideoCapabilitiesKHR-pVideoProfile-07187",
          "text": "If <code>pVideoProfile-&gt;videoCodecOperation</code> is <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR</code>, then the <code>pNext</code> chain of <code>pCapabilities</code> <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoEncodeH264CapabilitiesKHR\">VkVideoEncodeH264CapabilitiesKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceVideoCapabilitiesKHR-pVideoProfile-07188",
          "text": "If <code>pVideoProfile-&gt;videoCodecOperation</code> is <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code>, then the <code>pNext</code> chain of <code>pCapabilities</code> <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoEncodeH265CapabilitiesKHR\">VkVideoEncodeH265CapabilitiesKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceVideoCapabilitiesKHR-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceVideoCapabilitiesKHR-pVideoProfile-parameter",
          "text": "<code>pVideoProfile</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkVideoProfileInfoKHR\">VkVideoProfileInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceVideoCapabilitiesKHR-pCapabilities-parameter",
          "text": "<code>pCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkVideoCapabilitiesKHR\">VkVideoCapabilitiesKHR</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoCapabilitiesKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoCapabilitiesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoCapabilitiesKHR-pNext-pNext",
          "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=\"#VkVideoDecodeAV1CapabilitiesKHR\">VkVideoDecodeAV1CapabilitiesKHR</a>, <a href=\"#VkVideoDecodeCapabilitiesKHR\">VkVideoDecodeCapabilitiesKHR</a>, <a href=\"#VkVideoDecodeH264CapabilitiesKHR\">VkVideoDecodeH264CapabilitiesKHR</a>, <a href=\"#VkVideoDecodeH265CapabilitiesKHR\">VkVideoDecodeH265CapabilitiesKHR</a>, <a href=\"#VkVideoEncodeCapabilitiesKHR\">VkVideoEncodeCapabilitiesKHR</a>, <a href=\"#VkVideoEncodeH264CapabilitiesKHR\">VkVideoEncodeH264CapabilitiesKHR</a>, or <a href=\"#VkVideoEncodeH265CapabilitiesKHR\">VkVideoEncodeH265CapabilitiesKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoCapabilitiesKHR-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceVideoFormatPropertiesKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceVideoFormatPropertiesKHR-pNext-06812",
          "text": "The <code>pNext</code> chain of <code>pVideoFormatInfo</code> <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoProfileListInfoKHR\">VkVideoProfileListInfoKHR</a> structure with <code>profileCount</code> greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceVideoFormatPropertiesKHR-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceVideoFormatPropertiesKHR-pVideoFormatInfo-parameter",
          "text": "<code>pVideoFormatInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPhysicalDeviceVideoFormatInfoKHR\">VkPhysicalDeviceVideoFormatInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceVideoFormatPropertiesKHR-pVideoFormatPropertyCount-parameter",
          "text": "<code>pVideoFormatPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceVideoFormatPropertiesKHR-pVideoFormatProperties-parameter",
          "text": "If the value referenced by <code>pVideoFormatPropertyCount</code> is not <code>0</code>, and <code>pVideoFormatProperties</code> is not <code>NULL</code>, <code>pVideoFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pVideoFormatPropertyCount</code> <a href=\"#VkVideoFormatPropertiesKHR\">VkVideoFormatPropertiesKHR</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceVideoFormatInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceVideoFormatInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceVideoFormatInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkVideoProfileListInfoKHR\">VkVideoProfileListInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceVideoFormatInfoKHR-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceVideoFormatInfoKHR-imageUsage-parameter",
          "text": "<code>imageUsage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceVideoFormatInfoKHR-imageUsage-requiredbitmask",
          "text": "<code>imageUsage</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoFormatPropertiesKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoFormatPropertiesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoFormatPropertiesKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateVideoSessionKHR": {
      "core": [
        {
          "vuid": "VUID-vkCreateVideoSessionKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateVideoSessionKHR-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkVideoSessionCreateInfoKHR\">VkVideoSessionCreateInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateVideoSessionKHR-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateVideoSessionKHR-pVideoSession-parameter",
          "text": "<code>pVideoSession</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkVideoSessionKHR\">VkVideoSessionKHR</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoSessionCreateInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoSessionCreateInfoKHR-protectedMemory-07189",
          "text": "If the <a href=\"#features-protectedMemory\"><code>protectedMemory</code></a> feature is not enabled or if <a href=\"#VkVideoCapabilitiesKHR\">VkVideoCapabilitiesKHR</a>::<code>flags</code> does not include <code>VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the video profile specified by <code>pVideoProfile</code>, then <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionCreateInfoKHR-flags-08371",
          "text": "If <code>flags</code> includes <code>VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR</code>, then <a href=\"#features-videoMaintenance1\"><code>videoMaintenance1</code></a> <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionCreateInfoKHR-pVideoProfile-04845",
          "text": "<code>pVideoProfile</code> <strong class=\"purple\">must</strong> be a <a href=\"#video-profile-support\">supported video profile</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionCreateInfoKHR-maxDpbSlots-04847",
          "text": "<code>maxDpbSlots</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkVideoCapabilitiesKHR\">VkVideoCapabilitiesKHR</a>::<code>maxDpbSlots</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the video profile specified by <code>pVideoProfile</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionCreateInfoKHR-maxActiveReferencePictures-04849",
          "text": "<code>maxActiveReferencePictures</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkVideoCapabilitiesKHR\">VkVideoCapabilitiesKHR</a>::<code>maxActiveReferencePictures</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the video profile specified by <code>pVideoProfile</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionCreateInfoKHR-maxDpbSlots-04850",
          "text": "If either <code>maxDpbSlots</code> or <code>maxActiveReferencePictures</code> is <code>0</code>, then both <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionCreateInfoKHR-maxCodedExtent-04851",
          "text": "<code>maxCodedExtent</code> <strong class=\"purple\">must</strong> be between <a href=\"#VkVideoCapabilitiesKHR\">VkVideoCapabilitiesKHR</a>::<code>minCodedExtent</code> and <a href=\"#VkVideoCapabilitiesKHR\">VkVideoCapabilitiesKHR</a>::<code>maxCodedExtent</code>, inclusive, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the video profile specified by <code>pVideoProfile</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionCreateInfoKHR-referencePictureFormat-04852",
          "text": "If <code>pVideoProfile-&gt;videoCodecOperation</code> specifies a decode operation and <code>maxActiveReferencePictures</code> is greater than <code>0</code>, then <code>referencePictureFormat</code> <strong class=\"purple\">must</strong> be one of the supported decode DPB formats, as returned by <a href=\"#vkGetPhysicalDeviceVideoFormatPropertiesKHR\">vkGetPhysicalDeviceVideoFormatPropertiesKHR</a> in <a href=\"#VkVideoFormatPropertiesKHR\">VkVideoFormatPropertiesKHR</a>::<code>format</code> when called with the <code>imageUsage</code> member of its <code>pVideoFormatInfo</code> parameter containing <code>VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR</code>, and with a <a href=\"#VkVideoProfileListInfoKHR\">VkVideoProfileListInfoKHR</a> structure specified in the <code>pNext</code> chain of its <code>pVideoFormatInfo</code> parameter whose <code>pProfiles</code> member contains an element matching <code>pVideoProfile</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionCreateInfoKHR-referencePictureFormat-06814",
          "text": "If <code>pVideoProfile-&gt;videoCodecOperation</code> specifies an encode operation and <code>maxActiveReferencePictures</code> is greater than <code>0</code>, then <code>referencePictureFormat</code> <strong class=\"purple\">must</strong> be one of the supported decode DPB formats, as returned by then <code>referencePictureFormat</code> <strong class=\"purple\">must</strong> be one of the supported encode DPB formats, as returned by <a href=\"#vkGetPhysicalDeviceVideoFormatPropertiesKHR\">vkGetPhysicalDeviceVideoFormatPropertiesKHR</a> in <a href=\"#VkVideoFormatPropertiesKHR\">VkVideoFormatPropertiesKHR</a>::<code>format</code> when called with the <code>imageUsage</code> member of its <code>pVideoFormatInfo</code> parameter containing <code>VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR</code>, and with a <a href=\"#VkVideoProfileListInfoKHR\">VkVideoProfileListInfoKHR</a> structure specified in the <code>pNext</code> chain of its <code>pVideoFormatInfo</code> parameter whose <code>pProfiles</code> member contains an element matching <code>pVideoProfile</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionCreateInfoKHR-pictureFormat-04853",
          "text": "If <code>pVideoProfile-&gt;videoCodecOperation</code> specifies a decode operation, then <code>pictureFormat</code> <strong class=\"purple\">must</strong> be one of the supported decode output formats, as returned by <a href=\"#vkGetPhysicalDeviceVideoFormatPropertiesKHR\">vkGetPhysicalDeviceVideoFormatPropertiesKHR</a> in <a href=\"#VkVideoFormatPropertiesKHR\">VkVideoFormatPropertiesKHR</a>::<code>format</code> when called with the <code>imageUsage</code> member of its <code>pVideoFormatInfo</code> parameter containing <code>VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR</code>, and with a <a href=\"#VkVideoProfileListInfoKHR\">VkVideoProfileListInfoKHR</a> structure specified in the <code>pNext</code> chain of its <code>pVideoFormatInfo</code> parameter whose <code>pProfiles</code> member contains an element matching <code>pVideoProfile</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionCreateInfoKHR-pictureFormat-04854",
          "text": "If <code>pVideoProfile-&gt;videoCodecOperation</code> specifies an encode operation, then <code>pictureFormat</code> <strong class=\"purple\">must</strong> be one of the supported encode input formats, as returned by <a href=\"#vkGetPhysicalDeviceVideoFormatPropertiesKHR\">vkGetPhysicalDeviceVideoFormatPropertiesKHR</a> in <a href=\"#VkVideoFormatPropertiesKHR\">VkVideoFormatPropertiesKHR</a>::<code>format</code> when called with the <code>imageUsage</code> member of its <code>pVideoFormatInfo</code> parameter containing <code>VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR</code>, and with a <a href=\"#VkVideoProfileListInfoKHR\">VkVideoProfileListInfoKHR</a> structure specified in the <code>pNext</code> chain of its <code>pVideoFormatInfo</code> parameter whose <code>pProfiles</code> member contains an element matching <code>pVideoProfile</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionCreateInfoKHR-pStdHeaderVersion-07190",
          "text": "<code>pStdHeaderVersion-&gt;extensionName</code> <strong class=\"purple\">must</strong> match <a href=\"#VkVideoCapabilitiesKHR\">VkVideoCapabilitiesKHR</a>::<code>stdHeaderVersion.extensionName</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the video profile specified by <code>pVideoProfile</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionCreateInfoKHR-pStdHeaderVersion-07191",
          "text": "<code>pStdHeaderVersion-&gt;specVersion</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkVideoCapabilitiesKHR\">VkVideoCapabilitiesKHR</a>::<code>stdHeaderVersion.specVersion</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the video profile specified by <code>pVideoProfile</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionCreateInfoKHR-pVideoProfile-08251",
          "text": "If <code>pVideoProfile-&gt;videoCodecOperation</code> is <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR</code> and the <code>pNext</code> chain of this structure includes a <a href=\"#VkVideoEncodeH264SessionCreateInfoKHR\">VkVideoEncodeH264SessionCreateInfoKHR</a> structure, then its <code>maxLevelIdc</code> member <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkVideoEncodeH264CapabilitiesKHR\">VkVideoEncodeH264CapabilitiesKHR</a>::<code>maxLevelIdc</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the video profile specified in <code>pVideoProfile</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionCreateInfoKHR-pVideoProfile-08252",
          "text": "If <code>pVideoProfile-&gt;videoCodecOperation</code> is <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code> and the <code>pNext</code> chain of this structure includes a <a href=\"#VkVideoEncodeH265SessionCreateInfoKHR\">VkVideoEncodeH265SessionCreateInfoKHR</a> structure, then its <code>maxLevelIdc</code> member <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkVideoEncodeH265CapabilitiesKHR\">VkVideoEncodeH265CapabilitiesKHR</a>::<code>maxLevelIdc</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the video profile specified in <code>pVideoProfile</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionCreateInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionCreateInfoKHR-pNext-pNext",
          "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=\"#VkVideoEncodeH264SessionCreateInfoKHR\">VkVideoEncodeH264SessionCreateInfoKHR</a> or <a href=\"#VkVideoEncodeH265SessionCreateInfoKHR\">VkVideoEncodeH265SessionCreateInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionCreateInfoKHR-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionCreateInfoKHR-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkVideoSessionCreateFlagBitsKHR\">VkVideoSessionCreateFlagBitsKHR</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionCreateInfoKHR-pVideoProfile-parameter",
          "text": "<code>pVideoProfile</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkVideoProfileInfoKHR\">VkVideoProfileInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionCreateInfoKHR-pictureFormat-parameter",
          "text": "<code>pictureFormat</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionCreateInfoKHR-referencePictureFormat-parameter",
          "text": "<code>referencePictureFormat</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionCreateInfoKHR-pStdHeaderVersion-parameter",
          "text": "<code>pStdHeaderVersion</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkExtensionProperties\">VkExtensionProperties</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroyVideoSessionKHR": {
      "core": [
        {
          "vuid": "VUID-vkDestroyVideoSessionKHR-videoSession-07192",
          "text": "All submitted commands that refer to <code>videoSession</code> <strong class=\"purple\">must</strong> have completed execution",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyVideoSessionKHR-videoSession-07193",
          "text": "If <code>VkAllocationCallbacks</code> were provided when <code>videoSession</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyVideoSessionKHR-videoSession-07194",
          "text": "If no <code>VkAllocationCallbacks</code> were provided when <code>videoSession</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyVideoSessionKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyVideoSessionKHR-videoSession-parameter",
          "text": "If <code>videoSession</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>videoSession</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkVideoSessionKHR\">VkVideoSessionKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyVideoSessionKHR-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyVideoSessionKHR-videoSession-parent",
          "text": "If <code>videoSession</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetVideoSessionMemoryRequirementsKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetVideoSessionMemoryRequirementsKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetVideoSessionMemoryRequirementsKHR-videoSession-parameter",
          "text": "<code>videoSession</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkVideoSessionKHR\">VkVideoSessionKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetVideoSessionMemoryRequirementsKHR-pMemoryRequirementsCount-parameter",
          "text": "<code>pMemoryRequirementsCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetVideoSessionMemoryRequirementsKHR-pMemoryRequirements-parameter",
          "text": "If the value referenced by <code>pMemoryRequirementsCount</code> is not <code>0</code>, and <code>pMemoryRequirements</code> is not <code>NULL</code>, <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pMemoryRequirementsCount</code> <a href=\"#VkVideoSessionMemoryRequirementsKHR\">VkVideoSessionMemoryRequirementsKHR</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetVideoSessionMemoryRequirementsKHR-videoSession-parent",
          "text": "<code>videoSession</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoSessionMemoryRequirementsKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoSessionMemoryRequirementsKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_SESSION_MEMORY_REQUIREMENTS_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionMemoryRequirementsKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkBindVideoSessionMemoryKHR": {
      "core": [
        {
          "vuid": "VUID-vkBindVideoSessionMemoryKHR-videoSession-07195",
          "text": "The memory binding of <code>videoSession</code> identified by the <code>memoryBindIndex</code> member of any element of <code>pBindSessionMemoryInfos</code> <strong class=\"purple\">must</strong> not already be backed by a memory object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindVideoSessionMemoryKHR-memoryBindIndex-07196",
          "text": "The <code>memoryBindIndex</code> member of each element of <code>pBindSessionMemoryInfos</code> <strong class=\"purple\">must</strong> be unique within <code>pBindSessionMemoryInfos</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindVideoSessionMemoryKHR-pBindSessionMemoryInfos-07197",
          "text": "Each element of <code>pBindSessionMemoryInfos</code> <strong class=\"purple\">must</strong> have a corresponding <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindVideoSessionMemoryKHR-pBindSessionMemoryInfos-07198",
          "text": "If an element of <code>pBindSessionMemoryInfos</code> has a corresponding <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure, then the <code>memory</code> member of that element of <code>pBindSessionMemoryInfos</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the corresponding <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindVideoSessionMemoryKHR-pBindSessionMemoryInfos-07199",
          "text": "If an element of <code>pBindSessionMemoryInfos</code> has a corresponding <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure, then the <code>memoryOffset</code> member of that element of <code>pBindSessionMemoryInfos</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the corresponding <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindVideoSessionMemoryKHR-pBindSessionMemoryInfos-07200",
          "text": "If an element of <code>pBindSessionMemoryInfos</code> has a corresponding <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure, then the <code>memorySize</code> member of that element of <code>pBindSessionMemoryInfos</code> <strong class=\"purple\">must</strong> equal the <code>size</code> member of the corresponding <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindVideoSessionMemoryKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindVideoSessionMemoryKHR-videoSession-parameter",
          "text": "<code>videoSession</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkVideoSessionKHR\">VkVideoSessionKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindVideoSessionMemoryKHR-pBindSessionMemoryInfos-parameter",
          "text": "<code>pBindSessionMemoryInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindSessionMemoryInfoCount</code> valid <a href=\"#VkBindVideoSessionMemoryInfoKHR\">VkBindVideoSessionMemoryInfoKHR</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindVideoSessionMemoryKHR-bindSessionMemoryInfoCount-arraylength",
          "text": "<code>bindSessionMemoryInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindVideoSessionMemoryKHR-videoSession-parent",
          "text": "<code>videoSession</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkBindVideoSessionMemoryInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkBindVideoSessionMemoryInfoKHR-memoryOffset-07201",
          "text": "<code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindVideoSessionMemoryInfoKHR-memorySize-07202",
          "text": "<code>memorySize</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>memory</code> minus <code>memoryOffset</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindVideoSessionMemoryInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_VIDEO_SESSION_MEMORY_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindVideoSessionMemoryInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkBindVideoSessionMemoryInfoKHR-memory-parameter",
          "text": "<code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateVideoSessionParametersKHR": {
      "core": [
        {
          "vuid": "VUID-vkCreateVideoSessionParametersKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateVideoSessionParametersKHR-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkVideoSessionParametersCreateInfoKHR\">VkVideoSessionParametersCreateInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateVideoSessionParametersKHR-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateVideoSessionParametersKHR-pVideoSessionParameters-parameter",
          "text": "<code>pVideoSessionParameters</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkVideoSessionParametersKHR\">VkVideoSessionParametersKHR</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoSessionParametersCreateInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoSessionParametersCreateInfoKHR-videoSessionParametersTemplate-04855",
          "text": "If <code>videoSessionParametersTemplate</code> is not <code>VK_NULL_HANDLE</code>, it <strong class=\"purple\">must</strong> have been created against <code>videoSession</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionParametersCreateInfoKHR-videoSessionParametersTemplate-08310",
          "text": "If <code>videoSessionParametersTemplate</code> is not <code>VK_NULL_HANDLE</code> and <code>videoSession</code> was created with an encode operation, then <code>qualityLevel</code> <strong class=\"purple\">must</strong> equal the <a href=\"#encode-quality-level\">video encode quality</a> level <code>videoSessionParametersTemplate</code> was created with",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionParametersCreateInfoKHR-videoSession-07203",
          "text": "If <code>videoSession</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoDecodeH264SessionParametersCreateInfoKHR\">VkVideoDecodeH264SessionParametersCreateInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionParametersCreateInfoKHR-videoSession-07204",
          "text": "If <code>videoSession</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR</code>, then the number of elements of <code>spsAddList</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>maxStdSPSCount</code> specified in the <a href=\"#VkVideoDecodeH264SessionParametersCreateInfoKHR\">VkVideoDecodeH264SessionParametersCreateInfoKHR</a> structure included in the <code>pNext</code> chain",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionParametersCreateInfoKHR-videoSession-07205",
          "text": "If <code>videoSession</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR</code>, then the number of elements of <code>ppsAddList</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>maxStdPPSCount</code> specified in the <a href=\"#VkVideoDecodeH264SessionParametersCreateInfoKHR\">VkVideoDecodeH264SessionParametersCreateInfoKHR</a> structure included in the <code>pNext</code> chain",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionParametersCreateInfoKHR-videoSession-07206",
          "text": "If <code>videoSession</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoDecodeH265SessionParametersCreateInfoKHR\">VkVideoDecodeH265SessionParametersCreateInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionParametersCreateInfoKHR-videoSession-07207",
          "text": "If <code>videoSession</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR</code>, then the number of elements of <code>vpsAddList</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>maxStdVPSCount</code> specified in the <a href=\"#VkVideoDecodeH265SessionParametersCreateInfoKHR\">VkVideoDecodeH265SessionParametersCreateInfoKHR</a> structure included in the <code>pNext</code> chain",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionParametersCreateInfoKHR-videoSession-07208",
          "text": "If <code>videoSession</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR</code>, then the number of elements of <code>spsAddList</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>maxStdSPSCount</code> specified in the <a href=\"#VkVideoDecodeH265SessionParametersCreateInfoKHR\">VkVideoDecodeH265SessionParametersCreateInfoKHR</a> structure included in the <code>pNext</code> chain",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionParametersCreateInfoKHR-videoSession-07209",
          "text": "If <code>videoSession</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR</code>, then the number of elements of <code>ppsAddList</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>maxStdPPSCount</code> specified in the <a href=\"#VkVideoDecodeH265SessionParametersCreateInfoKHR\">VkVideoDecodeH265SessionParametersCreateInfoKHR</a> structure included in the <code>pNext</code> chain",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionParametersCreateInfoKHR-videoSession-09258",
          "text": "If <code>videoSession</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR</code>, then <code>videoSessionParametersTemplate</code> <strong class=\"purple\">must</strong> be <code>VK_NULL_HANDLE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionParametersCreateInfoKHR-videoSession-09259",
          "text": "If <code>videoSession</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoDecodeAV1SessionParametersCreateInfoKHR\">VkVideoDecodeAV1SessionParametersCreateInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionParametersCreateInfoKHR-videoSession-07210",
          "text": "If <code>videoSession</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoEncodeH264SessionParametersCreateInfoKHR\">VkVideoEncodeH264SessionParametersCreateInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionParametersCreateInfoKHR-videoSession-04839",
          "text": "If <code>videoSession</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR</code>, then the number of elements of <code>spsAddList</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>maxStdSPSCount</code> specified in the <a href=\"#VkVideoEncodeH264SessionParametersCreateInfoKHR\">VkVideoEncodeH264SessionParametersCreateInfoKHR</a> structure included in the <code>pNext</code> chain",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionParametersCreateInfoKHR-videoSession-04840",
          "text": "If <code>videoSession</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR</code>, then the number of elements of <code>ppsAddList</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>maxStdPPSCount</code> specified in the <a href=\"#VkVideoEncodeH264SessionParametersCreateInfoKHR\">VkVideoEncodeH264SessionParametersCreateInfoKHR</a> structure included in the <code>pNext</code> chain",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionParametersCreateInfoKHR-videoSession-07211",
          "text": "If <code>videoSession</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoEncodeH265SessionParametersCreateInfoKHR\">VkVideoEncodeH265SessionParametersCreateInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionParametersCreateInfoKHR-videoSession-04841",
          "text": "If <code>videoSession</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code>, then the number of elements of <code>vpsAddList</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>maxStdVPSCount</code> specified in the <a href=\"#VkVideoEncodeH265SessionParametersCreateInfoKHR\">VkVideoEncodeH265SessionParametersCreateInfoKHR</a> structure included in the <code>pNext</code> chain",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionParametersCreateInfoKHR-videoSession-04842",
          "text": "If <code>videoSession</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code>, then the number of elements of <code>spsAddList</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>maxStdSPSCount</code> specified in the <a href=\"#VkVideoEncodeH265SessionParametersCreateInfoKHR\">VkVideoEncodeH265SessionParametersCreateInfoKHR</a> structure included in the <code>pNext</code> chain",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionParametersCreateInfoKHR-videoSession-04843",
          "text": "If <code>videoSession</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code>, then the number of elements of <code>ppsAddList</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>maxStdPPSCount</code> specified in the <a href=\"#VkVideoEncodeH265SessionParametersCreateInfoKHR\">VkVideoEncodeH265SessionParametersCreateInfoKHR</a> structure included in the <code>pNext</code> chain",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionParametersCreateInfoKHR-videoSession-08319",
          "text": "If <code>videoSession</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code>, then <code>num_tile_columns_minus1</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkVideoEncodeH265CapabilitiesKHR\">VkVideoEncodeH265CapabilitiesKHR</a>::<code>maxTiles.width</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the video profile <code>videoSession</code> was created with, for each element of <code>ppsAddList</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionParametersCreateInfoKHR-videoSession-08320",
          "text": "If <code>videoSession</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code>, then <code>num_tile_rows_minus1</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkVideoEncodeH265CapabilitiesKHR\">VkVideoEncodeH265CapabilitiesKHR</a>::<code>maxTiles.height</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the video profile <code>videoSession</code> was created with, for each element of <code>ppsAddList</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionParametersCreateInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionParametersCreateInfoKHR-pNext-pNext",
          "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=\"#VkVideoDecodeAV1SessionParametersCreateInfoKHR\">VkVideoDecodeAV1SessionParametersCreateInfoKHR</a>, <a href=\"#VkVideoDecodeH264SessionParametersCreateInfoKHR\">VkVideoDecodeH264SessionParametersCreateInfoKHR</a>, <a href=\"#VkVideoDecodeH265SessionParametersCreateInfoKHR\">VkVideoDecodeH265SessionParametersCreateInfoKHR</a>, <a href=\"#VkVideoEncodeH264SessionParametersCreateInfoKHR\">VkVideoEncodeH264SessionParametersCreateInfoKHR</a>, <a href=\"#VkVideoEncodeH265SessionParametersCreateInfoKHR\">VkVideoEncodeH265SessionParametersCreateInfoKHR</a>, or <a href=\"#VkVideoEncodeQualityLevelInfoKHR\">VkVideoEncodeQualityLevelInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionParametersCreateInfoKHR-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionParametersCreateInfoKHR-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionParametersCreateInfoKHR-videoSessionParametersTemplate-parameter",
          "text": "If <code>videoSessionParametersTemplate</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>videoSessionParametersTemplate</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkVideoSessionParametersKHR\">VkVideoSessionParametersKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionParametersCreateInfoKHR-videoSession-parameter",
          "text": "<code>videoSession</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkVideoSessionKHR\">VkVideoSessionKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionParametersCreateInfoKHR-videoSessionParametersTemplate-parent",
          "text": "If <code>videoSessionParametersTemplate</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>videoSession</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionParametersCreateInfoKHR-commonparent",
          "text": "Both of <code>videoSession</code>, and <code>videoSessionParametersTemplate</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroyVideoSessionParametersKHR": {
      "core": [
        {
          "vuid": "VUID-vkDestroyVideoSessionParametersKHR-videoSessionParameters-07212",
          "text": "All submitted commands that refer to <code>videoSessionParameters</code> <strong class=\"purple\">must</strong> have completed execution",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyVideoSessionParametersKHR-videoSessionParameters-07213",
          "text": "If <code>VkAllocationCallbacks</code> were provided when <code>videoSessionParameters</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyVideoSessionParametersKHR-videoSessionParameters-07214",
          "text": "If no <code>VkAllocationCallbacks</code> were provided when <code>videoSessionParameters</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyVideoSessionParametersKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyVideoSessionParametersKHR-videoSessionParameters-parameter",
          "text": "If <code>videoSessionParameters</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>videoSessionParameters</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkVideoSessionParametersKHR\">VkVideoSessionParametersKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyVideoSessionParametersKHR-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyVideoSessionParametersKHR-videoSessionParameters-parent",
          "text": "If <code>videoSessionParameters</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkUpdateVideoSessionParametersKHR": {
      "core": [
        {
          "vuid": "VUID-vkUpdateVideoSessionParametersKHR-pUpdateInfo-07215",
          "text": "<code>pUpdateInfo-&gt;updateSequenceCount</code> <strong class=\"purple\">must</strong> equal the current <a href=\"#video-session-parameters\">update sequence counter</a> of <code>videoSessionParameters</code> plus one",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateVideoSessionParametersKHR-videoSessionParameters-07216",
          "text": "If <code>videoSessionParameters</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR</code> and the <code>pNext</code> chain of <code>pUpdateInfo</code> includes a <a href=\"#VkVideoDecodeH264SessionParametersAddInfoKHR\">VkVideoDecodeH264SessionParametersAddInfoKHR</a> structure, then <code>videoSessionParameters</code> <strong class=\"purple\">must</strong> not already contain a <code>StdVideoH264SequenceParameterSet</code> entry with <code>seq_parameter_set_id</code> matching any of the elements of <a href=\"#VkVideoDecodeH264SessionParametersAddInfoKHR\">VkVideoDecodeH264SessionParametersAddInfoKHR</a>::<code>pStdSPSs</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateVideoSessionParametersKHR-videoSessionParameters-07217",
          "text": "If <code>videoSessionParameters</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR</code>, then the number of <code>StdVideoH264SequenceParameterSet</code> entries already stored in it plus the value of the <code>stdSPSCount</code> member of the <a href=\"#VkVideoDecodeH264SessionParametersAddInfoKHR\">VkVideoDecodeH264SessionParametersAddInfoKHR</a> structure included in the <code>pUpdateInfo-&gt;pNext</code> chain <strong class=\"purple\">must</strong> be less than or equal to the <a href=\"#VkVideoDecodeH264SessionParametersCreateInfoKHR\">VkVideoDecodeH264SessionParametersCreateInfoKHR</a>::<code>maxStdSPSCount</code> <code>videoSessionParameters</code> was created with",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateVideoSessionParametersKHR-videoSessionParameters-07218",
          "text": "If <code>videoSessionParameters</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR</code> and the <code>pNext</code> chain of <code>pUpdateInfo</code> includes a <a href=\"#VkVideoDecodeH264SessionParametersAddInfoKHR\">VkVideoDecodeH264SessionParametersAddInfoKHR</a> structure, then <code>videoSessionParameters</code> <strong class=\"purple\">must</strong> not already contain a <code>StdVideoH264PictureParameterSet</code> entry with both <code>seq_parameter_set_id</code> and <code>pic_parameter_set_id</code> matching any of the elements of <a href=\"#VkVideoDecodeH264SessionParametersAddInfoKHR\">VkVideoDecodeH264SessionParametersAddInfoKHR</a>::<code>pStdPPSs</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateVideoSessionParametersKHR-videoSessionParameters-07219",
          "text": "If <code>videoSessionParameters</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR</code>, then the number of <code>StdVideoH264PictureParameterSet</code> entries already stored in it plus the value of the <code>stdPPSCount</code> member of the <a href=\"#VkVideoDecodeH264SessionParametersAddInfoKHR\">VkVideoDecodeH264SessionParametersAddInfoKHR</a> structure included in the <code>pUpdateInfo-&gt;pNext</code> chain <strong class=\"purple\">must</strong> be less than or equal to the <a href=\"#VkVideoDecodeH264SessionParametersCreateInfoKHR\">VkVideoDecodeH264SessionParametersCreateInfoKHR</a>::<code>maxStdPPSCount</code> <code>videoSessionParameters</code> was created with",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateVideoSessionParametersKHR-videoSessionParameters-07220",
          "text": "If <code>videoSessionParameters</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR</code> and the <code>pNext</code> chain of <code>pUpdateInfo</code> includes a <a href=\"#VkVideoDecodeH265SessionParametersAddInfoKHR\">VkVideoDecodeH265SessionParametersAddInfoKHR</a> structure, then <code>videoSessionParameters</code> <strong class=\"purple\">must</strong> not already contain a <code>StdVideoH265VideoParameterSet</code> entry with <code>vps_video_parameter_set_id</code> matching any of the elements of <a href=\"#VkVideoDecodeH265SessionParametersAddInfoKHR\">VkVideoDecodeH265SessionParametersAddInfoKHR</a>::<code>pStdVPSs</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateVideoSessionParametersKHR-videoSessionParameters-07221",
          "text": "If <code>videoSessionParameters</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR</code>, then the number of <code>StdVideoH265VideoParameterSet</code> entries already stored in it plus the value of the <code>stdVPSCount</code> member of the <a href=\"#VkVideoDecodeH265SessionParametersAddInfoKHR\">VkVideoDecodeH265SessionParametersAddInfoKHR</a> structure included in the <code>pUpdateInfo-&gt;pNext</code> chain <strong class=\"purple\">must</strong> be less than or equal to the <a href=\"#VkVideoDecodeH265SessionParametersCreateInfoKHR\">VkVideoDecodeH265SessionParametersCreateInfoKHR</a>::<code>maxStdVPSCount</code> <code>videoSessionParameters</code> was created with",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateVideoSessionParametersKHR-videoSessionParameters-07222",
          "text": "If <code>videoSessionParameters</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR</code> and the <code>pNext</code> chain of <code>pUpdateInfo</code> includes a <a href=\"#VkVideoDecodeH265SessionParametersAddInfoKHR\">VkVideoDecodeH265SessionParametersAddInfoKHR</a> structure, then <code>videoSessionParameters</code> <strong class=\"purple\">must</strong> not already contain a <code>StdVideoH265SequenceParameterSet</code> entry with both <code>sps_video_parameter_set_id</code> and <code>sps_seq_parameter_set_id</code> matching any of the elements of <a href=\"#VkVideoDecodeH265SessionParametersAddInfoKHR\">VkVideoDecodeH265SessionParametersAddInfoKHR</a>::<code>pStdSPSs</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateVideoSessionParametersKHR-videoSessionParameters-07223",
          "text": "If <code>videoSessionParameters</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR</code>, then the number of <code>StdVideoH265SequenceParameterSet</code> entries already stored in it plus the value of the <code>stdSPSCount</code> member of the <a href=\"#VkVideoDecodeH265SessionParametersAddInfoKHR\">VkVideoDecodeH265SessionParametersAddInfoKHR</a> structure included in the <code>pUpdateInfo-&gt;pNext</code> chain <strong class=\"purple\">must</strong> be less than or equal to the <a href=\"#VkVideoDecodeH265SessionParametersCreateInfoKHR\">VkVideoDecodeH265SessionParametersCreateInfoKHR</a>::<code>maxStdSPSCount</code> <code>videoSessionParameters</code> was created with",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateVideoSessionParametersKHR-videoSessionParameters-07224",
          "text": "If <code>videoSessionParameters</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR</code> and the <code>pNext</code> chain of <code>pUpdateInfo</code> includes a <a href=\"#VkVideoDecodeH265SessionParametersAddInfoKHR\">VkVideoDecodeH265SessionParametersAddInfoKHR</a> structure, then <code>videoSessionParameters</code> <strong class=\"purple\">must</strong> not already contain a <code>StdVideoH265PictureParameterSet</code> entry with <code>sps_video_parameter_set_id</code>, <code>pps_seq_parameter_set_id</code>, and <code>pps_pic_parameter_set_id</code> all matching any of the elements of <a href=\"#VkVideoDecodeH265SessionParametersAddInfoKHR\">VkVideoDecodeH265SessionParametersAddInfoKHR</a>::<code>pStdPPSs</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateVideoSessionParametersKHR-videoSessionParameters-07225",
          "text": "If <code>videoSessionParameters</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR</code>, then the number of <code>StdVideoH265PictureParameterSet</code> entries already stored in it plus the value of the <code>stdPPSCount</code> member of the <a href=\"#VkVideoDecodeH265SessionParametersAddInfoKHR\">VkVideoDecodeH265SessionParametersAddInfoKHR</a> structure included in the <code>pUpdateInfo-&gt;pNext</code> chain <strong class=\"purple\">must</strong> be less than or equal to the <a href=\"#VkVideoDecodeH265SessionParametersCreateInfoKHR\">VkVideoDecodeH265SessionParametersCreateInfoKHR</a>::<code>maxStdPPSCount</code> <code>videoSessionParameters</code> was created with",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateVideoSessionParametersKHR-videoSessionParameters-09260",
          "text": "<code>videoSessionParameters</code> <strong class=\"purple\">must</strong> not have been created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateVideoSessionParametersKHR-videoSessionParameters-07226",
          "text": "If <code>videoSessionParameters</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR</code> and the <code>pNext</code> chain of <code>pUpdateInfo</code> includes a <a href=\"#VkVideoEncodeH264SessionParametersAddInfoKHR\">VkVideoEncodeH264SessionParametersAddInfoKHR</a> structure, then <code>videoSessionParameters</code> <strong class=\"purple\">must</strong> not already contain a <code>StdVideoH264SequenceParameterSet</code> entry with <code>seq_parameter_set_id</code> matching any of the elements of <a href=\"#VkVideoEncodeH264SessionParametersAddInfoKHR\">VkVideoEncodeH264SessionParametersAddInfoKHR</a>::<code>pStdSPSs</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateVideoSessionParametersKHR-videoSessionParameters-06441",
          "text": "If <code>videoSessionParameters</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR</code>, then the number of <code>StdVideoH264SequenceParameterSet</code> entries already stored in it plus the value of the <code>stdSPSCount</code> member of the <a href=\"#VkVideoEncodeH264SessionParametersAddInfoKHR\">VkVideoEncodeH264SessionParametersAddInfoKHR</a> structure included in the <code>pUpdateInfo-&gt;pNext</code> chain <strong class=\"purple\">must</strong> be less than or equal to the <a href=\"#VkVideoEncodeH264SessionParametersCreateInfoKHR\">VkVideoEncodeH264SessionParametersCreateInfoKHR</a>::<code>maxStdSPSCount</code> <code>videoSessionParameters</code> was created with",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateVideoSessionParametersKHR-videoSessionParameters-07227",
          "text": "If <code>videoSessionParameters</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR</code> and the <code>pNext</code> chain of <code>pUpdateInfo</code> includes a <a href=\"#VkVideoEncodeH264SessionParametersAddInfoKHR\">VkVideoEncodeH264SessionParametersAddInfoKHR</a> structure, then <code>videoSessionParameters</code> <strong class=\"purple\">must</strong> not already contain a <code>StdVideoH264PictureParameterSet</code> entry with both <code>seq_parameter_set_id</code> and <code>pic_parameter_set_id</code> matching any of the elements of <a href=\"#VkVideoEncodeH264SessionParametersAddInfoKHR\">VkVideoEncodeH264SessionParametersAddInfoKHR</a>::<code>pStdPPSs</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateVideoSessionParametersKHR-videoSessionParameters-06442",
          "text": "If <code>videoSessionParameters</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR</code>, then the number of <code>StdVideoH264PictureParameterSet</code> entries already stored in it plus the value of the <code>stdPPSCount</code> member of the <a href=\"#VkVideoEncodeH264SessionParametersAddInfoKHR\">VkVideoEncodeH264SessionParametersAddInfoKHR</a> structure included in the <code>pUpdateInfo-&gt;pNext</code> chain <strong class=\"purple\">must</strong> be less than or equal to the <a href=\"#VkVideoEncodeH264SessionParametersCreateInfoKHR\">VkVideoEncodeH264SessionParametersCreateInfoKHR</a>::<code>maxStdPPSCount</code> <code>videoSessionParameters</code> was created with",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateVideoSessionParametersKHR-videoSessionParameters-07228",
          "text": "If <code>videoSessionParameters</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code> and the <code>pNext</code> chain of <code>pUpdateInfo</code> includes a <a href=\"#VkVideoEncodeH265SessionParametersAddInfoKHR\">VkVideoEncodeH265SessionParametersAddInfoKHR</a> structure, then <code>videoSessionParameters</code> <strong class=\"purple\">must</strong> not already contain a <code>StdVideoH265VideoParameterSet</code> entry with <code>vps_video_parameter_set_id</code> matching any of the elements of <a href=\"#VkVideoEncodeH265SessionParametersAddInfoKHR\">VkVideoEncodeH265SessionParametersAddInfoKHR</a>::<code>pStdVPSs</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateVideoSessionParametersKHR-videoSessionParameters-06443",
          "text": "If <code>videoSessionParameters</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code>, then the number of <code>StdVideoH265VideoParameterSet</code> entries already stored in it plus the value of the <code>stdVPSCount</code> member of the <a href=\"#VkVideoEncodeH265SessionParametersAddInfoKHR\">VkVideoEncodeH265SessionParametersAddInfoKHR</a> structure included in the <code>pUpdateInfo-&gt;pNext</code> chain <strong class=\"purple\">must</strong> be less than or equal to the <a href=\"#VkVideoEncodeH265SessionParametersCreateInfoKHR\">VkVideoEncodeH265SessionParametersCreateInfoKHR</a>::<code>maxStdVPSCount</code> <code>videoSessionParameters</code> was created with",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateVideoSessionParametersKHR-videoSessionParameters-07229",
          "text": "If <code>videoSessionParameters</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code> and the <code>pNext</code> chain of <code>pUpdateInfo</code> includes a <a href=\"#VkVideoEncodeH265SessionParametersAddInfoKHR\">VkVideoEncodeH265SessionParametersAddInfoKHR</a> structure, then <code>videoSessionParameters</code> <strong class=\"purple\">must</strong> not already contain a <code>StdVideoH265SequenceParameterSet</code> entry with both <code>sps_video_parameter_set_id</code> and <code>sps_seq_parameter_set_id</code> matching any of the elements of <a href=\"#VkVideoEncodeH265SessionParametersAddInfoKHR\">VkVideoEncodeH265SessionParametersAddInfoKHR</a>::<code>pStdSPSs</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateVideoSessionParametersKHR-videoSessionParameters-06444",
          "text": "If <code>videoSessionParameters</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code>, then the number of <code>StdVideoH265SequenceParameterSet</code> entries already stored in it plus the value of the <code>stdSPSCount</code> member of the <a href=\"#VkVideoEncodeH265SessionParametersAddInfoKHR\">VkVideoEncodeH265SessionParametersAddInfoKHR</a> structure included in the <code>pUpdateInfo-&gt;pNext</code> chain <strong class=\"purple\">must</strong> be less than or equal to the <a href=\"#VkVideoEncodeH265SessionParametersCreateInfoKHR\">VkVideoEncodeH265SessionParametersCreateInfoKHR</a>::<code>maxStdSPSCount</code> <code>videoSessionParameters</code> was created with",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateVideoSessionParametersKHR-videoSessionParameters-07230",
          "text": "If <code>videoSessionParameters</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code> and the <code>pNext</code> chain of <code>pUpdateInfo</code> includes a <a href=\"#VkVideoEncodeH265SessionParametersAddInfoKHR\">VkVideoEncodeH265SessionParametersAddInfoKHR</a> structure, then <code>videoSessionParameters</code> <strong class=\"purple\">must</strong> not already contain a <code>StdVideoH265PictureParameterSet</code> entry with <code>sps_video_parameter_set_id</code>, <code>pps_seq_parameter_set_id</code>, and <code>pps_pic_parameter_set_id</code> all matching any of the elements of <a href=\"#VkVideoEncodeH265SessionParametersAddInfoKHR\">VkVideoEncodeH265SessionParametersAddInfoKHR</a>::<code>pStdPPSs</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateVideoSessionParametersKHR-videoSessionParameters-06445",
          "text": "If <code>videoSessionParameters</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code>, then the number of <code>StdVideoH265PictureParameterSet</code> entries already stored in it plus the value of the <code>stdPPSCount</code> member of the <a href=\"#VkVideoEncodeH265SessionParametersAddInfoKHR\">VkVideoEncodeH265SessionParametersAddInfoKHR</a> structure included in the <code>pUpdateInfo-&gt;pNext</code> chain <strong class=\"purple\">must</strong> be less than or equal to the <a href=\"#VkVideoEncodeH265SessionParametersCreateInfoKHR\">VkVideoEncodeH265SessionParametersCreateInfoKHR</a>::<code>maxStdPPSCount</code> <code>videoSessionParameters</code> was created with",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateVideoSessionParametersKHR-videoSessionParameters-08321",
          "text": "If <code>videoSessionParameters</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code> and the <code>pNext</code> chain of <code>pUpdateInfo</code> includes a <a href=\"#VkVideoEncodeH265SessionParametersAddInfoKHR\">VkVideoEncodeH265SessionParametersAddInfoKHR</a> structure, then <code>num_tile_columns_minus1</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkVideoEncodeH265CapabilitiesKHR\">VkVideoEncodeH265CapabilitiesKHR</a>::<code>maxTiles.width</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the video profile <code>videoSessionParameters</code> was created with, for each element of <a href=\"#VkVideoEncodeH265SessionParametersAddInfoKHR\">VkVideoEncodeH265SessionParametersAddInfoKHR</a>::<code>pStdPPSs</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateVideoSessionParametersKHR-videoSessionParameters-08322",
          "text": "If <code>videoSessionParameters</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code> and the <code>pNext</code> chain of <code>pUpdateInfo</code> includes a <a href=\"#VkVideoEncodeH265SessionParametersAddInfoKHR\">VkVideoEncodeH265SessionParametersAddInfoKHR</a> structure, then <code>num_tile_rows_minus1</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkVideoEncodeH265CapabilitiesKHR\">VkVideoEncodeH265CapabilitiesKHR</a>::<code>maxTiles.height</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the video profile <code>videoSessionParameters</code> was created with, for each element of <a href=\"#VkVideoEncodeH265SessionParametersAddInfoKHR\">VkVideoEncodeH265SessionParametersAddInfoKHR</a>::<code>pStdPPSs</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateVideoSessionParametersKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateVideoSessionParametersKHR-videoSessionParameters-parameter",
          "text": "<code>videoSessionParameters</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkVideoSessionParametersKHR\">VkVideoSessionParametersKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateVideoSessionParametersKHR-pUpdateInfo-parameter",
          "text": "<code>pUpdateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkVideoSessionParametersUpdateInfoKHR\">VkVideoSessionParametersUpdateInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkUpdateVideoSessionParametersKHR-videoSessionParameters-parent",
          "text": "<code>videoSessionParameters</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoSessionParametersUpdateInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoSessionParametersUpdateInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionParametersUpdateInfoKHR-pNext-pNext",
          "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=\"#VkVideoDecodeH264SessionParametersAddInfoKHR\">VkVideoDecodeH264SessionParametersAddInfoKHR</a>, <a href=\"#VkVideoDecodeH265SessionParametersAddInfoKHR\">VkVideoDecodeH265SessionParametersAddInfoKHR</a>, <a href=\"#VkVideoEncodeH264SessionParametersAddInfoKHR\">VkVideoEncodeH264SessionParametersAddInfoKHR</a>, or <a href=\"#VkVideoEncodeH265SessionParametersAddInfoKHR\">VkVideoEncodeH265SessionParametersAddInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoSessionParametersUpdateInfoKHR-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdBeginVideoCodingKHR": {
      "core": [
        {
          "vuid": "VUID-vkCmdBeginVideoCodingKHR-commandBuffer-07231",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support the video codec operation <code>pBeginInfo-&gt;videoSession</code> was created with, as returned by <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties2\">vkGetPhysicalDeviceQueueFamilyProperties2</a> in <a href=\"#VkQueueFamilyVideoPropertiesKHR\">VkQueueFamilyVideoPropertiesKHR</a>::<code>videoCodecOperations</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginVideoCodingKHR-None-07232",
          "text": "There <strong class=\"purple\">must</strong> be no <a href=\"#queries-operation-active\">active</a> queries",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginVideoCodingKHR-commandBuffer-07233",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, then <code>pBeginInfo-&gt;videoSession</code> <strong class=\"purple\">must</strong> not have been created with <code>VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginVideoCodingKHR-commandBuffer-07234",
          "text": "If <code>commandBuffer</code> is a protected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, then <code>pBeginInfo-&gt;videoSession</code> <strong class=\"purple\">must</strong> have been created with <code>VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginVideoCodingKHR-commandBuffer-07235",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer, <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, and the <code>pPictureResource</code> member of any element of <code>pBeginInfo-&gt;pReferenceSlots</code> is not <code>NULL</code>, then <code>pPictureResource-&gt;imageViewBinding</code> for that element <strong class=\"purple\">must</strong> not specify an image view created from a protected image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginVideoCodingKHR-commandBuffer-07236",
          "text": "If <code>commandBuffer</code> is a protected command buffer <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, and the <code>pPictureResource</code> member of any element of <code>pBeginInfo-&gt;pReferenceSlots</code> is not <code>NULL</code>, then <code>pPictureResource-&gt;imageViewBinding</code> for that element <strong class=\"purple\">must</strong> specify an image view created from a protected image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginVideoCodingKHR-slotIndex-07239",
          "text": "If the <code>slotIndex</code> member of any element of <code>pBeginInfo-&gt;pReferenceSlots</code> is not negative, then it <strong class=\"purple\">must</strong> specify the index of a DPB slot that is in the <a href=\"#dpb-slot-states\">active state</a> in <code>pBeginInfo-&gt;videoSession</code> at the time the command is executed on the device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginVideoCodingKHR-pPictureResource-07265",
          "text": "Each video picture resource specified by any non-<code>NULL</code> <code>pPictureResource</code> member specified in the elements of <code>pBeginInfo-&gt;pReferenceSlots</code> for which <code>slotIndex</code> is not negative <strong class=\"purple\">must</strong> <a href=\"#video-picture-resource-matching\">match</a> one of the video picture resources currently associated with the DPB slot index of <code>pBeginInfo-&gt;videoSession</code> specified by <code>slotIndex</code> at the time the command is executed on the device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginVideoCodingKHR-pBeginInfo-08253",
          "text": "If <code>pBeginInfo-&gt;videoSession</code> was created with a video encode operation and the <code>pNext</code> chain of <code>pBeginInfo</code> does not include an instance of the <a href=\"#VkVideoEncodeRateControlInfoKHR\">VkVideoEncodeRateControlInfoKHR</a> structure, then the <a href=\"#encode-rate-control-modes\">rate control mode</a> configured for <code>pBeginInfo-&gt;videoSession</code> at the time the command is executed on the device <strong class=\"purple\">must</strong> be <code>VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DEFAULT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginVideoCodingKHR-pBeginInfo-08254",
          "text": "If <code>pBeginInfo-&gt;videoSession</code> was created with a video encode operation and the <code>pNext</code> chain of <code>pBeginInfo</code> includes an instance of the <a href=\"#VkVideoEncodeRateControlInfoKHR\">VkVideoEncodeRateControlInfoKHR</a> structure, then it <strong class=\"purple\">must</strong> <a href=\"#encode-rate-control-state-matching\">match</a> the rate control state configured for <code>pBeginInfo-&gt;videoSession</code> at the time the command is executed on the device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginVideoCodingKHR-pBeginInfo-08255",
          "text": "If <code>pBeginInfo-&gt;videoSession</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR</code>, the current <a href=\"#encode-rate-control-modes\">rate control mode</a> is not <code>VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DEFAULT_KHR</code> or <code>VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR</code>, and <a href=\"#VkVideoEncodeH264CapabilitiesKHR\">VkVideoEncodeH264CapabilitiesKHR</a>::<code>requiresGopRemainingFrames</code> is <code>VK_TRUE</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the video profile the <code>pBeginInfo-&gt;videoSession</code> was created with, then the <code>pNext</code> chain of <code>pBeginInfo</code> <strong class=\"purple\">must</strong> include an instance of the <a href=\"#VkVideoEncodeH264GopRemainingFrameInfoKHR\">VkVideoEncodeH264GopRemainingFrameInfoKHR</a> with its <code>useGopRemainingFrames</code> member set to <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginVideoCodingKHR-pBeginInfo-08256",
          "text": "If <code>pBeginInfo-&gt;videoSession</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code>, the current <a href=\"#encode-rate-control-modes\">rate control mode</a> is not <code>VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DEFAULT_KHR</code> or <code>VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR</code>, and <a href=\"#VkVideoEncodeH265CapabilitiesKHR\">VkVideoEncodeH265CapabilitiesKHR</a>::<code>requiresGopRemainingFrames</code> is <code>VK_TRUE</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the video profile the <code>pBeginInfo-&gt;videoSession</code> was created with, then the <code>pNext</code> chain of <code>pBeginInfo</code> <strong class=\"purple\">must</strong> include an instance of the <a href=\"#VkVideoEncodeH265GopRemainingFrameInfoKHR\">VkVideoEncodeH265GopRemainingFrameInfoKHR</a> with its <code>useGopRemainingFrames</code> member set to <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginVideoCodingKHR-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginVideoCodingKHR-pBeginInfo-parameter",
          "text": "<code>pBeginInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkVideoBeginCodingInfoKHR\">VkVideoBeginCodingInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginVideoCodingKHR-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginVideoCodingKHR-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support decode, or encode operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginVideoCodingKHR-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginVideoCodingKHR-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginVideoCodingKHR-bufferlevel",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoBeginCodingInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoBeginCodingInfoKHR-videoSession-07237",
          "text": "<code>videoSession</code> <strong class=\"purple\">must</strong> have memory bound to all of its memory bindings returned by <a href=\"#vkGetVideoSessionMemoryRequirementsKHR\">vkGetVideoSessionMemoryRequirementsKHR</a> for <code>videoSession</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoBeginCodingInfoKHR-slotIndex-04856",
          "text": "Each non-negative <a href=\"#VkVideoReferenceSlotInfoKHR\">VkVideoReferenceSlotInfoKHR</a>::<code>slotIndex</code> specified in the elements of <code>pReferenceSlots</code> <strong class=\"purple\">must</strong> be less than the <a href=\"#VkVideoSessionCreateInfoKHR\">VkVideoSessionCreateInfoKHR</a>::<code>maxDpbSlots</code> specified when <code>videoSession</code> was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoBeginCodingInfoKHR-pPictureResource-07238",
          "text": "Each video picture resource corresponding to any non-<code>NULL</code> <code>pPictureResource</code> member specified in the elements of <code>pReferenceSlots</code> <strong class=\"purple\">must</strong> be <a href=\"#video-picture-resource-uniqueness\">unique</a> within <code>pReferenceSlots</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoBeginCodingInfoKHR-pPictureResource-07240",
          "text": "If the <code>pPictureResource</code> member of any element of <code>pReferenceSlots</code> is not <code>NULL</code>, then the image view specified in <code>pPictureResource-&gt;imageViewBinding</code> for that element <strong class=\"purple\">must</strong> be <a href=\"#video-profile-compatibility\">compatible</a> with the video profile <code>videoSession</code> was created with",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoBeginCodingInfoKHR-pPictureResource-07241",
          "text": "If the <code>pPictureResource</code> member of any element of <code>pReferenceSlots</code> is not <code>NULL</code>, then the format of the image view specified in <code>pPictureResource-&gt;imageViewBinding</code> for that element <strong class=\"purple\">must</strong> match the <a href=\"#VkVideoSessionCreateInfoKHR\">VkVideoSessionCreateInfoKHR</a>::<code>referencePictureFormat</code> <code>videoSession</code> was created with",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoBeginCodingInfoKHR-pPictureResource-07242",
          "text": "If the <code>pPictureResource</code> member of any element of <code>pReferenceSlots</code> is not <code>NULL</code>, then its <code>codedOffset</code> member <strong class=\"purple\">must</strong> be an integer multiple of <code>codedOffsetGranularity</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoBeginCodingInfoKHR-pPictureResource-07243",
          "text": "If the <code>pPictureResource</code> member of any element of <code>pReferenceSlots</code> is not <code>NULL</code>, then its <code>codedExtent</code> member <strong class=\"purple\">must</strong> be between <code>minCodedExtent</code> and <code>maxCodedExtent</code>, inclusive, <code>videoSession</code> was created with",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoBeginCodingInfoKHR-flags-07244",
          "text": "If <a href=\"#VkVideoCapabilitiesKHR\">VkVideoCapabilitiesKHR</a>::<code>flags</code> does not include <code>VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the video profile <code>videoSession</code> was created with, then <code>pPictureResource-&gt;imageViewBinding</code> of all elements of <code>pReferenceSlots</code> with a non-<code>NULL</code> <code>pPictureResource</code> member <strong class=\"purple\">must</strong> specify image views created from the same image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoBeginCodingInfoKHR-slotIndex-07245",
          "text": "If <code>videoSession</code> was created with a decode operation and the <code>slotIndex</code> member of any element of <code>pReferenceSlots</code> is not negative, then the image view specified in <code>pPictureResource-&gt;imageViewBinding</code> for that element <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoBeginCodingInfoKHR-slotIndex-07246",
          "text": "If <code>videoSession</code> was created with an encode operation and the <code>slotIndex</code> member of any element of <code>pReferenceSlots</code> is not negative, then the image view specified in <code>pPictureResource-&gt;imageViewBinding</code> for that element <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoBeginCodingInfoKHR-videoSession-07247",
          "text": "If <code>videoSession</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR</code>, then <code>videoSessionParameters</code> <strong class=\"purple\">must</strong> not be <code>VK_NULL_HANDLE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoBeginCodingInfoKHR-videoSession-07248",
          "text": "If <code>videoSession</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR</code>, then <code>videoSessionParameters</code> <strong class=\"purple\">must</strong> not be <code>VK_NULL_HANDLE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoBeginCodingInfoKHR-videoSession-09261",
          "text": "If <code>videoSession</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR</code>, then <code>videoSessionParameters</code> <strong class=\"purple\">must</strong> not be <code>VK_NULL_HANDLE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoBeginCodingInfoKHR-videoSession-07249",
          "text": "If <code>videoSession</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR</code>, then <code>videoSessionParameters</code> <strong class=\"purple\">must</strong> not be <code>VK_NULL_HANDLE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoBeginCodingInfoKHR-videoSession-07250",
          "text": "If <code>videoSession</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code>, then <code>videoSessionParameters</code> <strong class=\"purple\">must</strong> not be <code>VK_NULL_HANDLE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoBeginCodingInfoKHR-videoSessionParameters-04857",
          "text": "If <code>videoSessionParameters</code> is not <code>VK_NULL_HANDLE</code>, it <strong class=\"purple\">must</strong> have been created with <code>videoSession</code> specified in <a href=\"#VkVideoSessionParametersCreateInfoKHR\">VkVideoSessionParametersCreateInfoKHR</a>::<code>videoSession</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoBeginCodingInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoBeginCodingInfoKHR-pNext-pNext",
          "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=\"#VkVideoEncodeH264GopRemainingFrameInfoKHR\">VkVideoEncodeH264GopRemainingFrameInfoKHR</a>, <a href=\"#VkVideoEncodeH264RateControlInfoKHR\">VkVideoEncodeH264RateControlInfoKHR</a>, <a href=\"#VkVideoEncodeH265GopRemainingFrameInfoKHR\">VkVideoEncodeH265GopRemainingFrameInfoKHR</a>, <a href=\"#VkVideoEncodeH265RateControlInfoKHR\">VkVideoEncodeH265RateControlInfoKHR</a>, or <a href=\"#VkVideoEncodeRateControlInfoKHR\">VkVideoEncodeRateControlInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoBeginCodingInfoKHR-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoBeginCodingInfoKHR-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoBeginCodingInfoKHR-videoSession-parameter",
          "text": "<code>videoSession</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkVideoSessionKHR\">VkVideoSessionKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoBeginCodingInfoKHR-videoSessionParameters-parameter",
          "text": "If <code>videoSessionParameters</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>videoSessionParameters</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkVideoSessionParametersKHR\">VkVideoSessionParametersKHR</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoBeginCodingInfoKHR-pReferenceSlots-parameter",
          "text": "If <code>referenceSlotCount</code> is not <code>0</code>, <code>pReferenceSlots</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>referenceSlotCount</code> valid <a href=\"#VkVideoReferenceSlotInfoKHR\">VkVideoReferenceSlotInfoKHR</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoBeginCodingInfoKHR-videoSessionParameters-parent",
          "text": "If <code>videoSessionParameters</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>videoSession</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoBeginCodingInfoKHR-commonparent",
          "text": "Both of <code>videoSession</code>, and <code>videoSessionParameters</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoReferenceSlotInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoReferenceSlotInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoReferenceSlotInfoKHR-pNext-pNext",
          "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=\"#VkVideoDecodeAV1DpbSlotInfoKHR\">VkVideoDecodeAV1DpbSlotInfoKHR</a>, <a href=\"#VkVideoDecodeH264DpbSlotInfoKHR\">VkVideoDecodeH264DpbSlotInfoKHR</a>, <a href=\"#VkVideoDecodeH265DpbSlotInfoKHR\">VkVideoDecodeH265DpbSlotInfoKHR</a>, <a href=\"#VkVideoEncodeH264DpbSlotInfoKHR\">VkVideoEncodeH264DpbSlotInfoKHR</a>, or <a href=\"#VkVideoEncodeH265DpbSlotInfoKHR\">VkVideoEncodeH265DpbSlotInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoReferenceSlotInfoKHR-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoReferenceSlotInfoKHR-pPictureResource-parameter",
          "text": "If <code>pPictureResource</code> is not <code>NULL</code>, <code>pPictureResource</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkVideoPictureResourceInfoKHR\">VkVideoPictureResourceInfoKHR</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdEndVideoCodingKHR": {
      "core": [
        {
          "vuid": "VUID-vkCmdEndVideoCodingKHR-None-07251",
          "text": "There <strong class=\"purple\">must</strong> be no <a href=\"#queries-operation-active\">active</a> queries",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndVideoCodingKHR-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndVideoCodingKHR-pEndCodingInfo-parameter",
          "text": "<code>pEndCodingInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkVideoEndCodingInfoKHR\">VkVideoEndCodingInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndVideoCodingKHR-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndVideoCodingKHR-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support decode, or encode operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndVideoCodingKHR-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndVideoCodingKHR-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called inside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndVideoCodingKHR-bufferlevel",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoEndCodingInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoEndCodingInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEndCodingInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEndCodingInfoKHR-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdControlVideoCodingKHR": {
      "core": [
        {
          "vuid": "VUID-vkCmdControlVideoCodingKHR-flags-07017",
          "text": "If <code>pCodingControlInfo-&gt;flags</code> does not include <code>VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR</code>, then the bound video session <strong class=\"purple\">must</strong> not be in <a href=\"#video-session-uninitialized\">uninitialized</a> state at the time the command is executed on the device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdControlVideoCodingKHR-pCodingControlInfo-08243",
          "text": "If the bound video session was not created with an encode operation, then <code>pCodingControlInfo-&gt;flags</code> <strong class=\"purple\">must</strong> not include <code>VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR</code> or <code>VK_VIDEO_CODING_CONTROL_ENCODE_QUALITY_LEVEL_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdControlVideoCodingKHR-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdControlVideoCodingKHR-pCodingControlInfo-parameter",
          "text": "<code>pCodingControlInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkVideoCodingControlInfoKHR\">VkVideoCodingControlInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdControlVideoCodingKHR-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdControlVideoCodingKHR-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support decode, or encode operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdControlVideoCodingKHR-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdControlVideoCodingKHR-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called inside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdControlVideoCodingKHR-bufferlevel",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoCodingControlInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoCodingControlInfoKHR-flags-07018",
          "text": "If <code>flags</code> includes <code>VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoEncodeRateControlInfoKHR\">VkVideoEncodeRateControlInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoCodingControlInfoKHR-flags-08349",
          "text": "If <code>flags</code> includes <code>VK_VIDEO_CODING_CONTROL_ENCODE_QUALITY_LEVEL_BIT_KHR</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoEncodeQualityLevelInfoKHR\">VkVideoEncodeQualityLevelInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoCodingControlInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_CODING_CONTROL_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoCodingControlInfoKHR-pNext-pNext",
          "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=\"#VkVideoEncodeH264RateControlInfoKHR\">VkVideoEncodeH264RateControlInfoKHR</a>, <a href=\"#VkVideoEncodeH265RateControlInfoKHR\">VkVideoEncodeH265RateControlInfoKHR</a>, <a href=\"#VkVideoEncodeQualityLevelInfoKHR\">VkVideoEncodeQualityLevelInfoKHR</a>, or <a href=\"#VkVideoEncodeRateControlInfoKHR\">VkVideoEncodeRateControlInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoCodingControlInfoKHR-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoCodingControlInfoKHR-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkVideoCodingControlFlagBitsKHR\">VkVideoCodingControlFlagBitsKHR</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoCodingControlInfoKHR-flags-requiredbitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoInlineQueryInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoInlineQueryInfoKHR-queryPool-08372",
          "text": "If <code>queryPool</code> is not <code>VK_NULL_HANDLE</code>, then <code>firstQuery</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoInlineQueryInfoKHR-queryPool-08373",
          "text": "If <code>queryPool</code> is not <code>VK_NULL_HANDLE</code>, then 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoInlineQueryInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_INLINE_QUERY_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoInlineQueryInfoKHR-queryPool-parameter",
          "text": "If <code>queryPool</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoDecodeCapabilitiesKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoDecodeCapabilitiesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_DECODE_CAPABILITIES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdDecodeVideoKHR": {
      "core": [
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-None-08249",
          "text": "The bound video session <strong class=\"purple\">must</strong> have been created with a decode operation",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-None-07011",
          "text": "The bound video session <strong class=\"purple\">must</strong> not be in <a href=\"#video-session-uninitialized\">uninitialized</a> state at the time the command is executed on the device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-opCount-07134",
          "text": "For each <a href=\"#queries-operation-active\">active</a> query, the <a href=\"#queries-operation-active-query-index\">active query index</a> corresponding to the query type of that query plus <code>opCount</code> <strong class=\"purple\">must</strong> be less than or equal to the <a href=\"#queries-operation-last-activatable-query-index\">last activatable query index</a> corresponding to the query type of that query plus one",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pNext-08365",
          "text": "If the bound video session was created with <code>VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR</code>, and the <code>pNext</code> chain of <code>pDecodeInfo</code> includes a <a href=\"#VkVideoInlineQueryInfoKHR\">VkVideoInlineQueryInfoKHR</a> structure with its <code>queryPool</code> member specifying a valid <code>VkQueryPool</code> handle, then <a href=\"#VkVideoInlineQueryInfoKHR\">VkVideoInlineQueryInfoKHR</a>::queryCount <strong class=\"purple\">must</strong> equal <code>opCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pNext-08366",
          "text": "If the bound video session was created with <code>VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR</code>, and the <code>pNext</code> chain of <code>pDecodeInfo</code> includes a <a href=\"#VkVideoInlineQueryInfoKHR\">VkVideoInlineQueryInfoKHR</a> structure with its <code>queryPool</code> member specifying a valid <code>VkQueryPool</code> handle, then all the queries used by the command, as specified by the <a href=\"#VkVideoInlineQueryInfoKHR\">VkVideoInlineQueryInfoKHR</a> structure, <strong class=\"purple\">must</strong> be <em>unavailable</em>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-queryType-08367",
          "text": "If the bound video session was created with <code>VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR</code>, then the <code>queryType</code> used to create the <code>queryPool</code> specified in the <a href=\"#VkVideoInlineQueryInfoKHR\">VkVideoInlineQueryInfoKHR</a> structure included in the <code>pNext</code> chain of <code>pDecodeInfo</code> <strong class=\"purple\">must</strong> be <code>VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-queryPool-08368",
          "text": "If the bound video session was created with <code>VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR</code>, then the <code>queryPool</code> specified in the <a href=\"#VkVideoInlineQueryInfoKHR\">VkVideoInlineQueryInfoKHR</a> structure included in the <code>pNext</code> chain of <code>pDecodeInfo</code> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkVideoProfileInfoKHR\">VkVideoProfileInfoKHR</a> structure included in the <code>pNext</code> chain of <a href=\"#VkQueryPoolCreateInfo\">VkQueryPoolCreateInfo</a> identical to the one specified in <a href=\"#VkVideoSessionCreateInfoKHR\">VkVideoSessionCreateInfoKHR</a>::<code>pVideoProfile</code> the bound video session was created with",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-queryType-08369",
          "text": "If the bound video session was created with <code>VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR</code>, and the <code>queryType</code> used to create the <code>queryPool</code> specified in the <a href=\"#VkVideoInlineQueryInfoKHR\">VkVideoInlineQueryInfoKHR</a> structure included in the <code>pNext</code> chain of <code>pDecodeInfo</code> is <code>VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR</code>, then the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> have been created with a queue family index that supports <a href=\"#queries-result-status-only\">result status queries</a>, as indicated by <a href=\"#VkQueueFamilyQueryResultStatusPropertiesKHR\">VkQueueFamilyQueryResultStatusPropertiesKHR</a>::<code>queryResultStatusSupport</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07135",
          "text": "<code>pDecodeInfo-&gt;srcBuffer</code> <strong class=\"purple\">must</strong> be <a href=\"#video-profile-compatibility\">compatible</a> with the video profile the bound video session was created with",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-commandBuffer-07136",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, then <code>pDecodeInfo-&gt;srcBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-commandBuffer-07137",
          "text": "If <code>commandBuffer</code> is a protected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, then <code>pDecodeInfo-&gt;srcBuffer</code> <strong class=\"purple\">must</strong> be a protected buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07138",
          "text": "<code>pDecodeInfo-&gt;srcBufferOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of <a href=\"#VkVideoCapabilitiesKHR\">VkVideoCapabilitiesKHR</a>::<code>minBitstreamBufferOffsetAlignment</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the video profile the bound video session was created with",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07139",
          "text": "<code>pDecodeInfo-&gt;srcBufferRange</code> <strong class=\"purple\">must</strong> be an integer multiple of <a href=\"#VkVideoCapabilitiesKHR\">VkVideoCapabilitiesKHR</a>::<code>minBitstreamBufferSizeAlignment</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the video profile the bound video session was created with",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07140",
          "text": "If <code>pDecodeInfo-&gt;pSetupReferenceSlot</code> is not <code>NULL</code> and <a href=\"#VkVideoDecodeCapabilitiesKHR\">VkVideoDecodeCapabilitiesKHR</a>::<code>flags</code> does not include <code>VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the video profile the bound video session was created with, then the video picture resources specified by <code>pDecodeInfo-&gt;dstPictureResource</code> and <code>pDecodeInfo-&gt;pSetupReferenceSlot-&gt;pPictureResource</code> <strong class=\"purple\">must</strong> not <a href=\"#video-picture-resource-matching\">match</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07141",
          "text": "If <code>pDecodeInfo-&gt;pSetupReferenceSlot</code> is not <code>NULL</code> and none of the following is true:<div class=\"ulist\">\n<ul>\n<li>\n<p><a href=\"#VkVideoDecodeCapabilitiesKHR\">VkVideoDecodeCapabilitiesKHR</a>::<code>flags</code> includes\n<code>VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR</code>, as\nreturned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the video\nprofile the bound video session was created with</p>\n</li>\n<li>\n<p>the bound video session was created with the video codec operation\n<code>VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR</code> and\n<a href=\"#VkVideoDecodeAV1ProfileInfoKHR\">VkVideoDecodeAV1ProfileInfoKHR</a>::<code>filmGrainSupport</code> set to\n<code>VK_TRUE</code>, and <a href=\"#decode-av1-film-grain\">film grain</a> is enabled for\nthe decoded picture</p>\n</li>\n</ul>\n</div>\n<div class=\"paragraph\">\n<p>then the video picture resources specified by\n<code>pDecodeInfo-&gt;dstPictureResource</code> and\n<code>pDecodeInfo-&gt;pSetupReferenceSlot-&gt;pPictureResource</code> <strong class=\"purple\">must</strong>\n<a href=\"#video-picture-resource-matching\">match</a></p>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07142",
          "text": "<code>pDecodeInfo-&gt;dstPictureResource.imageViewBinding</code> <strong class=\"purple\">must</strong> be <a href=\"#video-profile-compatibility\">compatible</a> with the video profile the bound video session was created with",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07143",
          "text": "The format of <code>pDecodeInfo-&gt;dstPictureResource.imageViewBinding</code> <strong class=\"purple\">must</strong> match the <a href=\"#VkVideoSessionCreateInfoKHR\">VkVideoSessionCreateInfoKHR</a>::<code>pictureFormat</code> the bound video session was created with",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07144",
          "text": "<code>pDecodeInfo-&gt;dstPictureResource.codedOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>codedOffsetGranularity</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07145",
          "text": "<code>pDecodeInfo-&gt;dstPictureResource.codedExtent</code> <strong class=\"purple\">must</strong> be between <code>minCodedExtent</code> and <code>maxCodedExtent</code>, inclusive, the bound video session was created with",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07146",
          "text": "<code>pDecodeInfo-&gt;dstPictureResource.imageViewBinding</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-commandBuffer-07147",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, then <code>pDecodeInfo-&gt;dstPictureResource.imageViewBinding</code> <strong class=\"purple\">must</strong> not have been created from a protected image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-commandBuffer-07148",
          "text": "If <code>commandBuffer</code> is a protected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, then <code>pDecodeInfo-&gt;dstPictureResource.imageViewBinding</code> <strong class=\"purple\">must</strong> have been created from a protected image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pDecodeInfo-08376",
          "text": "<code>pDecodeInfo-&gt;pSetupReferenceSlot</code> <strong class=\"purple\">must</strong> not be <code>NULL</code> unless the bound video session was created with <a href=\"#VkVideoSessionCreateInfoKHR\">VkVideoSessionCreateInfoKHR</a>::<code>maxDpbSlots</code> equal to zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07170",
          "text": "If <code>pDecodeInfo-&gt;pSetupReferenceSlot</code> is not <code>NULL</code>, then <code>pDecodeInfo-&gt;pSetupReferenceSlot-&gt;slotIndex</code> <strong class=\"purple\">must</strong> be less than the <a href=\"#VkVideoSessionCreateInfoKHR\">VkVideoSessionCreateInfoKHR</a>::<code>maxDpbSlots</code> specified when the bound video session was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07173",
          "text": "If <code>pDecodeInfo-&gt;pSetupReferenceSlot</code> is not <code>NULL</code>, then <code>pDecodeInfo-&gt;pSetupReferenceSlot-&gt;pPictureResource-&gt;codedOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>codedOffsetGranularity</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07149",
          "text": "If <code>pDecodeInfo-&gt;pSetupReferenceSlot</code> is not <code>NULL</code>, then <code>pDecodeInfo-&gt;pSetupReferenceSlot-&gt;pPictureResource</code> <strong class=\"purple\">must</strong> <a href=\"#video-picture-resource-matching\">match</a> one of the <a href=\"#bound-reference-picture-resources\">bound reference picture resource</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-activeReferencePictureCount-07150",
          "text": "<code>activeReferencePictureCount</code> <strong class=\"purple\">must</strong> be less than or equal to the <a href=\"#VkVideoSessionCreateInfoKHR\">VkVideoSessionCreateInfoKHR</a>::<code>maxActiveReferencePictures</code> specified when the bound video session was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-slotIndex-07256",
          "text": "The <code>slotIndex</code> member of each element of <code>pDecodeInfo-&gt;pReferenceSlots</code> <strong class=\"purple\">must</strong> be less than the <a href=\"#VkVideoSessionCreateInfoKHR\">VkVideoSessionCreateInfoKHR</a>::<code>maxDpbSlots</code> specified when the bound video session was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-codedOffset-07257",
          "text": "The <code>codedOffset</code> member of the <a href=\"#VkVideoPictureResourceInfoKHR\">VkVideoPictureResourceInfoKHR</a> structure pointed to by the <code>pPictureResource</code> member of each element of <code>pDecodeInfo-&gt;pReferenceSlots</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>codedOffsetGranularity</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07151",
          "text": "The <code>pPictureResource</code> member of each element of <code>pDecodeInfo-&gt;pReferenceSlots</code> <strong class=\"purple\">must</strong> <a href=\"#video-picture-resource-matching\">match</a> one of the <a href=\"#bound-reference-picture-resources\">bound reference picture resource</a> associated with the DPB slot index specified in the <code>slotIndex</code> member of that element",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07264",
          "text": "Each video picture resource corresponding to the <code>pPictureResource</code> member specified in the elements of <code>pDecodeInfo-&gt;pReferenceSlots</code> <strong class=\"purple\">must</strong> be <a href=\"#video-picture-resource-uniqueness\">unique</a> within <code>pDecodeInfo-&gt;pReferenceSlots</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-dpbFrameUseCount-07176",
          "text": "All elements of <code>dpbFrameUseCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-dpbTopFieldUseCount-07177",
          "text": "All elements of <code>dpbTopFieldUseCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-dpbBottomFieldUseCount-07178",
          "text": "All elements of <code>dpbBottomFieldUseCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07252",
          "text": "If <code>pDecodeInfo-&gt;pSetupReferenceSlot</code> is <code>NULL</code> or <code>pDecodeInfo-&gt;pSetupReferenceSlot-&gt;pPictureResource</code> does not <a href=\"#video-image-subresource-reference\">refer</a> to the same image subresource as <code>pDecodeInfo-&gt;dstPictureResource</code>, then the image subresource <a href=\"#video-image-subresource-reference\">referred</a> to by <code>pDecodeInfo-&gt;dstPictureResource</code> <strong class=\"purple\">must</strong> be in the <code>VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR</code> layout at the time the video decode operation is executed on the device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07253",
          "text": "If <code>pDecodeInfo-&gt;pSetupReferenceSlot</code> is not <code>NULL</code> and <code>pDecodeInfo-&gt;pSetupReferenceSlot-&gt;pPictureResource</code> <a href=\"#video-image-subresource-reference\">refers</a> to the same image subresource as <code>pDecodeInfo-&gt;dstPictureResource</code>, then the image subresource <a href=\"#video-image-subresource-reference\">referred</a> to by <code>pDecodeInfo-&gt;dstPictureResource</code> <strong class=\"purple\">must</strong> be in the <code>VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR</code> layout at the time the video decode operation is executed on the device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07254",
          "text": "If <code>pDecodeInfo-&gt;pSetupReferenceSlot</code> is not <code>NULL</code>, then the image subresource <a href=\"#video-image-subresource-reference\">referred</a> to by <code>pDecodeInfo-&gt;pSetupReferenceSlot-&gt;pPictureResource</code> <strong class=\"purple\">must</strong> be in the <code>VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR</code> layout at the time the video decode operation is executed on the device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pPictureResource-07255",
          "text": "The image subresource <a href=\"#video-image-subresource-reference\">referred</a> to by the <code>pPictureResource</code> member of each element of <code>pDecodeInfo-&gt;pReferenceSlots</code> <strong class=\"purple\">must</strong> be in the <code>VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR</code> layout at the time the video decode operation is executed on the device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pNext-07152",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR</code>, then the <code>pNext</code> chain of <code>pDecodeInfo</code> <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoDecodeH264PictureInfoKHR\">VkVideoDecodeH264PictureInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-None-07258",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR</code> but was not created with <a href=\"#decode-h264-interlaced-support\">interlaced frame support</a>, then the <a href=\"#decode-h264-output-picture-info\">decode output picture</a> <strong class=\"purple\">must</strong> represent a frame",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pSliceOffsets-07153",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR</code>, then all elements of the <code>pSliceOffsets</code> member of the <a href=\"#VkVideoDecodeH264PictureInfoKHR\">VkVideoDecodeH264PictureInfoKHR</a> structure included in the <code>pNext</code> chain of <code>pDecodeInfo</code> <strong class=\"purple\">must</strong> be less than <code>pDecodeInfo-&gt;srcBufferRange</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-StdVideoH264SequenceParameterSet-07154",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR</code>, then the bound video session parameters object <strong class=\"purple\">must</strong> contain a <code>StdVideoH264SequenceParameterSet</code> entry with <code>seq_parameter_set_id</code> matching <code>StdVideoDecodeH264PictureInfo</code>::<code>seq_parameter_set_id</code> that is provided in the <code>pStdPictureInfo</code> member of the <a href=\"#VkVideoDecodeH264PictureInfoKHR\">VkVideoDecodeH264PictureInfoKHR</a> structure included in the <code>pNext</code> chain of <code>pDecodeInfo</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-StdVideoH264PictureParameterSet-07155",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR</code>, then the bound video session parameters object <strong class=\"purple\">must</strong> contain a <code>StdVideoH264PictureParameterSet</code> entry with <code>seq_parameter_set_id</code> and <code>pic_parameter_set_id</code> matching <code>StdVideoDecodeH264PictureInfo</code>::<code>seq_parameter_set_id</code> and <code>StdVideoDecodeH264PictureInfo</code>::<code>pic_parameter_set_id</code>, respectively, that are provided in the <code>pStdPictureInfo</code> member of the <a href=\"#VkVideoDecodeH264PictureInfoKHR\">VkVideoDecodeH264PictureInfoKHR</a> structure included in the <code>pNext</code> chain of <code>pDecodeInfo</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07156",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR</code> and <code>pDecodeInfo-&gt;pSetupReferenceSlot</code> is not <code>NULL</code>, then the <code>pNext</code> chain of <code>pDecodeInfo-&gt;pSetupReferenceSlot</code> <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoDecodeH264DpbSlotInfoKHR\">VkVideoDecodeH264DpbSlotInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07259",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR</code> but was not created with <a href=\"#decode-h264-interlaced-support\">interlaced frame support</a>, and <code>pDecodeInfo-&gt;pSetupReferenceSlot</code> is not <code>NULL</code>, then the <a href=\"#decode-h264-reconstructed-picture-info\">reconstructed picture</a> <strong class=\"purple\">must</strong> represent a frame",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pNext-07157",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR</code>, then the <code>pNext</code> chain of each element of <code>pDecodeInfo-&gt;pReferenceSlots</code> <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoDecodeH264DpbSlotInfoKHR\">VkVideoDecodeH264DpbSlotInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07260",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR</code> but was not created with <a href=\"#decode-h264-interlaced-support\">interlaced frame support</a>, then each <a href=\"#decode-h264-active-reference-picture-info\">active reference picture</a> corresponding to the elements of <code>pDecodeInfo-&gt;pReferenceSlots</code> <strong class=\"purple\">must</strong> represent a frame",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07261",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR</code>, <code>pDecodeInfo-&gt;pSetupReferenceSlot</code> is not <code>NULL</code>, and the <a href=\"#decode-h264-output-picture-info\">decode output picture</a> represents a frame, then the <a href=\"#decode-h264-reconstructed-picture-info\">reconstructed picture</a> <strong class=\"purple\">must</strong> also represent a frame",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07262",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR</code>, <code>pDecodeInfo-&gt;pSetupReferenceSlot</code> is not <code>NULL</code>, and the <a href=\"#decode-h264-output-picture-info\">decode output picture</a> represents a top field, then the <a href=\"#decode-h264-reconstructed-picture-info\">reconstructed picture</a> <strong class=\"purple\">must</strong> also represent a top field",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07263",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR</code>, <code>pDecodeInfo-&gt;pSetupReferenceSlot</code> is not <code>NULL</code>, and the <a href=\"#decode-h264-output-picture-info\">decode output picture</a> represents a bottom field, then the <a href=\"#decode-h264-reconstructed-picture-info\">reconstructed picture</a> <strong class=\"purple\">must</strong> also represent a bottom field",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07266",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR</code> and an <a href=\"#decode-h264-active-reference-picture-info\">active reference picture</a> corresponding to any element of <code>pDecodeInfo-&gt;pReferenceSlots</code> represents a frame, then the DPB slot index of the bound video session specified by the <code>slotIndex</code> member of that element <strong class=\"purple\">must</strong> be currently associated with a frame picture <a href=\"#video-picture-resource-matching\">matching</a> the video picture resource specified by the <code>pPictureResource</code> member of the same element at the time the command is executed on the device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07267",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR</code> and an <a href=\"#decode-h264-active-reference-picture-info\">active reference picture</a> corresponding to any element of <code>pDecodeInfo-&gt;pReferenceSlots</code> represents a top field, then the DPB slot index of the bound video session specified by the <code>slotIndex</code> member of that element <strong class=\"purple\">must</strong> be currently associated with a top field picture <a href=\"#video-picture-resource-matching\">matching</a> the video picture resource specified by the <code>pPictureResource</code> member of the same element at the time the command is executed on the device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07268",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR</code> and an <a href=\"#decode-h264-active-reference-picture-info\">active reference picture</a> corresponding to any element of <code>pDecodeInfo-&gt;pReferenceSlots</code> represents a bottom field, then the DPB slot index of the bound video session specified by the <code>slotIndex</code> member of that element <strong class=\"purple\">must</strong> be currently associated with a bottom field picture <a href=\"#video-picture-resource-matching\">matching</a> the video picture resource specified by the <code>pPictureResource</code> member of the same element at the time the command is executed on the device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pNext-07158",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR</code>, then the <code>pNext</code> chain of <code>pDecodeInfo</code> <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoDecodeH265PictureInfoKHR\">VkVideoDecodeH265PictureInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pSliceSegmentOffsets-07159",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR</code>, then all elements of the <code>pSliceSegmentOffsets</code> member of the <a href=\"#VkVideoDecodeH265PictureInfoKHR\">VkVideoDecodeH265PictureInfoKHR</a> structure included in the <code>pNext</code> chain of <code>pDecodeInfo</code> <strong class=\"purple\">must</strong> be less than <code>pDecodeInfo-&gt;srcBufferRange</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-StdVideoH265VideoParameterSet-07160",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR</code>, then the bound video session parameters object <strong class=\"purple\">must</strong> contain a <code>StdVideoH265VideoParameterSet</code> entry with <code>vps_video_parameter_set_id</code> matching <code>StdVideoDecodeH265PictureInfo</code>::<code>sps_video_parameter_set_id</code> that is provided in the <code>pStdPictureInfo</code> member of the <a href=\"#VkVideoDecodeH265PictureInfoKHR\">VkVideoDecodeH265PictureInfoKHR</a> structure included in the <code>pNext</code> chain of <code>pDecodeInfo</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-StdVideoH265SequenceParameterSet-07161",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR</code>, then the bound video session parameters object <strong class=\"purple\">must</strong> contain a <code>StdVideoH265SequenceParameterSet</code> entry with <code>sps_video_parameter_set_id</code> and <code>sps_seq_parameter_set_id</code> matching <code>StdVideoDecodeH265PictureInfo</code>::<code>sps_video_parameter_set_id</code> and <code>StdVideoDecodeH265PictureInfo</code>::<code>pps_seq_parameter_set_id</code>, respectively, that are provided in the <code>pStdPictureInfo</code> member of the <a href=\"#VkVideoDecodeH265PictureInfoKHR\">VkVideoDecodeH265PictureInfoKHR</a> structure included in the <code>pNext</code> chain of <code>pDecodeInfo</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-StdVideoH265PictureParameterSet-07162",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR</code>, then the bound video session parameters object <strong class=\"purple\">must</strong> contain a <code>StdVideoH265PictureParameterSet</code> entry with <code>sps_video_parameter_set_id</code>, <code>pps_seq_parameter_set_id</code>, and <code>pps_pic_parameter_set_id</code> matching <code>StdVideoDecodeH265PictureInfo</code>::<code>sps_video_parameter_set_id</code>, <code>StdVideoDecodeH265PictureInfo</code>::<code>pps_seq_parameter_set_id</code>, and <code>StdVideoDecodeH265PictureInfo</code>::<code>pps_pic_parameter_set_id</code>, respectively, that are provided in the <code>pStdPictureInfo</code> member of the <a href=\"#VkVideoDecodeH265PictureInfoKHR\">VkVideoDecodeH265PictureInfoKHR</a> structure included in the <code>pNext</code> chain of <code>pDecodeInfo</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07163",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR</code> and <code>pDecodeInfo-&gt;pSetupReferenceSlot</code> is not <code>NULL</code>, then the <code>pNext</code> chain of <code>pDecodeInfo-&gt;pSetupReferenceSlot</code> <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoDecodeH265DpbSlotInfoKHR\">VkVideoDecodeH265DpbSlotInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pNext-07164",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR</code>, then the <code>pNext</code> chain of each element of <code>pDecodeInfo-&gt;pReferenceSlots</code> <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoDecodeH265DpbSlotInfoKHR\">VkVideoDecodeH265DpbSlotInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-filmGrainSupport-09248",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR</code> and <a href=\"#VkVideoDecodeAV1ProfileInfoKHR\">VkVideoDecodeAV1ProfileInfoKHR</a>::<code>filmGrainSupport</code> set to <code>VK_FALSE</code>, then <a href=\"#decode-av1-film-grain\">film grain</a> <strong class=\"purple\">must</strong> not be enabled for the decoded picture",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pDecodeInfo-09249",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR</code>, <code>pDecodeInfo-&gt;pSetupReferenceSlot</code> is not <code>NULL</code>, and <a href=\"#decode-av1-film-grain\">film grain</a> is enabled for the decoded picture, then the video picture resources specified by <code>pDecodeInfo-&gt;dstPictureResource</code> and <code>pDecodeInfo-&gt;pSetupReferenceSlot-&gt;pPictureResource</code> <strong class=\"purple\">must</strong> not <a href=\"#video-picture-resource-matching\">match</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pNext-09250",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR</code>, then the <code>pNext</code> chain of <code>pDecodeInfo</code> <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoDecodeAV1PictureInfoKHR\">VkVideoDecodeAV1PictureInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-frameHeaderOffset-09251",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR</code>, then the <code>frameHeaderOffset</code> member of the <a href=\"#VkVideoDecodeAV1PictureInfoKHR\">VkVideoDecodeAV1PictureInfoKHR</a> structure included in the <code>pNext</code> chain of <code>pDecodeInfo</code> <strong class=\"purple\">must</strong> be less than the minimum of <code>pDecodeInfo-&gt;srcBufferRange</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pTileOffsets-09253",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR</code>, then all elements of the <code>pTileOffsets</code> member of the <a href=\"#VkVideoDecodeAV1PictureInfoKHR\">VkVideoDecodeAV1PictureInfoKHR</a> structure included in the <code>pNext</code> chain of <code>pDecodeInfo</code> <strong class=\"purple\">must</strong> be less than <code>pDecodeInfo-&gt;srcBufferRange</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pTileOffsets-09252",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR</code>, then for each element <span class=\"eq\">i</span> of the <code>pTileOffsets</code> and <code>pTileSizes</code> members of the <a href=\"#VkVideoDecodeAV1PictureInfoKHR\">VkVideoDecodeAV1PictureInfoKHR</a> structure included in the <code>pNext</code> chain of <code>pDecodeInfo</code> the sum of <code>pTileOffsets</code>[i] and <code>pTileSizes</code>[i] <strong class=\"purple\">must</strong> be less than or equal to <code>pDecodeInfo-&gt;srcBufferRange</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pDecodeInfo-09254",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR</code> and <code>pDecodeInfo-&gt;pSetupReferenceSlot</code> is not <code>NULL</code>, then the <code>pNext</code> chain of <code>pDecodeInfo-&gt;pSetupReferenceSlot</code> <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoDecodeAV1DpbSlotInfoKHR\">VkVideoDecodeAV1DpbSlotInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pNext-09255",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR</code>, then the <code>pNext</code> chain of each element of <code>pDecodeInfo-&gt;pReferenceSlots</code> <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoDecodeAV1DpbSlotInfoKHR\">VkVideoDecodeAV1DpbSlotInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-referenceNameSlotIndices-09262",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR</code>, then each element of the <code>referenceNameSlotIndices</code> array member of the <a href=\"#VkVideoDecodeAV1PictureInfoKHR\">VkVideoDecodeAV1PictureInfoKHR</a> structure included in the <code>pNext</code> chain of <code>pDecodeInfo</code> <strong class=\"purple\">must</strong> either be negative or <strong class=\"purple\">must</strong> equal the <code>slotIndex</code> member of one of the elements of <code>pDecodeInfo-&gt;pReferenceSlots</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-slotIndex-09263",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR</code>, then the <code>slotIndex</code> member of each element of <code>pDecodeInfo-&gt;pReferenceSlots</code> <strong class=\"purple\">must</strong> equal one of the elements of the <code>referenceNameSlotIndices</code> array member of the <a href=\"#VkVideoDecodeAV1PictureInfoKHR\">VkVideoDecodeAV1PictureInfoKHR</a> structure included in the <code>pNext</code> chain of <code>pDecodeInfo</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-pDecodeInfo-parameter",
          "text": "<code>pDecodeInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkVideoDecodeInfoKHR\">VkVideoDecodeInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support decode operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called inside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDecodeVideoKHR-bufferlevel",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoDecodeInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoDecodeInfoKHR-srcBuffer-07165",
          "text": "<code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR</code> set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeInfoKHR-srcBufferOffset-07166",
          "text": "<code>srcBufferOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>srcBuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeInfoKHR-srcBufferRange-07167",
          "text": "<code>srcBufferRange</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>srcBuffer</code> minus <code>srcBufferOffset</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeInfoKHR-pSetupReferenceSlot-07168",
          "text": "If <code>pSetupReferenceSlot</code> is not <code>NULL</code>, then its <code>slotIndex</code> member <strong class=\"purple\">must</strong> not be negative",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeInfoKHR-pSetupReferenceSlot-07169",
          "text": "If <code>pSetupReferenceSlot</code> is not <code>NULL</code>, then its <code>pPictureResource</code> <strong class=\"purple\">must</strong> not be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeInfoKHR-slotIndex-07171",
          "text": "The <code>slotIndex</code> member of each element of <code>pReferenceSlots</code> <strong class=\"purple\">must</strong> not be negative",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeInfoKHR-pPictureResource-07172",
          "text": "The <code>pPictureResource</code> member of each element of <code>pReferenceSlots</code> <strong class=\"purple\">must</strong> not be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeInfoKHR-pNext-pNext",
          "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=\"#VkVideoDecodeAV1PictureInfoKHR\">VkVideoDecodeAV1PictureInfoKHR</a>, <a href=\"#VkVideoDecodeH264PictureInfoKHR\">VkVideoDecodeH264PictureInfoKHR</a>, <a href=\"#VkVideoDecodeH265PictureInfoKHR\">VkVideoDecodeH265PictureInfoKHR</a>, or <a href=\"#VkVideoInlineQueryInfoKHR\">VkVideoInlineQueryInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeInfoKHR-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeInfoKHR-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeInfoKHR-srcBuffer-parameter",
          "text": "<code>srcBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeInfoKHR-dstPictureResource-parameter",
          "text": "<code>dstPictureResource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkVideoPictureResourceInfoKHR\">VkVideoPictureResourceInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeInfoKHR-pSetupReferenceSlot-parameter",
          "text": "If <code>pSetupReferenceSlot</code> is not <code>NULL</code>, <code>pSetupReferenceSlot</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkVideoReferenceSlotInfoKHR\">VkVideoReferenceSlotInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeInfoKHR-pReferenceSlots-parameter",
          "text": "If <code>referenceSlotCount</code> is not <code>0</code>, <code>pReferenceSlots</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>referenceSlotCount</code> valid <a href=\"#VkVideoReferenceSlotInfoKHR\">VkVideoReferenceSlotInfoKHR</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoDecodeH264ProfileInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoDecodeH264ProfileInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeH264ProfileInfoKHR-pictureLayout-parameter",
          "text": "If <code>pictureLayout</code> is not <code>0</code>, <code>pictureLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkVideoDecodeH264PictureLayoutFlagBitsKHR\">VkVideoDecodeH264PictureLayoutFlagBitsKHR</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoDecodeH264CapabilitiesKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoDecodeH264CapabilitiesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoDecodeH264SessionParametersCreateInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoDecodeH264SessionParametersCreateInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeH264SessionParametersCreateInfoKHR-pParametersAddInfo-parameter",
          "text": "If <code>pParametersAddInfo</code> is not <code>NULL</code>, <code>pParametersAddInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkVideoDecodeH264SessionParametersAddInfoKHR\">VkVideoDecodeH264SessionParametersAddInfoKHR</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoDecodeH264SessionParametersAddInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoDecodeH264SessionParametersAddInfoKHR-None-04825",
          "text": "The <code>seq_parameter_set_id</code> member of each <code>StdVideoH264SequenceParameterSet</code> structure specified in the elements of <code>pStdSPSs</code> <strong class=\"purple\">must</strong> be unique within <code>pStdSPSs</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeH264SessionParametersAddInfoKHR-None-04826",
          "text": "The pair constructed from the <code>seq_parameter_set_id</code> and <code>pic_parameter_set_id</code> members of each <code>StdVideoH264PictureParameterSet</code> structure specified in the elements of <code>pStdPPSs</code> <strong class=\"purple\">must</strong> be unique within <code>pStdPPSs</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeH264SessionParametersAddInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeH264SessionParametersAddInfoKHR-pStdSPSs-parameter",
          "text": "If <code>stdSPSCount</code> is not <code>0</code>, <code>pStdSPSs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stdSPSCount</code> <code>StdVideoH264SequenceParameterSet</code> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeH264SessionParametersAddInfoKHR-pStdPPSs-parameter",
          "text": "If <code>stdPPSCount</code> is not <code>0</code>, <code>pStdPPSs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stdPPSCount</code> <code>StdVideoH264PictureParameterSet</code> values",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoDecodeH264PictureInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoDecodeH264PictureInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeH264PictureInfoKHR-pStdPictureInfo-parameter",
          "text": "<code>pStdPictureInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>StdVideoDecodeH264PictureInfo</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeH264PictureInfoKHR-pSliceOffsets-parameter",
          "text": "<code>pSliceOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>sliceCount</code> <code>uint32_t</code> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeH264PictureInfoKHR-sliceCount-arraylength",
          "text": "<code>sliceCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoDecodeH264DpbSlotInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoDecodeH264DpbSlotInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeH264DpbSlotInfoKHR-pStdReferenceInfo-parameter",
          "text": "<code>pStdReferenceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>StdVideoDecodeH264ReferenceInfo</code> value",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoDecodeH265ProfileInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoDecodeH265ProfileInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoDecodeH265CapabilitiesKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoDecodeH265CapabilitiesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoDecodeH265SessionParametersCreateInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoDecodeH265SessionParametersCreateInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeH265SessionParametersCreateInfoKHR-pParametersAddInfo-parameter",
          "text": "If <code>pParametersAddInfo</code> is not <code>NULL</code>, <code>pParametersAddInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkVideoDecodeH265SessionParametersAddInfoKHR\">VkVideoDecodeH265SessionParametersAddInfoKHR</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoDecodeH265SessionParametersAddInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoDecodeH265SessionParametersAddInfoKHR-None-04833",
          "text": "The <code>vps_video_parameter_set_id</code> member of each <code>StdVideoH265VideoParameterSet</code> structure specified in the elements of <code>pStdVPSs</code> <strong class=\"purple\">must</strong> be unique within <code>pStdVPSs</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeH265SessionParametersAddInfoKHR-None-04834",
          "text": "The pair constructed from the <code>sps_video_parameter_set_id</code> and <code>sps_seq_parameter_set_id</code> members of each <code>StdVideoH265SequenceParameterSet</code> structure specified in the elements of <code>pStdSPSs</code> <strong class=\"purple\">must</strong> be unique within <code>pStdSPSs</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeH265SessionParametersAddInfoKHR-None-04835",
          "text": "The triplet constructed from the <code>sps_video_parameter_set_id</code>, <code>pps_seq_parameter_set_id</code>, and <code>pps_pic_parameter_set_id</code> members of each <code>StdVideoH265PictureParameterSet</code> structure specified in the elements of <code>pStdPPSs</code> <strong class=\"purple\">must</strong> be unique within <code>pStdPPSs</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeH265SessionParametersAddInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeH265SessionParametersAddInfoKHR-pStdVPSs-parameter",
          "text": "If <code>stdVPSCount</code> is not <code>0</code>, <code>pStdVPSs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stdVPSCount</code> <code>StdVideoH265VideoParameterSet</code> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeH265SessionParametersAddInfoKHR-pStdSPSs-parameter",
          "text": "If <code>stdSPSCount</code> is not <code>0</code>, <code>pStdSPSs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stdSPSCount</code> <code>StdVideoH265SequenceParameterSet</code> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeH265SessionParametersAddInfoKHR-pStdPPSs-parameter",
          "text": "If <code>stdPPSCount</code> is not <code>0</code>, <code>pStdPPSs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stdPPSCount</code> <code>StdVideoH265PictureParameterSet</code> values",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoDecodeH265PictureInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoDecodeH265PictureInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeH265PictureInfoKHR-pStdPictureInfo-parameter",
          "text": "<code>pStdPictureInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>StdVideoDecodeH265PictureInfo</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeH265PictureInfoKHR-pSliceSegmentOffsets-parameter",
          "text": "<code>pSliceSegmentOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>sliceSegmentCount</code> <code>uint32_t</code> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeH265PictureInfoKHR-sliceSegmentCount-arraylength",
          "text": "<code>sliceSegmentCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoDecodeH265DpbSlotInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoDecodeH265DpbSlotInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeH265DpbSlotInfoKHR-pStdReferenceInfo-parameter",
          "text": "<code>pStdReferenceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>StdVideoDecodeH265ReferenceInfo</code> value",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoDecodeAV1ProfileInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoDecodeAV1ProfileInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PROFILE_INFO_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoDecodeAV1CapabilitiesKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoDecodeAV1CapabilitiesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_CAPABILITIES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoDecodeAV1SessionParametersCreateInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoDecodeAV1SessionParametersCreateInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeAV1SessionParametersCreateInfoKHR-pStdSequenceHeader-parameter",
          "text": "<code>pStdSequenceHeader</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>StdVideoAV1SequenceHeader</code> value",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoDecodeAV1PictureInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoDecodeAV1PictureInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PICTURE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeAV1PictureInfoKHR-pStdPictureInfo-parameter",
          "text": "<code>pStdPictureInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>StdVideoDecodeAV1PictureInfo</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeAV1PictureInfoKHR-pTileOffsets-parameter",
          "text": "<code>pTileOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>tileCount</code> <code>uint32_t</code> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeAV1PictureInfoKHR-pTileSizes-parameter",
          "text": "<code>pTileSizes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>tileCount</code> <code>uint32_t</code> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeAV1PictureInfoKHR-tileCount-arraylength",
          "text": "<code>tileCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoDecodeAV1DpbSlotInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoDecodeAV1DpbSlotInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_DPB_SLOT_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoDecodeAV1DpbSlotInfoKHR-pStdReferenceInfo-parameter",
          "text": "<code>pStdReferenceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>StdVideoDecodeAV1ReferenceInfo</code> value",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoEncodeCapabilitiesKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoEncodeCapabilitiesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR-pQualityLevelInfo-08257",
          "text": "If <code>pQualityLevelInfo-&gt;pVideoProfile-&gt;videoCodecOperation</code> is <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR</code>, then the <code>pNext</code> chain of <code>pQualityLevelProperties</code> <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoEncodeH264QualityLevelPropertiesKHR\">VkVideoEncodeH264QualityLevelPropertiesKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR-pQualityLevelInfo-08258",
          "text": "If <code>pQualityLevelInfo-&gt;pVideoProfile-&gt;videoCodecOperation</code> is <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code>, then the <code>pNext</code> chain of <code>pQualityLevelProperties</code> <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoEncodeH265QualityLevelPropertiesKHR\">VkVideoEncodeH265QualityLevelPropertiesKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR-pQualityLevelInfo-parameter",
          "text": "<code>pQualityLevelInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR\">VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR-pQualityLevelProperties-parameter",
          "text": "<code>pQualityLevelProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkVideoEncodeQualityLevelPropertiesKHR\">VkVideoEncodeQualityLevelPropertiesKHR</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR-pVideoProfile-08259",
          "text": "<code>pVideoProfile</code> <strong class=\"purple\">must</strong> be a <a href=\"#video-profile-support\">supported video profile</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR-pVideoProfile-08260",
          "text": "<code>pVideoProfile-&gt;videoCodecOperation</code> <strong class=\"purple\">must</strong> specify an encode operation",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR-qualityLevel-08261",
          "text": "<code>qualityLevel</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkVideoEncodeCapabilitiesKHR\">VkVideoEncodeCapabilitiesKHR</a>::<code>maxQualityLevels</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the video profile specified in <code>pVideoProfile</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR-pVideoProfile-parameter",
          "text": "<code>pVideoProfile</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkVideoProfileInfoKHR\">VkVideoProfileInfoKHR</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoEncodeQualityLevelPropertiesKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoEncodeQualityLevelPropertiesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeQualityLevelPropertiesKHR-pNext-pNext",
          "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=\"#VkVideoEncodeH264QualityLevelPropertiesKHR\">VkVideoEncodeH264QualityLevelPropertiesKHR</a> or <a href=\"#VkVideoEncodeH265QualityLevelPropertiesKHR\">VkVideoEncodeH265QualityLevelPropertiesKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeQualityLevelPropertiesKHR-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoEncodeQualityLevelInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoEncodeQualityLevelInfoKHR-qualityLevel-08311",
          "text": "<code>qualityLevel</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkVideoEncodeCapabilitiesKHR\">VkVideoEncodeCapabilitiesKHR</a>::<code>maxQualityLevels</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the used video profile",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeQualityLevelInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetEncodedVideoSessionParametersKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetEncodedVideoSessionParametersKHR-pVideoSessionParametersInfo-08359",
          "text": "<code>pVideoSessionParametersInfo-&gt;videoSessionParameters</code> <strong class=\"purple\">must</strong> have been created with an encode operation",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetEncodedVideoSessionParametersKHR-pVideoSessionParametersInfo-08262",
          "text": "If <code>pVideoSessionParametersInfo-&gt;videoSessionParameters</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR</code>, then the <code>pNext</code> chain of <code>pVideoSessionParametersInfo</code> <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoEncodeH264SessionParametersGetInfoKHR\">VkVideoEncodeH264SessionParametersGetInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetEncodedVideoSessionParametersKHR-pVideoSessionParametersInfo-08263",
          "text": "If <code>pVideoSessionParametersInfo-&gt;videoSessionParameters</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR</code>, then for the <a href=\"#VkVideoEncodeH264SessionParametersGetInfoKHR\">VkVideoEncodeH264SessionParametersGetInfoKHR</a> structure included in the <code>pNext</code> chain of <code>pVideoSessionParametersInfo</code>, if its <code>writeStdSPS</code> member is <code>VK_TRUE</code>, then <code>pVideoSessionParametersInfo-&gt;videoSessionParameters</code> <strong class=\"purple\">must</strong> contain a <code>StdVideoH264SequenceParameterSet</code> entry with <code>seq_parameter_set_id</code> matching <a href=\"#VkVideoEncodeH264SessionParametersGetInfoKHR\">VkVideoEncodeH264SessionParametersGetInfoKHR</a>::<code>stdSPSId</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetEncodedVideoSessionParametersKHR-pVideoSessionParametersInfo-08264",
          "text": "If <code>pVideoSessionParametersInfo-&gt;videoSessionParameters</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR</code>, then for the <a href=\"#VkVideoEncodeH264SessionParametersGetInfoKHR\">VkVideoEncodeH264SessionParametersGetInfoKHR</a> structure included in the <code>pNext</code> chain of <code>pVideoSessionParametersInfo</code>, if its <code>writeStdPPS</code> member is <code>VK_TRUE</code>, then <code>pVideoSessionParametersInfo-&gt;videoSessionParameters</code> <strong class=\"purple\">must</strong> contain a <code>StdVideoH264PictureParameterSet</code> entry with <code>seq_parameter_set_id</code> and <code>pic_parameter_set_id</code> matching <a href=\"#VkVideoEncodeH264SessionParametersGetInfoKHR\">VkVideoEncodeH264SessionParametersGetInfoKHR</a>::<code>stdSPSId</code> and <a href=\"#VkVideoEncodeH264SessionParametersGetInfoKHR\">VkVideoEncodeH264SessionParametersGetInfoKHR</a>::<code>stdPPSId</code>, respectively",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetEncodedVideoSessionParametersKHR-pVideoSessionParametersInfo-08265",
          "text": "If <code>pVideoSessionParametersInfo-&gt;videoSessionParameters</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code>, then the <code>pNext</code> chain of <code>pVideoSessionParametersInfo</code> <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoEncodeH265SessionParametersGetInfoKHR\">VkVideoEncodeH265SessionParametersGetInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetEncodedVideoSessionParametersKHR-pVideoSessionParametersInfo-08266",
          "text": "If <code>pVideoSessionParametersInfo-&gt;videoSessionParameters</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code>, then for the <a href=\"#VkVideoEncodeH265SessionParametersGetInfoKHR\">VkVideoEncodeH265SessionParametersGetInfoKHR</a> structure included in the <code>pNext</code> chain of <code>pVideoSessionParametersInfo</code>, if its <code>writeStdVPS</code> member is <code>VK_TRUE</code>, then <code>pVideoSessionParametersInfo-&gt;videoSessionParameters</code> <strong class=\"purple\">must</strong> contain a <code>StdVideoH265VideoParameterSet</code> entry with <code>vps_video_parameter_set_id</code> matching <a href=\"#VkVideoEncodeH265SessionParametersGetInfoKHR\">VkVideoEncodeH265SessionParametersGetInfoKHR</a>::<code>stdVPSId</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetEncodedVideoSessionParametersKHR-pVideoSessionParametersInfo-08267",
          "text": "If <code>pVideoSessionParametersInfo-&gt;videoSessionParameters</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code>, then for the <a href=\"#VkVideoEncodeH265SessionParametersGetInfoKHR\">VkVideoEncodeH265SessionParametersGetInfoKHR</a> structure included in the <code>pNext</code> chain of <code>pVideoSessionParametersInfo</code>, if its <code>writeStdSPS</code> member is <code>VK_TRUE</code>, then <code>pVideoSessionParametersInfo-&gt;videoSessionParameters</code> <strong class=\"purple\">must</strong> contain a <code>StdVideoH265SequenceParameterSet</code> entry with <code>sps_video_parameter_set_id</code> and <code>sps_seq_parameter_set_id</code> matching <a href=\"#VkVideoEncodeH265SessionParametersGetInfoKHR\">VkVideoEncodeH265SessionParametersGetInfoKHR</a>::<code>stdVPSId</code> and <a href=\"#VkVideoEncodeH265SessionParametersGetInfoKHR\">VkVideoEncodeH265SessionParametersGetInfoKHR</a>::<code>stdSPSId</code>, respectively",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetEncodedVideoSessionParametersKHR-pVideoSessionParametersInfo-08268",
          "text": "If <code>pVideoSessionParametersInfo-&gt;videoSessionParameters</code> was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code>, then for the <a href=\"#VkVideoEncodeH265SessionParametersGetInfoKHR\">VkVideoEncodeH265SessionParametersGetInfoKHR</a> structure included in the <code>pNext</code> chain of <code>pVideoSessionParametersInfo</code>, if its <code>writeStdPPS</code> member is <code>VK_TRUE</code>, then <code>pVideoSessionParametersInfo-&gt;videoSessionParameters</code> <strong class=\"purple\">must</strong> contain a <code>StdVideoH265PictureParameterSet</code> entry with <code>sps_video_parameter_set_id</code>, <code>pps_seq_parameter_set_id</code>, and <code>pps_pic_parameter_set_id</code> matching <a href=\"#VkVideoEncodeH265SessionParametersGetInfoKHR\">VkVideoEncodeH265SessionParametersGetInfoKHR</a>::<code>stdVPSId</code>, <a href=\"#VkVideoEncodeH265SessionParametersGetInfoKHR\">VkVideoEncodeH265SessionParametersGetInfoKHR</a>::<code>stdSPSId</code>, and <a href=\"#VkVideoEncodeH265SessionParametersGetInfoKHR\">VkVideoEncodeH265SessionParametersGetInfoKHR</a>::<code>stdPPSId</code>, respectively",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetEncodedVideoSessionParametersKHR-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetEncodedVideoSessionParametersKHR-pVideoSessionParametersInfo-parameter",
          "text": "<code>pVideoSessionParametersInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkVideoEncodeSessionParametersGetInfoKHR\">VkVideoEncodeSessionParametersGetInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetEncodedVideoSessionParametersKHR-pFeedbackInfo-parameter",
          "text": "If <code>pFeedbackInfo</code> is not <code>NULL</code>, <code>pFeedbackInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkVideoEncodeSessionParametersFeedbackInfoKHR\">VkVideoEncodeSessionParametersFeedbackInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetEncodedVideoSessionParametersKHR-pDataSize-parameter",
          "text": "<code>pDataSize</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>size_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetEncodedVideoSessionParametersKHR-pData-parameter",
          "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",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoEncodeSessionParametersGetInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoEncodeSessionParametersGetInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeSessionParametersGetInfoKHR-pNext-pNext",
          "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=\"#VkVideoEncodeH264SessionParametersGetInfoKHR\">VkVideoEncodeH264SessionParametersGetInfoKHR</a> or <a href=\"#VkVideoEncodeH265SessionParametersGetInfoKHR\">VkVideoEncodeH265SessionParametersGetInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeSessionParametersGetInfoKHR-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeSessionParametersGetInfoKHR-videoSessionParameters-parameter",
          "text": "<code>videoSessionParameters</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkVideoSessionParametersKHR\">VkVideoSessionParametersKHR</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoEncodeSessionParametersFeedbackInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoEncodeSessionParametersFeedbackInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeSessionParametersFeedbackInfoKHR-pNext-pNext",
          "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=\"#VkVideoEncodeH264SessionParametersFeedbackInfoKHR\">VkVideoEncodeH264SessionParametersFeedbackInfoKHR</a> or <a href=\"#VkVideoEncodeH265SessionParametersFeedbackInfoKHR\">VkVideoEncodeH265SessionParametersFeedbackInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeSessionParametersFeedbackInfoKHR-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdEncodeVideoKHR": {
      "core": [
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-None-08250",
          "text": "The bound video session <strong class=\"purple\">must</strong> have been created with an encode operation",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-None-07012",
          "text": "The bound video session <strong class=\"purple\">must</strong> not be in <a href=\"#video-session-uninitialized\">uninitialized</a> state at the time the command is executed on the device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-None-08318",
          "text": "The bound video session parameters object <strong class=\"purple\">must</strong> have been created with the currently set <a href=\"#encode-quality-level\">video encode quality level</a> for the bound video session at the time the command is executed on the device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-opCount-07174",
          "text": "For each <a href=\"#queries-operation-active\">active</a> query, the <a href=\"#queries-operation-active-query-index\">active query index</a> corresponding to the query type of that query plus <code>opCount</code> <strong class=\"purple\">must</strong> be less than or equal to the <a href=\"#queries-operation-last-activatable-query-index\">last activatable query index</a> corresponding to the query type of that query plus one",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-pNext-08360",
          "text": "If the bound video session was created with <code>VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR</code>, and the <code>pNext</code> chain of <code>pEncodeInfo</code> includes a <a href=\"#VkVideoInlineQueryInfoKHR\">VkVideoInlineQueryInfoKHR</a> structure with its <code>queryPool</code> member specifying a valid <code>VkQueryPool</code> handle, then <a href=\"#VkVideoInlineQueryInfoKHR\">VkVideoInlineQueryInfoKHR</a>::queryCount <strong class=\"purple\">must</strong> equal <code>opCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-pNext-08361",
          "text": "If the bound video session was created with <code>VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR</code>, and the <code>pNext</code> chain of <code>pEncodeInfo</code> includes a <a href=\"#VkVideoInlineQueryInfoKHR\">VkVideoInlineQueryInfoKHR</a> structure with its <code>queryPool</code> member specifying a valid <code>VkQueryPool</code> handle, then all the queries used by the command, as specified by the <a href=\"#VkVideoInlineQueryInfoKHR\">VkVideoInlineQueryInfoKHR</a> structure, <strong class=\"purple\">must</strong> be <em>unavailable</em>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-queryType-08362",
          "text": "If the bound video session was created with <code>VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR</code>, then the <code>queryType</code> used to create the <code>queryPool</code> specified in the <a href=\"#VkVideoInlineQueryInfoKHR\">VkVideoInlineQueryInfoKHR</a> structure included in the <code>pNext</code> chain of <code>pEncodeInfo</code> <strong class=\"purple\">must</strong> be <code>VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR</code> or <code>VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-queryPool-08363",
          "text": "If the bound video session was created with <code>VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR</code>, then the <code>queryPool</code> specified in the <a href=\"#VkVideoInlineQueryInfoKHR\">VkVideoInlineQueryInfoKHR</a> structure included in the <code>pNext</code> chain of <code>pEncodeInfo</code> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkVideoProfileInfoKHR\">VkVideoProfileInfoKHR</a> structure included in the <code>pNext</code> chain of <a href=\"#VkQueryPoolCreateInfo\">VkQueryPoolCreateInfo</a> identical to the one specified in <a href=\"#VkVideoSessionCreateInfoKHR\">VkVideoSessionCreateInfoKHR</a>::<code>pVideoProfile</code> the bound video session was created with",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-queryType-08364",
          "text": "If the bound video session was created with <code>VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR</code>, and the <code>queryType</code> used to create the <code>queryPool</code> specified in the <a href=\"#VkVideoInlineQueryInfoKHR\">VkVideoInlineQueryInfoKHR</a> structure included in the <code>pNext</code> chain of <code>pEncodeInfo</code> is <code>VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR</code>, then the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> have been created with a queue family index that supports <a href=\"#queries-result-status-only\">result status queries</a>, as indicated by <a href=\"#VkQueueFamilyQueryResultStatusPropertiesKHR\">VkQueueFamilyQueryResultStatusPropertiesKHR</a>::<code>queryResultStatusSupport</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-pEncodeInfo-08201",
          "text": "<code>pEncodeInfo-&gt;dstBuffer</code> <strong class=\"purple\">must</strong> be <a href=\"#video-profile-compatibility\">compatible</a> with the video profile the bound video session was created with",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-commandBuffer-08202",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, then <code>pEncodeInfo-&gt;dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-commandBuffer-08203",
          "text": "If <code>commandBuffer</code> is a protected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, then <code>pEncodeInfo-&gt;dstBuffer</code> <strong class=\"purple\">must</strong> be a protected buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-pEncodeInfo-08204",
          "text": "<code>pEncodeInfo-&gt;dstBufferOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of <a href=\"#VkVideoCapabilitiesKHR\">VkVideoCapabilitiesKHR</a>::<code>minBitstreamBufferOffsetAlignment</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the video profile the bound video session was created with",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-pEncodeInfo-08205",
          "text": "<code>pEncodeInfo-&gt;dstBufferRange</code> <strong class=\"purple\">must</strong> be an integer multiple of <a href=\"#VkVideoCapabilitiesKHR\">VkVideoCapabilitiesKHR</a>::<code>minBitstreamBufferSizeAlignment</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the video profile the bound video session was created with",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-pEncodeInfo-08206",
          "text": "<code>pEncodeInfo-&gt;srcPictureResource.imageViewBinding</code> <strong class=\"purple\">must</strong> be <a href=\"#video-profile-compatibility\">compatible</a> with the video profile the bound video session was created with",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-pEncodeInfo-08207",
          "text": "The format of <code>pEncodeInfo-&gt;srcPictureResource.imageViewBinding</code> <strong class=\"purple\">must</strong> match the <a href=\"#VkVideoSessionCreateInfoKHR\">VkVideoSessionCreateInfoKHR</a>::<code>pictureFormat</code> the bound video session was created with",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-pEncodeInfo-08208",
          "text": "<code>pEncodeInfo-&gt;srcPictureResource.codedOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>codedOffsetGranularity</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-pEncodeInfo-08209",
          "text": "<code>pEncodeInfo-&gt;srcPictureResource.codedExtent</code> <strong class=\"purple\">must</strong> be between <code>minCodedExtent</code> and <code>maxCodedExtent</code>, inclusive, the bound video session was created with",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-pEncodeInfo-08210",
          "text": "<code>pEncodeInfo-&gt;srcPictureResource.imageViewBinding</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-commandBuffer-08211",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, then <code>pEncodeInfo-&gt;srcPictureResource.imageViewBinding</code> <strong class=\"purple\">must</strong> not have been created from a protected image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-commandBuffer-08212",
          "text": "If <code>commandBuffer</code> is a protected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, then <code>pEncodeInfo-&gt;srcPictureResource.imageViewBinding</code> <strong class=\"purple\">must</strong> have been created from a protected image",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-pEncodeInfo-08377",
          "text": "<code>pEncodeInfo-&gt;pSetupReferenceSlot</code> <strong class=\"purple\">must</strong> not be <code>NULL</code> unless the bound video session was created with <a href=\"#VkVideoSessionCreateInfoKHR\">VkVideoSessionCreateInfoKHR</a>::<code>maxDpbSlots</code> equal to zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-pEncodeInfo-08213",
          "text": "If <code>pEncodeInfo-&gt;pSetupReferenceSlot</code> is not <code>NULL</code>, then <code>pEncodeInfo-&gt;pSetupReferenceSlot-&gt;slotIndex</code> <strong class=\"purple\">must</strong> be less than the <a href=\"#VkVideoSessionCreateInfoKHR\">VkVideoSessionCreateInfoKHR</a>::<code>maxDpbSlots</code> specified when the bound video session was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-pEncodeInfo-08214",
          "text": "If <code>pEncodeInfo-&gt;pSetupReferenceSlot</code> is not <code>NULL</code>, then <code>pEncodeInfo-&gt;pSetupReferenceSlot-&gt;pPictureResource-&gt;codedOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>codedOffsetGranularity</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-pEncodeInfo-08215",
          "text": "If <code>pEncodeInfo-&gt;pSetupReferenceSlot</code> is not <code>NULL</code>, then <code>pEncodeInfo-&gt;pSetupReferenceSlot-&gt;pPictureResource</code> <strong class=\"purple\">must</strong> <a href=\"#video-picture-resource-matching\">match</a> one of the <a href=\"#bound-reference-picture-resources\">bound reference picture resource</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-activeReferencePictureCount-08216",
          "text": "<code>activeReferencePictureCount</code> <strong class=\"purple\">must</strong> be less than or equal to the <a href=\"#VkVideoSessionCreateInfoKHR\">VkVideoSessionCreateInfoKHR</a>::<code>maxActiveReferencePictures</code> specified when the bound video session was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-slotIndex-08217",
          "text": "The <code>slotIndex</code> member of each element of <code>pEncodeInfo-&gt;pReferenceSlots</code> <strong class=\"purple\">must</strong> be less than the <a href=\"#VkVideoSessionCreateInfoKHR\">VkVideoSessionCreateInfoKHR</a>::<code>maxDpbSlots</code> specified when the bound video session was created",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-codedOffset-08218",
          "text": "The <code>codedOffset</code> member of the <a href=\"#VkVideoPictureResourceInfoKHR\">VkVideoPictureResourceInfoKHR</a> structure pointed to by the <code>pPictureResource</code> member of each element of <code>pEncodeInfo-&gt;pReferenceSlots</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>codedOffsetGranularity</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-pPictureResource-08219",
          "text": "The <code>pPictureResource</code> member of each element of <code>pEncodeInfo-&gt;pReferenceSlots</code> <strong class=\"purple\">must</strong> <a href=\"#video-picture-resource-matching\">match</a> one of the <a href=\"#bound-reference-picture-resources\">bound reference picture resource</a> associated with the DPB slot index specified in the <code>slotIndex</code> member of that element",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-pPictureResource-08220",
          "text": "Each video picture resource corresponding to the <code>pPictureResource</code> member specified in the elements of <code>pEncodeInfo-&gt;pReferenceSlots</code> <strong class=\"purple\">must</strong> be <a href=\"#video-picture-resource-uniqueness\">unique</a> within <code>pEncodeInfo-&gt;pReferenceSlots</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-dpbFrameUseCount-08221",
          "text": "All elements of <code>dpbFrameUseCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>1</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-pEncodeInfo-08222",
          "text": "The image subresource <a href=\"#video-image-subresource-reference\">referred</a> to by <code>pEncodeInfo-&gt;srcPictureResource</code> <strong class=\"purple\">must</strong> be in the <code>VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR</code> layout at the time the video encode operation is executed on the device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-pEncodeInfo-08223",
          "text": "If <code>pEncodeInfo-&gt;pSetupReferenceSlot</code> is not <code>NULL</code>, then the image subresource <a href=\"#video-image-subresource-reference\">referred</a> to by <code>pEncodeInfo-&gt;pSetupReferenceSlot-&gt;pPictureResource</code> <strong class=\"purple\">must</strong> be in the <code>VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR</code> layout at the time the video encode operation is executed on the device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-pPictureResource-08224",
          "text": "The image subresource <a href=\"#video-image-subresource-reference\">referred</a> to by the <code>pPictureResource</code> member of each element of <code>pEncodeInfo-&gt;pReferenceSlots</code> <strong class=\"purple\">must</strong> be in the <code>VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR</code> layout at the time the video encode operation is executed on the device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-pNext-08225",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR</code>, then the <code>pNext</code> chain of <code>pEncodeInfo</code> <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoEncodeH264PictureInfoKHR\">VkVideoEncodeH264PictureInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-StdVideoH264SequenceParameterSet-08226",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR</code>, then the bound video session parameters object <strong class=\"purple\">must</strong> contain a <code>StdVideoH264SequenceParameterSet</code> entry with <code>seq_parameter_set_id</code> matching <code>StdVideoEncodeH264PictureInfo</code>::<code>seq_parameter_set_id</code> that is provided in the <code>pStdPictureInfo</code> member of the <a href=\"#VkVideoEncodeH264PictureInfoKHR\">VkVideoEncodeH264PictureInfoKHR</a> structure included in the <code>pNext</code> chain of <code>pEncodeInfo</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-StdVideoH264PictureParameterSet-08227",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR</code>, then the bound video session parameters object <strong class=\"purple\">must</strong> contain a <code>StdVideoH264PictureParameterSet</code> entry with <code>seq_parameter_set_id</code> and <code>pic_parameter_set_id</code> matching <code>StdVideoEncodeH264PictureInfo</code>::<code>seq_parameter_set_id</code> and <code>StdVideoEncodeH264PictureInfo</code>::<code>pic_parameter_set_id</code>, respectively, that are provided in the <code>pStdPictureInfo</code> member of the <a href=\"#VkVideoEncodeH264PictureInfoKHR\">VkVideoEncodeH264PictureInfoKHR</a> structure included in the <code>pNext</code> chain of <code>pEncodeInfo</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-pEncodeInfo-08228",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR</code> and <code>pEncodeInfo-&gt;pSetupReferenceSlot</code> is not <code>NULL</code>, then the <code>pNext</code> chain of <code>pEncodeInfo-&gt;pSetupReferenceSlot</code> <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoEncodeH264DpbSlotInfoKHR\">VkVideoEncodeH264DpbSlotInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-pNext-08229",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR</code>, then the <code>pNext</code> chain of each element of <code>pEncodeInfo-&gt;pReferenceSlots</code> <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoEncodeH264DpbSlotInfoKHR\">VkVideoEncodeH264DpbSlotInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-constantQp-08269",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR</code> and the current <a href=\"#encode-rate-control-modes\">rate control mode</a> is not <code>VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR</code>, then <a href=\"#VkVideoEncodeH264NaluSliceInfoKHR\">VkVideoEncodeH264NaluSliceInfoKHR</a>::<code>constantQp</code> <strong class=\"purple\">must</strong> be zero for each element of the <code>pNaluSliceEntries</code> member of the <a href=\"#VkVideoEncodeH264PictureInfoKHR\">VkVideoEncodeH264PictureInfoKHR</a> structure included in the <code>pNext</code> chain of <code>pEncodeInfo</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-constantQp-08270",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR</code> and the current <a href=\"#encode-rate-control-modes\">rate control mode</a> is <code>VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR</code>, then <a href=\"#VkVideoEncodeH264NaluSliceInfoKHR\">VkVideoEncodeH264NaluSliceInfoKHR</a>::<code>constantQp</code> <strong class=\"purple\">must</strong> be between <a href=\"#VkVideoEncodeH264CapabilitiesKHR\">VkVideoEncodeH264CapabilitiesKHR</a>::<code>minQp</code> and <a href=\"#VkVideoEncodeH264CapabilitiesKHR\">VkVideoEncodeH264CapabilitiesKHR</a>::<code>maxQp</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the video profile the bound video session was created with, for each element of the <code>pNaluSliceEntries</code> member of the <a href=\"#VkVideoEncodeH264PictureInfoKHR\">VkVideoEncodeH264PictureInfoKHR</a> structure included in the <code>pNext</code> chain of <code>pEncodeInfo</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-constantQp-08271",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR</code> and <a href=\"#VkVideoEncodeH264CapabilitiesKHR\">VkVideoEncodeH264CapabilitiesKHR</a>::<code>flags</code> does not include <code>VK_VIDEO_ENCODE_H264_CAPABILITY_PER_SLICE_CONSTANT_QP_BIT_KHR</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the video profile the bound video session was created with, then <a href=\"#VkVideoEncodeH264NaluSliceInfoKHR\">VkVideoEncodeH264NaluSliceInfoKHR</a>::<code>constantQp</code> <strong class=\"purple\">must</strong> have the same value for each element of the <code>pNaluSliceEntries</code> member of the <a href=\"#VkVideoEncodeH264PictureInfoKHR\">VkVideoEncodeH264PictureInfoKHR</a> structure included in the <code>pNext</code> chain of <code>pEncodeInfo</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-naluSliceEntryCount-08302",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR</code>, then the <code>naluSliceEntryCount</code> member of the <a href=\"#VkVideoEncodeH264PictureInfoKHR\">VkVideoEncodeH264PictureInfoKHR</a> structure included in the <code>pNext</code> chain of <code>pEncodeInfo</code> <strong class=\"purple\">must</strong> be less than or equal to <code>minCodingBlockExtent.width</code> multiplied by <code>minCodingBlockExtent.height</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-naluSliceEntryCount-08312",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR</code> and <a href=\"#VkVideoEncodeH264CapabilitiesKHR\">VkVideoEncodeH264CapabilitiesKHR</a>::<code>flags</code> does not include <code>VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_KHR</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the video profile the bound video session was created with, then the <code>naluSliceEntryCount</code> member of the <a href=\"#VkVideoEncodeH264PictureInfoKHR\">VkVideoEncodeH264PictureInfoKHR</a> structure included in the <code>pNext</code> chain of <code>pEncodeInfo</code> <strong class=\"purple\">must</strong> be less than or equal to <code>minCodingBlockExtent.height</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-pNext-08352",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR</code>, the <code>pNext</code> chain of <code>pEncodeInfo</code> includes a <a href=\"#VkVideoEncodeH264PictureInfoKHR\">VkVideoEncodeH264PictureInfoKHR</a> structure, and <code>pEncodeInfo-&gt;referenceSlotCount</code> is greater than zero, then <a href=\"#VkVideoEncodeH264PictureInfoKHR\">VkVideoEncodeH264PictureInfoKHR</a>::<code>pStdPictureInfo-&gt;pRefLists</code> <strong class=\"purple\">must</strong> not be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-pNext-08339",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR</code>, the <code>pNext</code> chain of <code>pEncodeInfo</code> includes a <a href=\"#VkVideoEncodeH264PictureInfoKHR\">VkVideoEncodeH264PictureInfoKHR</a> structure, and <a href=\"#VkVideoEncodeH264PictureInfoKHR\">VkVideoEncodeH264PictureInfoKHR</a>::<code>pStdPictureInfo-&gt;pRefLists</code> is not <code>NULL</code>, then each element of the <code>RefPicList0</code> and <code>RefPicList1</code> array members of the <code>StdVideoEncodeH264ReferenceListsInfo</code> structure pointed to by <a href=\"#VkVideoEncodeH264PictureInfoKHR\">VkVideoEncodeH264PictureInfoKHR</a>::<code>pStdPictureInfo-&gt;pRefLists</code> <strong class=\"purple\">must</strong> either be <code>STD_VIDEO_H264_NO_REFERENCE_PICTURE</code> or <strong class=\"purple\">must</strong> equal the <code>slotIndex</code> member of one of the elements of <code>pEncodeInfo-&gt;pReferenceSlots</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-pNext-08353",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR</code>, the <code>pNext</code> chain of <code>pEncodeInfo</code> includes a <a href=\"#VkVideoEncodeH264PictureInfoKHR\">VkVideoEncodeH264PictureInfoKHR</a> structure, and <code>pEncodeInfo-&gt;referenceSlotCount</code> is greater than zero, then the <code>slotIndex</code> member of each element of <code>pEncodeInfo-&gt;pReferenceSlots</code> <strong class=\"purple\">must</strong> equal one of the elements of the <code>RefPicList0</code> or <code>RefPicList1</code> array members of the <code>StdVideoEncodeH264ReferenceListsInfo</code> structure pointed to by <a href=\"#VkVideoEncodeH264PictureInfoKHR\">VkVideoEncodeH264PictureInfoKHR</a>::<code>pStdPictureInfo-&gt;pRefLists</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-maxPPictureL0ReferenceCount-08340",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR</code> and <a href=\"#VkVideoEncodeH264CapabilitiesKHR\">VkVideoEncodeH264CapabilitiesKHR</a>::<code>maxPPictureL0ReferenceCount</code> is zero, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the video profile the bound video session was created with, then <code>h264PictureType</code> and each element of <code>h264L0PictureTypes</code> and <code>h264L1PictureTypes</code> <strong class=\"purple\">must</strong> not be <code>STD_VIDEO_H264_PICTURE_TYPE_P</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-maxBPictureL0ReferenceCount-08341",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR</code> and <a href=\"#VkVideoEncodeH264CapabilitiesKHR\">VkVideoEncodeH264CapabilitiesKHR</a>::<code>maxBPictureL0ReferenceCount</code> and <a href=\"#VkVideoEncodeH264CapabilitiesKHR\">VkVideoEncodeH264CapabilitiesKHR</a>::<code>maxL1ReferenceCount</code> are both zero, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the video profile the bound video session was created with, then <code>h264PictureType</code> and each element of <code>h264L0PictureTypes</code> and <code>h264L1PictureTypes</code> <strong class=\"purple\">must</strong> not be <code>STD_VIDEO_H264_PICTURE_TYPE_B</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-flags-08342",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR</code> and <a href=\"#VkVideoEncodeH264CapabilitiesKHR\">VkVideoEncodeH264CapabilitiesKHR</a>::<code>flags</code> does not include <code>VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the video profile the bound video session was created with, then each element of <code>h264L0PictureTypes</code> <strong class=\"purple\">must</strong> not be <code>STD_VIDEO_H264_PICTURE_TYPE_B</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-flags-08343",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR</code> and <a href=\"#VkVideoEncodeH264CapabilitiesKHR\">VkVideoEncodeH264CapabilitiesKHR</a>::<code>flags</code> does not include <code>VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the video profile the bound video session was created with, then each element of <code>h264L1PictureTypes</code> <strong class=\"purple\">must</strong> not be <code>STD_VIDEO_H264_PICTURE_TYPE_B</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-pNext-08230",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code>, then the <code>pNext</code> chain of <code>pEncodeInfo</code> <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoEncodeH265PictureInfoKHR\">VkVideoEncodeH265PictureInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-StdVideoH265VideoParameterSet-08231",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code>, then the bound video session parameters object <strong class=\"purple\">must</strong> contain a <code>StdVideoH265VideoParameterSet</code> entry with <code>vps_video_parameter_set_id</code> matching <code>StdVideoEncodeH265PictureInfo</code>::<code>sps_video_parameter_set_id</code> that is provided in the <code>pStdPictureInfo</code> member of the <a href=\"#VkVideoEncodeH265PictureInfoKHR\">VkVideoEncodeH265PictureInfoKHR</a> structure included in the <code>pNext</code> chain of <code>pEncodeInfo</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-StdVideoH265SequenceParameterSet-08232",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code>, then the bound video session parameters object <strong class=\"purple\">must</strong> contain a <code>StdVideoH265SequenceParameterSet</code> entry with <code>sps_video_parameter_set_id</code> and <code>sps_seq_parameter_set_id</code> matching <code>StdVideoEncodeH265PictureInfo</code>::<code>sps_video_parameter_set_id</code> and <code>StdVideoEncodeH265PictureInfo</code>::<code>pps_seq_parameter_set_id</code>, respectively, that are provided in the <code>pStdPictureInfo</code> member of the <a href=\"#VkVideoEncodeH265PictureInfoKHR\">VkVideoEncodeH265PictureInfoKHR</a> structure included in the <code>pNext</code> chain of <code>pEncodeInfo</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-StdVideoH265PictureParameterSet-08233",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code>, then the bound video session parameters object <strong class=\"purple\">must</strong> contain a <code>StdVideoH265PictureParameterSet</code> entry with <code>sps_video_parameter_set_id</code>, <code>pps_seq_parameter_set_id</code>, and <code>pps_pic_parameter_set_id</code> matching <code>StdVideoEncodeH265PictureInfo</code>::<code>sps_video_parameter_set_id</code>, <code>StdVideoEncodeH265PictureInfo</code>::<code>pps_seq_parameter_set_id</code>, and <code>StdVideoEncodeH265PictureInfo</code>::<code>pps_pic_parameter_set_id</code>, respectively, that are provided in the <code>pStdPictureInfo</code> member of the <a href=\"#VkVideoEncodeH265PictureInfoKHR\">VkVideoEncodeH265PictureInfoKHR</a> structure included in the <code>pNext</code> chain of <code>pEncodeInfo</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-pEncodeInfo-08234",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code> and <code>pEncodeInfo-&gt;pSetupReferenceSlot</code> is not <code>NULL</code>, then the <code>pNext</code> chain of <code>pEncodeInfo-&gt;pSetupReferenceSlot</code> <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoEncodeH265DpbSlotInfoKHR\">VkVideoEncodeH265DpbSlotInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-pNext-08235",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code>, then the <code>pNext</code> chain of each element of <code>pEncodeInfo-&gt;pReferenceSlots</code> <strong class=\"purple\">must</strong> include a <a href=\"#VkVideoEncodeH265DpbSlotInfoKHR\">VkVideoEncodeH265DpbSlotInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-constantQp-08272",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code> and the current <a href=\"#encode-rate-control-modes\">rate control mode</a> is not <code>VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR</code>, then <a href=\"#VkVideoEncodeH265NaluSliceSegmentInfoKHR\">VkVideoEncodeH265NaluSliceSegmentInfoKHR</a>::<code>constantQp</code> <strong class=\"purple\">must</strong> be zero for each element of the <code>pNaluSliceSegmentEntries</code> member of the <a href=\"#VkVideoEncodeH265PictureInfoKHR\">VkVideoEncodeH265PictureInfoKHR</a> structure included in the <code>pNext</code> chain of <code>pEncodeInfo</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-constantQp-08273",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code> and the current <a href=\"#encode-rate-control-modes\">rate control mode</a> is <code>VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR</code>, then <a href=\"#VkVideoEncodeH265NaluSliceSegmentInfoKHR\">VkVideoEncodeH265NaluSliceSegmentInfoKHR</a>::<code>constantQp</code> <strong class=\"purple\">must</strong> be between <a href=\"#VkVideoEncodeH265CapabilitiesKHR\">VkVideoEncodeH265CapabilitiesKHR</a>::<code>minQp</code> and <a href=\"#VkVideoEncodeH265CapabilitiesKHR\">VkVideoEncodeH265CapabilitiesKHR</a>::<code>maxQp</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the video profile the bound video session was created with, for each element of the <code>pNaluSliceSegmentEntries</code> member of the <a href=\"#VkVideoEncodeH265PictureInfoKHR\">VkVideoEncodeH265PictureInfoKHR</a> structure included in the <code>pNext</code> chain of <code>pEncodeInfo</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-constantQp-08274",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code> and <a href=\"#VkVideoEncodeH265CapabilitiesKHR\">VkVideoEncodeH265CapabilitiesKHR</a>::<code>flags</code> does not include <code>VK_VIDEO_ENCODE_H265_CAPABILITY_PER_SLICE_SEGMENT_CONSTANT_QP_BIT_KHR</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the video profile the bound video session was created with, then <a href=\"#VkVideoEncodeH265NaluSliceSegmentInfoKHR\">VkVideoEncodeH265NaluSliceSegmentInfoKHR</a>::<code>constantQp</code> <strong class=\"purple\">must</strong> have the same value for each element of the <code>pNaluSliceSegmentEntries</code> member of the <a href=\"#VkVideoEncodeH264PictureInfoKHR\">VkVideoEncodeH264PictureInfoKHR</a> structure included in the <code>pNext</code> chain of <code>pEncodeInfo</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-naluSliceSegmentEntryCount-08307",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code>, then the <code>naluSliceSegmentEntryCount</code> member of the <a href=\"#VkVideoEncodeH265PictureInfoKHR\">VkVideoEncodeH265PictureInfoKHR</a> structure included in the <code>pNext</code> chain of <code>pEncodeInfo</code> <strong class=\"purple\">must</strong> be less than or equal to <code>minCodingBlockExtent.width</code> multiplied by <code>minCodingBlockExtent.height</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-naluSliceSegmentEntryCount-08313",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code> and <a href=\"#VkVideoEncodeH265CapabilitiesKHR\">VkVideoEncodeH265CapabilitiesKHR</a>::<code>flags</code> does not include <code>VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_KHR</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the video profile the bound video session was created with, then the <code>naluSliceSegmentEntryCount</code> member of the <a href=\"#VkVideoEncodeH265PictureInfoKHR\">VkVideoEncodeH265PictureInfoKHR</a> structure included in the <code>pNext</code> chain of <code>pEncodeInfo</code> <strong class=\"purple\">must</strong> be less than or equal to <code>minCodingBlockExtent.height</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-pNext-08354",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code>, the <code>pNext</code> chain of <code>pEncodeInfo</code> includes a <a href=\"#VkVideoEncodeH265PictureInfoKHR\">VkVideoEncodeH265PictureInfoKHR</a> structure, and <code>pEncodeInfo-&gt;referenceSlotCount</code> is greater than zero, then <a href=\"#VkVideoEncodeH265PictureInfoKHR\">VkVideoEncodeH265PictureInfoKHR</a>::<code>pStdPictureInfo-&gt;pRefLists</code> <strong class=\"purple\">must</strong> not be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-pNext-08344",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code>, the <code>pNext</code> chain of <code>pEncodeInfo</code> includes a <a href=\"#VkVideoEncodeH265PictureInfoKHR\">VkVideoEncodeH265PictureInfoKHR</a> structure, and <a href=\"#VkVideoEncodeH265PictureInfoKHR\">VkVideoEncodeH265PictureInfoKHR</a>::<code>pStdPictureInfo-&gt;pRefLists</code> is not <code>NULL</code>, then each element of the <code>RefPicList0</code> and <code>RefPicList1</code> array members of the <code>StdVideoEncodeH265ReferenceListsInfo</code> structure pointed to by <a href=\"#VkVideoEncodeH265PictureInfoKHR\">VkVideoEncodeH265PictureInfoKHR</a>::<code>pStdPictureInfo-&gt;pRefLists</code> <strong class=\"purple\">must</strong> either be <code>STD_VIDEO_H265_NO_REFERENCE_PICTURE</code> or <strong class=\"purple\">must</strong> equal the <code>slotIndex</code> member of one of the elements of <code>pEncodeInfo-&gt;pReferenceSlots</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-pNext-08355",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code>, the <code>pNext</code> chain of <code>pEncodeInfo</code> includes a <a href=\"#VkVideoEncodeH265PictureInfoKHR\">VkVideoEncodeH265PictureInfoKHR</a> structure, and <code>pEncodeInfo-&gt;referenceSlotCount</code> is greater than zero, then the <code>slotIndex</code> member of each element of <code>pEncodeInfo-&gt;pReferenceSlots</code> <strong class=\"purple\">must</strong> equal one of the elements of the <code>RefPicList0</code> or <code>RefPicList1</code> array members of the <code>StdVideoEncodeH265ReferenceListsInfo</code> structure pointed to by <a href=\"#VkVideoEncodeH265PictureInfoKHR\">VkVideoEncodeH265PictureInfoKHR</a>::<code>pStdPictureInfo-&gt;pRefLists</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-maxPPictureL0ReferenceCount-08345",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code> and <a href=\"#VkVideoEncodeH265CapabilitiesKHR\">VkVideoEncodeH265CapabilitiesKHR</a>::<code>maxPPictureL0ReferenceCount</code> is zero, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the video profile the bound video session was created with, then <code>h265PictureType</code> and each element of <code>h265L0PictureTypes</code> and <code>h265L1PictureTypes</code> <strong class=\"purple\">must</strong> not be <code>STD_VIDEO_H265_PICTURE_TYPE_P</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-maxBPictureL0ReferenceCount-08346",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code> and <a href=\"#VkVideoEncodeH265CapabilitiesKHR\">VkVideoEncodeH265CapabilitiesKHR</a>::<code>maxBPictureL0ReferenceCount</code> and <a href=\"#VkVideoEncodeH265CapabilitiesKHR\">VkVideoEncodeH265CapabilitiesKHR</a>::<code>maxL1ReferenceCount</code> are both zero, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the video profile the bound video session was created with, then <code>h265PictureType</code> and each element of <code>h265L0PictureTypes</code> and <code>h265L1PictureTypes</code> <strong class=\"purple\">must</strong> not be <code>STD_VIDEO_H265_PICTURE_TYPE_B</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-flags-08347",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code> and <a href=\"#VkVideoEncodeH265CapabilitiesKHR\">VkVideoEncodeH265CapabilitiesKHR</a>::<code>flags</code> does not include <code>VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the video profile the bound video session was created with, then each element of <code>h265L0PictureTypes</code> <strong class=\"purple\">must</strong> not be <code>STD_VIDEO_H264_PICTURE_TYPE_B</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-flags-08348",
          "text": "If the bound video session was created with the video codec operation <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code> and <a href=\"#VkVideoEncodeH265CapabilitiesKHR\">VkVideoEncodeH265CapabilitiesKHR</a>::<code>flags</code> does not include <code>VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the video profile the bound video session was created with, then each element of <code>h265L1PictureTypes</code> <strong class=\"purple\">must</strong> not be <code>STD_VIDEO_H265_PICTURE_TYPE_B</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-pEncodeInfo-parameter",
          "text": "<code>pEncodeInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkVideoEncodeInfoKHR\">VkVideoEncodeInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support encode operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called inside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEncodeVideoKHR-bufferlevel",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoEncodeInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoEncodeInfoKHR-dstBuffer-08236",
          "text": "<code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR</code> set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeInfoKHR-dstBufferOffset-08237",
          "text": "<code>dstBufferOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>dstBuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeInfoKHR-dstBufferRange-08238",
          "text": "<code>dstBufferRange</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>dstBuffer</code> minus <code>dstBufferOffset</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeInfoKHR-pSetupReferenceSlot-08239",
          "text": "If <code>pSetupReferenceSlot</code> is not <code>NULL</code>, then its <code>slotIndex</code> member <strong class=\"purple\">must</strong> not be negative",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeInfoKHR-pSetupReferenceSlot-08240",
          "text": "If <code>pSetupReferenceSlot</code> is not <code>NULL</code>, then its <code>pPictureResource</code> <strong class=\"purple\">must</strong> not be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeInfoKHR-slotIndex-08241",
          "text": "The <code>slotIndex</code> member of each element of <code>pReferenceSlots</code> <strong class=\"purple\">must</strong> not be negative",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeInfoKHR-pPictureResource-08242",
          "text": "The <code>pPictureResource</code> member of each element of <code>pReferenceSlots</code> <strong class=\"purple\">must</strong> not be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeInfoKHR-pNext-pNext",
          "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=\"#VkVideoEncodeH264PictureInfoKHR\">VkVideoEncodeH264PictureInfoKHR</a>, <a href=\"#VkVideoEncodeH265PictureInfoKHR\">VkVideoEncodeH265PictureInfoKHR</a>, or <a href=\"#VkVideoInlineQueryInfoKHR\">VkVideoInlineQueryInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeInfoKHR-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeInfoKHR-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeInfoKHR-dstBuffer-parameter",
          "text": "<code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeInfoKHR-srcPictureResource-parameter",
          "text": "<code>srcPictureResource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkVideoPictureResourceInfoKHR\">VkVideoPictureResourceInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeInfoKHR-pSetupReferenceSlot-parameter",
          "text": "If <code>pSetupReferenceSlot</code> is not <code>NULL</code>, <code>pSetupReferenceSlot</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkVideoReferenceSlotInfoKHR\">VkVideoReferenceSlotInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeInfoKHR-pReferenceSlots-parameter",
          "text": "If <code>referenceSlotCount</code> is not <code>0</code>, <code>pReferenceSlots</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>referenceSlotCount</code> valid <a href=\"#VkVideoReferenceSlotInfoKHR\">VkVideoReferenceSlotInfoKHR</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoEncodeRateControlInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoEncodeRateControlInfoKHR-rateControlMode-08248",
          "text": "If <code>rateControlMode</code> is <code>VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DEFAULT_KHR</code> or <code>VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR</code>, then <code>layerCount</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeRateControlInfoKHR-rateControlMode-08275",
          "text": "If <code>rateControlMode</code> is <code>VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR</code> or <code>VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR</code>, then <code>layerCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeRateControlInfoKHR-rateControlMode-08244",
          "text": "If <code>rateControlMode</code> is not <code>VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DEFAULT_KHR</code>, then it <strong class=\"purple\">must</strong> specify one of the bits included in <a href=\"#VkVideoEncodeCapabilitiesKHR\">VkVideoEncodeCapabilitiesKHR</a>::<code>rateControlModes</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the used video profile",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeRateControlInfoKHR-layerCount-08245",
          "text": "<code>layerCount</code> member <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkVideoEncodeCapabilitiesKHR\">VkVideoEncodeCapabilitiesKHR</a>::<code>maxRateControlLayers</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the used video profile",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeRateControlInfoKHR-pLayers-08276",
          "text": "For each element of <code>pLayers</code>, its <code>averageBitrate</code> member <strong class=\"purple\">must</strong> be between <code>1</code> and <a href=\"#VkVideoEncodeCapabilitiesKHR\">VkVideoEncodeCapabilitiesKHR</a>::<code>maxBitrate</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the used video profile",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeRateControlInfoKHR-pLayers-08277",
          "text": "For each element of <code>pLayers</code>, its <code>maxBitrate</code> member <strong class=\"purple\">must</strong> be between <code>1</code> and <a href=\"#VkVideoEncodeCapabilitiesKHR\">VkVideoEncodeCapabilitiesKHR</a>::<code>maxBitrate</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the used video profile",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeRateControlInfoKHR-rateControlMode-08356",
          "text": "If <code>rateControlMode</code> is <code>VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR</code>, then for each element of <code>pLayers</code>, its <code>averageBitrate</code> member <strong class=\"purple\">must</strong> equal its <code>maxBitrate</code> member",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeRateControlInfoKHR-rateControlMode-08278",
          "text": "If <code>rateControlMode</code> is <code>VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR</code>, then for each element of <code>pLayers</code>, its <code>averageBitrate</code> member <strong class=\"purple\">must</strong> be less than or equal to its <code>maxBitrate</code> member",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeRateControlInfoKHR-layerCount-08357",
          "text": "If <code>layerCount</code> is not zero, then <code>virtualBufferSizeInMs</code> <strong class=\"purple\">must</strong> be greater than zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeRateControlInfoKHR-layerCount-08358",
          "text": "If <code>layerCount</code> is not zero, then <code>initialVirtualBufferSizeInMs</code> <strong class=\"purple\">must</strong> be less than <code>virtualBufferSizeInMs</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeRateControlInfoKHR-videoCodecOperation-07022",
          "text": "If the <code>videoCodecOperation</code> of the used video profile is <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR</code>, the <code>pNext</code> chain this structure is included in also includes an instance of the <a href=\"#VkVideoEncodeH264RateControlInfoKHR\">VkVideoEncodeH264RateControlInfoKHR</a> structure, and <code>layerCount</code> is greater than <code>1</code>, then <code>layerCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkVideoEncodeH264RateControlInfoKHR\">VkVideoEncodeH264RateControlInfoKHR</a>::<code>temporalLayerCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeRateControlInfoKHR-videoCodecOperation-07025",
          "text": "If the <code>videoCodecOperation</code> of the used video profile is <code>VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR</code>, the <code>pNext</code> chain this structure is included in also includes an instance of the <a href=\"#VkVideoEncodeH265RateControlInfoKHR\">VkVideoEncodeH265RateControlInfoKHR</a> structure, and <code>layerCount</code> is greater than <code>1</code>, then <code>layerCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkVideoEncodeH265RateControlInfoKHR\">VkVideoEncodeH265RateControlInfoKHR</a>::<code>subLayerCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeRateControlInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeRateControlInfoKHR-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeRateControlInfoKHR-rateControlMode-parameter",
          "text": "If <code>rateControlMode</code> is not <code>0</code>, <code>rateControlMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkVideoEncodeRateControlModeFlagBitsKHR\">VkVideoEncodeRateControlModeFlagBitsKHR</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeRateControlInfoKHR-pLayers-parameter",
          "text": "If <code>layerCount</code> is not <code>0</code>, <code>pLayers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>layerCount</code> valid <a href=\"#VkVideoEncodeRateControlLayerInfoKHR\">VkVideoEncodeRateControlLayerInfoKHR</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoEncodeRateControlLayerInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoEncodeRateControlLayerInfoKHR-frameRateNumerator-08350",
          "text": "<code>frameRateNumerator</code> <strong class=\"purple\">must</strong> be greater than zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeRateControlLayerInfoKHR-frameRateDenominator-08351",
          "text": "<code>frameRateDenominator</code> <strong class=\"purple\">must</strong> be greater than zero",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeRateControlLayerInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeRateControlLayerInfoKHR-pNext-pNext",
          "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=\"#VkVideoEncodeH264RateControlLayerInfoKHR\">VkVideoEncodeH264RateControlLayerInfoKHR</a> or <a href=\"#VkVideoEncodeH265RateControlLayerInfoKHR\">VkVideoEncodeH265RateControlLayerInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeRateControlLayerInfoKHR-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoEncodeH264ProfileInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoEncodeH264ProfileInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_INFO_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoEncodeH264CapabilitiesKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoEncodeH264CapabilitiesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoEncodeH264QualityLevelPropertiesKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoEncodeH264QualityLevelPropertiesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoEncodeH264SessionCreateInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoEncodeH264SessionCreateInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoEncodeH264SessionParametersCreateInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoEncodeH264SessionParametersCreateInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH264SessionParametersCreateInfoKHR-pParametersAddInfo-parameter",
          "text": "If <code>pParametersAddInfo</code> is not <code>NULL</code>, <code>pParametersAddInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkVideoEncodeH264SessionParametersAddInfoKHR\">VkVideoEncodeH264SessionParametersAddInfoKHR</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoEncodeH264SessionParametersAddInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoEncodeH264SessionParametersAddInfoKHR-None-04837",
          "text": "The <code>seq_parameter_set_id</code> member of each <code>StdVideoH264SequenceParameterSet</code> structure specified in the elements of <code>pStdSPSs</code> <strong class=\"purple\">must</strong> be unique within <code>pStdSPSs</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH264SessionParametersAddInfoKHR-None-04838",
          "text": "The pair constructed from the <code>seq_parameter_set_id</code> and <code>pic_parameter_set_id</code> members of each <code>StdVideoH264PictureParameterSet</code> structure specified in the elements of <code>pStdPPSs</code> <strong class=\"purple\">must</strong> be unique within <code>pStdPPSs</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH264SessionParametersAddInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH264SessionParametersAddInfoKHR-pStdSPSs-parameter",
          "text": "If <code>stdSPSCount</code> is not <code>0</code>, and <code>pStdSPSs</code> is not <code>NULL</code>, <code>pStdSPSs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stdSPSCount</code> <code>StdVideoH264SequenceParameterSet</code> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH264SessionParametersAddInfoKHR-pStdPPSs-parameter",
          "text": "If <code>stdPPSCount</code> is not <code>0</code>, and <code>pStdPPSs</code> is not <code>NULL</code>, <code>pStdPPSs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stdPPSCount</code> <code>StdVideoH264PictureParameterSet</code> values",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoEncodeH264SessionParametersGetInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoEncodeH264SessionParametersGetInfoKHR-writeStdSPS-08279",
          "text": "At least one of <code>writeStdSPS</code> and <code>writeStdPPS</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH264SessionParametersGetInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoEncodeH264SessionParametersFeedbackInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoEncodeH264SessionParametersFeedbackInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoEncodeH264PictureInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoEncodeH264PictureInfoKHR-naluSliceEntryCount-08301",
          "text": "<code>naluSliceEntryCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <a href=\"#VkVideoEncodeH264CapabilitiesKHR\">VkVideoEncodeH264CapabilitiesKHR</a>::<code>maxSliceCount</code>, inclusive, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the used video profile",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH264PictureInfoKHR-flags-08304",
          "text": "If <a href=\"#VkVideoEncodeH264CapabilitiesKHR\">VkVideoEncodeH264CapabilitiesKHR</a>::<code>flags</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the used video profile, does not include <code>VK_VIDEO_ENCODE_H264_CAPABILITY_GENERATE_PREFIX_NALU_BIT_KHR</code>, then <code>generatePrefixNalu</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH264PictureInfoKHR-flags-08314",
          "text": "If <a href=\"#VkVideoEncodeH264CapabilitiesKHR\">VkVideoEncodeH264CapabilitiesKHR</a>::<code>flags</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the used video profile, does not include <code>VK_VIDEO_ENCODE_H264_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR</code> and the slice corresponding to any element of <code>pNaluSliceEntries</code> uses <a href=\"#encode-h264-weighted-pred\">explicit weighted sample prediction</a>, then <a href=\"#VkVideoEncodeH264NaluSliceInfoKHR\">VkVideoEncodeH264NaluSliceInfoKHR</a>::<code>pStdSliceHeader-&gt;pWeightTable</code> <strong class=\"purple\">must</strong> not be <code>NULL</code> for that element of <code>pNaluSliceEntries</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH264PictureInfoKHR-flags-08315",
          "text": "If <a href=\"#VkVideoEncodeH264CapabilitiesKHR\">VkVideoEncodeH264CapabilitiesKHR</a>::<code>flags</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the used video profile, does not include <code>VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_KHR</code>, then <a href=\"#VkVideoEncodeH264NaluSliceInfoKHR\">VkVideoEncodeH264NaluSliceInfoKHR</a>::<code>pStdSliceHeader-&gt;slice_type</code> <strong class=\"purple\">must</strong> be identical for all elements of <code>pNaluSliceEntries</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH264PictureInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PICTURE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH264PictureInfoKHR-pNaluSliceEntries-parameter",
          "text": "<code>pNaluSliceEntries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>naluSliceEntryCount</code> valid <a href=\"#VkVideoEncodeH264NaluSliceInfoKHR\">VkVideoEncodeH264NaluSliceInfoKHR</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH264PictureInfoKHR-pStdPictureInfo-parameter",
          "text": "<code>pStdPictureInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>StdVideoEncodeH264PictureInfo</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH264PictureInfoKHR-naluSliceEntryCount-arraylength",
          "text": "<code>naluSliceEntryCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoEncodeH264NaluSliceInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoEncodeH264NaluSliceInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH264NaluSliceInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH264NaluSliceInfoKHR-pStdSliceHeader-parameter",
          "text": "<code>pStdSliceHeader</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>StdVideoEncodeH264SliceHeader</code> value",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoEncodeH264DpbSlotInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoEncodeH264DpbSlotInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH264DpbSlotInfoKHR-pStdReferenceInfo-parameter",
          "text": "<code>pStdReferenceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>StdVideoEncodeH264ReferenceInfo</code> value",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoEncodeH264RateControlInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoEncodeH264RateControlInfoKHR-flags-08280",
          "text": "If <a href=\"#VkVideoEncodeH264CapabilitiesKHR\">VkVideoEncodeH264CapabilitiesKHR</a>::<code>flags</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the used video profile, does not include <code>VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_KHR</code>, then <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_VIDEO_ENCODE_H264_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH264RateControlInfoKHR-flags-08281",
          "text": "If <code>flags</code> contains <code>VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR</code> or <code>VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR</code>, then it <strong class=\"purple\">must</strong> also contain <code>VK_VIDEO_ENCODE_H264_RATE_CONTROL_REGULAR_GOP_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH264RateControlInfoKHR-flags-08282",
          "text": "If <code>flags</code> contains <code>VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR</code>, then it <strong class=\"purple\">must</strong> not also contain <code>VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH264RateControlInfoKHR-flags-08283",
          "text": "If <code>flags</code> contains <code>VK_VIDEO_ENCODE_H264_RATE_CONTROL_REGULAR_GOP_BIT_KHR</code>, then <code>gopFrameCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH264RateControlInfoKHR-idrPeriod-08284",
          "text": "If <code>idrPeriod</code> is not <code>0</code>, then it <strong class=\"purple\">must</strong> be greater than or equal to <code>gopFrameCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH264RateControlInfoKHR-consecutiveBFrameCount-08285",
          "text": "If <code>consecutiveBFrameCount</code> is not <code>0</code>, then it <strong class=\"purple\">must</strong> be less than <code>gopFrameCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH264RateControlInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH264RateControlInfoKHR-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkVideoEncodeH264RateControlFlagBitsKHR\">VkVideoEncodeH264RateControlFlagBitsKHR</a> values",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoEncodeH264RateControlLayerInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoEncodeH264RateControlLayerInfoKHR-useMinQp-08286",
          "text": "If <code>useMinQp</code> is <code>VK_TRUE</code>, then the <code>qpI</code>, <code>qpP</code>, and <code>qpB</code> members of <code>minQp</code> <strong class=\"purple\">must</strong> all be between <a href=\"#VkVideoEncodeH264CapabilitiesKHR\">VkVideoEncodeH264CapabilitiesKHR</a>::<code>minQp</code> and <a href=\"#VkVideoEncodeH264CapabilitiesKHR\">VkVideoEncodeH264CapabilitiesKHR</a>::<code>maxQp</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the used video profile",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH264RateControlLayerInfoKHR-useMaxQp-08287",
          "text": "If <code>useMaxQp</code> is <code>VK_TRUE</code>, then the <code>qpI</code>, <code>qpP</code>, and <code>qpB</code> members of <code>maxQp</code> <strong class=\"purple\">must</strong> all be between <a href=\"#VkVideoEncodeH264CapabilitiesKHR\">VkVideoEncodeH264CapabilitiesKHR</a>::<code>minQp</code> and <a href=\"#VkVideoEncodeH264CapabilitiesKHR\">VkVideoEncodeH264CapabilitiesKHR</a>::<code>maxQp</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the used video profile",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH264RateControlLayerInfoKHR-useMinQp-08288",
          "text": "If <code>useMinQp</code> is <code>VK_TRUE</code> and <a href=\"#VkVideoEncodeH264CapabilitiesKHR\">VkVideoEncodeH264CapabilitiesKHR</a>::<code>flags</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the used video profile, does not include <code>VK_VIDEO_ENCODE_H264_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR</code>, then the <code>qpI</code>, <code>qpP</code>, and <code>qpB</code> members of <code>minQp</code> <strong class=\"purple\">must</strong> all specify the same value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH264RateControlLayerInfoKHR-useMaxQp-08289",
          "text": "If <code>useMaxQp</code> is <code>VK_TRUE</code> and <a href=\"#VkVideoEncodeH264CapabilitiesKHR\">VkVideoEncodeH264CapabilitiesKHR</a>::<code>flags</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the used video profile, does not include <code>VK_VIDEO_ENCODE_H264_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR</code>, then the <code>qpI</code>, <code>qpP</code>, and <code>qpB</code> members of <code>maxQp</code> <strong class=\"purple\">must</strong> all specify the same value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH264RateControlLayerInfoKHR-useMinQp-08374",
          "text": "If <code>useMinQp</code> and <code>useMaxQp</code> are both <code>VK_TRUE</code>, then the <code>qpI</code>, <code>qpP</code>, and <code>qpB</code> members of <code>minQp</code> <strong class=\"purple\">must</strong> all be less than or equal to the respective members of <code>maxQp</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH264RateControlLayerInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH264RateControlLayerInfoKHR-minQp-parameter",
          "text": "<code>minQp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkVideoEncodeH264QpKHR\">VkVideoEncodeH264QpKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH264RateControlLayerInfoKHR-maxQp-parameter",
          "text": "<code>maxQp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkVideoEncodeH264QpKHR\">VkVideoEncodeH264QpKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH264RateControlLayerInfoKHR-maxFrameSize-parameter",
          "text": "<code>maxFrameSize</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkVideoEncodeH264FrameSizeKHR\">VkVideoEncodeH264FrameSizeKHR</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoEncodeH264GopRemainingFrameInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoEncodeH264GopRemainingFrameInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoEncodeH265ProfileInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoEncodeH265ProfileInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_INFO_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoEncodeH265CapabilitiesKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoEncodeH265CapabilitiesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoEncodeH265QualityLevelPropertiesKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoEncodeH265QualityLevelPropertiesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoEncodeH265SessionCreateInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoEncodeH265SessionCreateInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoEncodeH265SessionParametersCreateInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoEncodeH265SessionParametersCreateInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH265SessionParametersCreateInfoKHR-pParametersAddInfo-parameter",
          "text": "If <code>pParametersAddInfo</code> is not <code>NULL</code>, <code>pParametersAddInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkVideoEncodeH265SessionParametersAddInfoKHR\">VkVideoEncodeH265SessionParametersAddInfoKHR</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoEncodeH265SessionParametersAddInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoEncodeH265SessionParametersAddInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH265SessionParametersAddInfoKHR-pStdVPSs-parameter",
          "text": "If <code>stdVPSCount</code> is not <code>0</code>, and <code>pStdVPSs</code> is not <code>NULL</code>, <code>pStdVPSs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stdVPSCount</code> <code>StdVideoH265VideoParameterSet</code> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH265SessionParametersAddInfoKHR-pStdSPSs-parameter",
          "text": "If <code>stdSPSCount</code> is not <code>0</code>, and <code>pStdSPSs</code> is not <code>NULL</code>, <code>pStdSPSs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stdSPSCount</code> <code>StdVideoH265SequenceParameterSet</code> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH265SessionParametersAddInfoKHR-pStdPPSs-parameter",
          "text": "If <code>stdPPSCount</code> is not <code>0</code>, and <code>pStdPPSs</code> is not <code>NULL</code>, <code>pStdPPSs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stdPPSCount</code> <code>StdVideoH265PictureParameterSet</code> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH265SessionParametersAddInfoKHR-None-06438",
          "text": "The <code>vps_video_parameter_set_id</code> member of each <code>StdVideoH265VideoParameterSet</code> structure specified in the elements of <code>pStdVPSs</code> <strong class=\"purple\">must</strong> be unique within <code>pStdVPSs</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH265SessionParametersAddInfoKHR-None-06439",
          "text": "The pair constructed from the <code>sps_video_parameter_set_id</code> and <code>sps_seq_parameter_set_id</code> members of each <code>StdVideoH265SequenceParameterSet</code> structure specified in the elements of <code>pStdSPSs</code> <strong class=\"purple\">must</strong> be unique within <code>pStdSPSs</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH265SessionParametersAddInfoKHR-None-06440",
          "text": "The triplet constructed from the <code>sps_video_parameter_set_id</code>, <code>pps_seq_parameter_set_id</code>, and <code>pps_pic_parameter_set_id</code> members of each <code>StdVideoH265PictureParameterSet</code> structure specified in the elements of <code>pStdPPSs</code> <strong class=\"purple\">must</strong> be unique within <code>pStdPPSs</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoEncodeH265SessionParametersGetInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoEncodeH265SessionParametersGetInfoKHR-writeStdVPS-08290",
          "text": "At least one of <code>writeStdVPS</code>, <code>writeStdSPS</code>, and <code>writeStdPPS</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH265SessionParametersGetInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoEncodeH265SessionParametersFeedbackInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoEncodeH265SessionParametersFeedbackInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoEncodeH265PictureInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoEncodeH265PictureInfoKHR-naluSliceSegmentEntryCount-08306",
          "text": "<code>naluSliceSegmentEntryCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <a href=\"#VkVideoEncodeH265CapabilitiesKHR\">VkVideoEncodeH265CapabilitiesKHR</a>::<code>maxSliceSegmentCount</code>, inclusive, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the used video profile",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH265PictureInfoKHR-flags-08323",
          "text": "If <a href=\"#VkVideoEncodeH265CapabilitiesKHR\">VkVideoEncodeH265CapabilitiesKHR</a>::<code>flags</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the used video profile, does not include <code>VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILES_PER_SLICE_SEGMENT_BIT_KHR</code>, then <code>naluSliceSegmentEntryCount</code> <strong class=\"purple\">must</strong> be greater than or equal to the <a href=\"#encode-h265-tile-count\">number of H.265 tiles in the picture</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH265PictureInfoKHR-flags-08324",
          "text": "If <a href=\"#VkVideoEncodeH265CapabilitiesKHR\">VkVideoEncodeH265CapabilitiesKHR</a>::<code>flags</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the used video profile, does not include <code>VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_SEGMENTS_PER_TILE_BIT_KHR</code>, then <code>naluSliceSegmentEntryCount</code> <strong class=\"purple\">must</strong> be less than or equal to the <a href=\"#encode-h265-tile-count\">number of H.265 tiles in the picture</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH265PictureInfoKHR-flags-08316",
          "text": "If <a href=\"#VkVideoEncodeH265CapabilitiesKHR\">VkVideoEncodeH265CapabilitiesKHR</a>::<code>flags</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the used video profile, does not include <code>VK_VIDEO_ENCODE_H265_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR</code> and the slice segment corresponding to any element of <code>pNaluSliceSegmentEntries</code> uses <a href=\"#encode-h265-weighted-pred\">explicit weighted sample prediction</a>, then <a href=\"#VkVideoEncodeH265NaluSliceSegmentInfoKHR\">VkVideoEncodeH265NaluSliceSegmentInfoKHR</a>::<code>pStdSliceSegmentHeader-&gt;pWeightTable</code> <strong class=\"purple\">must</strong> not be <code>NULL</code> for that element of <code>pNaluSliceSegmentEntries</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH265PictureInfoKHR-flags-08317",
          "text": "If <a href=\"#VkVideoEncodeH265CapabilitiesKHR\">VkVideoEncodeH265CapabilitiesKHR</a>::<code>flags</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the used video profile, does not include <code>VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_SEGMENT_TYPE_BIT_KHR</code>, then <a href=\"#VkVideoEncodeH265NaluSliceSegmentInfoKHR\">VkVideoEncodeH265NaluSliceSegmentInfoKHR</a>::<code>pStdSliceSegmentHeader-&gt;slice_type</code> <strong class=\"purple\">must</strong> be identical for all elements of <code>pNaluSliceSegmentEntries</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH265PictureInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PICTURE_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH265PictureInfoKHR-pNaluSliceSegmentEntries-parameter",
          "text": "<code>pNaluSliceSegmentEntries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>naluSliceSegmentEntryCount</code> valid <a href=\"#VkVideoEncodeH265NaluSliceSegmentInfoKHR\">VkVideoEncodeH265NaluSliceSegmentInfoKHR</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH265PictureInfoKHR-pStdPictureInfo-parameter",
          "text": "<code>pStdPictureInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>StdVideoEncodeH265PictureInfo</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH265PictureInfoKHR-naluSliceSegmentEntryCount-arraylength",
          "text": "<code>naluSliceSegmentEntryCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoEncodeH265NaluSliceSegmentInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoEncodeH265NaluSliceSegmentInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH265NaluSliceSegmentInfoKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH265NaluSliceSegmentInfoKHR-pStdSliceSegmentHeader-parameter",
          "text": "<code>pStdSliceSegmentHeader</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>StdVideoEncodeH265SliceSegmentHeader</code> value",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoEncodeH265DpbSlotInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoEncodeH265DpbSlotInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH265DpbSlotInfoKHR-pStdReferenceInfo-parameter",
          "text": "<code>pStdReferenceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>StdVideoEncodeH265ReferenceInfo</code> value",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoEncodeH265RateControlInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoEncodeH265RateControlInfoKHR-flags-08291",
          "text": "If <a href=\"#VkVideoEncodeH265CapabilitiesKHR\">VkVideoEncodeH265CapabilitiesKHR</a>::<code>flags</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the used video profile, does not include <code>VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_KHR</code>, then <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_VIDEO_ENCODE_H265_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH265RateControlInfoKHR-flags-08292",
          "text": "If <code>flags</code> contains <code>VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR</code> or <code>VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR</code>, then it <strong class=\"purple\">must</strong> also contain <code>VK_VIDEO_ENCODE_H265_RATE_CONTROL_REGULAR_GOP_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH265RateControlInfoKHR-flags-08293",
          "text": "If <code>flags</code> contains <code>VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR</code>, then it <strong class=\"purple\">must</strong> not also contain <code>VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH265RateControlInfoKHR-flags-08294",
          "text": "If <code>flags</code> contains <code>VK_VIDEO_ENCODE_H265_RATE_CONTROL_REGULAR_GOP_BIT_KHR</code>, then <code>gopFrameCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH265RateControlInfoKHR-idrPeriod-08295",
          "text": "If <code>idrPeriod</code> is not <code>0</code>, then it <strong class=\"purple\">must</strong> be greater than or equal to <code>gopFrameCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH265RateControlInfoKHR-consecutiveBFrameCount-08296",
          "text": "If <code>consecutiveBFrameCount</code> is not <code>0</code>, then it <strong class=\"purple\">must</strong> be less than <code>gopFrameCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH265RateControlInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH265RateControlInfoKHR-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkVideoEncodeH265RateControlFlagBitsKHR\">VkVideoEncodeH265RateControlFlagBitsKHR</a> values",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoEncodeH265RateControlLayerInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoEncodeH265RateControlLayerInfoKHR-useMinQp-08297",
          "text": "If <code>useMinQp</code> is <code>VK_TRUE</code>, then the <code>qpI</code>, <code>qpP</code>, and <code>qpB</code> members of <code>minQp</code> <strong class=\"purple\">must</strong> all be between <a href=\"#VkVideoEncodeH265CapabilitiesKHR\">VkVideoEncodeH265CapabilitiesKHR</a>::<code>minQp</code> and <a href=\"#VkVideoEncodeH265CapabilitiesKHR\">VkVideoEncodeH265CapabilitiesKHR</a>::<code>maxQp</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the used video profile",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH265RateControlLayerInfoKHR-useMaxQp-08298",
          "text": "If <code>useMaxQp</code> is <code>VK_TRUE</code>, then the <code>qpI</code>, <code>qpP</code>, and <code>qpB</code> members of <code>maxQp</code> <strong class=\"purple\">must</strong> all be between <a href=\"#VkVideoEncodeH265CapabilitiesKHR\">VkVideoEncodeH265CapabilitiesKHR</a>::<code>minQp</code> and <a href=\"#VkVideoEncodeH265CapabilitiesKHR\">VkVideoEncodeH265CapabilitiesKHR</a>::<code>maxQp</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the used video profile",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH265RateControlLayerInfoKHR-useMinQp-08299",
          "text": "If <code>useMinQp</code> is <code>VK_TRUE</code> and <a href=\"#VkVideoEncodeH265CapabilitiesKHR\">VkVideoEncodeH265CapabilitiesKHR</a>::<code>flags</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the used video profile, does not include <code>VK_VIDEO_ENCODE_H265_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR</code>, then the <code>qpI</code>, <code>qpP</code>, and <code>qpB</code> members of <code>minQp</code> <strong class=\"purple\">must</strong> all specify the same value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH265RateControlLayerInfoKHR-useMaxQp-08300",
          "text": "If <code>useMaxQp</code> is <code>VK_TRUE</code> and <a href=\"#VkVideoEncodeH265CapabilitiesKHR\">VkVideoEncodeH265CapabilitiesKHR</a>::<code>flags</code>, as returned by <a href=\"#vkGetPhysicalDeviceVideoCapabilitiesKHR\">vkGetPhysicalDeviceVideoCapabilitiesKHR</a> for the used video profile, does not include <code>VK_VIDEO_ENCODE_H265_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR</code>, then the <code>qpI</code>, <code>qpP</code>, and <code>qpB</code> members of <code>maxQp</code> <strong class=\"purple\">must</strong> all specify the same value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH265RateControlLayerInfoKHR-useMinQp-08375",
          "text": "If <code>useMinQp</code> and <code>useMaxQp</code> are both <code>VK_TRUE</code>, then the <code>qpI</code>, <code>qpP</code>, and <code>qpB</code> members of <code>minQp</code> <strong class=\"purple\">must</strong> all be less than or equal to the respective members of <code>maxQp</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH265RateControlLayerInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH265RateControlLayerInfoKHR-minQp-parameter",
          "text": "<code>minQp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkVideoEncodeH265QpKHR\">VkVideoEncodeH265QpKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH265RateControlLayerInfoKHR-maxQp-parameter",
          "text": "<code>maxQp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkVideoEncodeH265QpKHR\">VkVideoEncodeH265QpKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkVideoEncodeH265RateControlLayerInfoKHR-maxFrameSize-parameter",
          "text": "<code>maxFrameSize</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkVideoEncodeH265FrameSizeKHR\">VkVideoEncodeH265FrameSizeKHR</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkVideoEncodeH265GopRemainingFrameInfoKHR": {
      "core": [
        {
          "vuid": "VUID-VkVideoEncodeH265GopRemainingFrameInfoKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_GOP_REMAINING_FRAME_INFO_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceOpticalFlowImageFormatsNV": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceOpticalFlowImageFormatsNV-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceOpticalFlowImageFormatsNV-pOpticalFlowImageFormatInfo-parameter",
          "text": "<code>pOpticalFlowImageFormatInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkOpticalFlowImageFormatInfoNV\">VkOpticalFlowImageFormatInfoNV</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceOpticalFlowImageFormatsNV-pFormatCount-parameter",
          "text": "<code>pFormatCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceOpticalFlowImageFormatsNV-pImageFormatProperties-parameter",
          "text": "If the value referenced by <code>pFormatCount</code> is not <code>0</code>, and <code>pImageFormatProperties</code> is not <code>NULL</code>, <code>pImageFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pFormatCount</code> <a href=\"#VkOpticalFlowImageFormatPropertiesNV\">VkOpticalFlowImageFormatPropertiesNV</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkOpticalFlowImageFormatInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkOpticalFlowImageFormatInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkOpticalFlowImageFormatInfoNV-usage-parameter",
          "text": "<code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkOpticalFlowUsageFlagBitsNV\">VkOpticalFlowUsageFlagBitsNV</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkOpticalFlowImageFormatInfoNV-usage-requiredbitmask",
          "text": "<code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkOpticalFlowImageFormatPropertiesNV": {
      "core": [
        {
          "vuid": "VUID-VkOpticalFlowImageFormatPropertiesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkOpticalFlowImageFormatPropertiesNV-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateOpticalFlowSessionNV": {
      "core": [
        {
          "vuid": "VUID-vkCreateOpticalFlowSessionNV-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateOpticalFlowSessionNV-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkOpticalFlowSessionCreateInfoNV\">VkOpticalFlowSessionCreateInfoNV</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateOpticalFlowSessionNV-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateOpticalFlowSessionNV-pSession-parameter",
          "text": "<code>pSession</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkOpticalFlowSessionNV\">VkOpticalFlowSessionNV</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkOpticalFlowSessionCreateInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-width-07581",
          "text": "<code>width</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>VkPhysicalDeviceOpticalFlowPropertiesNV</code>::<code>minWidth</code> and less than or equal to <code>VkPhysicalDeviceOpticalFlowPropertiesNV</code>::<code>maxWidth</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-height-07582",
          "text": "<code>height</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>VkPhysicalDeviceOpticalFlowPropertiesNV</code>::<code>minHeight</code> and less than or equal to <code>VkPhysicalDeviceOpticalFlowPropertiesNV</code>::<code>maxHeight</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-imageFormat-07583",
          "text": "<code>imageFormat</code> <strong class=\"purple\">must</strong> be one of the formats returned by <a href=\"#vkGetPhysicalDeviceOpticalFlowImageFormatsNV\">vkGetPhysicalDeviceOpticalFlowImageFormatsNV</a> for <code>VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-flowVectorFormat-07584",
          "text": "<code>flowVectorFormat</code> <strong class=\"purple\">must</strong> be one of the formats returned by <a href=\"#vkGetPhysicalDeviceOpticalFlowImageFormatsNV\">vkGetPhysicalDeviceOpticalFlowImageFormatsNV</a> for <code>VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-costFormat-07585",
          "text": "<code>costFormat</code> <strong class=\"purple\">must</strong> be one of the formats returned by <a href=\"#vkGetPhysicalDeviceOpticalFlowImageFormatsNV\">vkGetPhysicalDeviceOpticalFlowImageFormatsNV</a> for <code>VK_OPTICAL_FLOW_USAGE_COST_BIT_NV</code> if <code>VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV</code> is set in <code>flags</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-outputGridSize-07586",
          "text": "<code>outputGridSize</code> <strong class=\"purple\">must</strong> be exactly one of the bits reported in <code>VkPhysicalDeviceOpticalFlowPropertiesNV</code>::<code>supportedOutputGridSizes</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-hintGridSize-07587",
          "text": "<code>hintGridSize</code> <strong class=\"purple\">must</strong> be exactly one of the bits reported in <code>VkPhysicalDeviceOpticalFlowPropertiesNV</code>::<code>supportedHintGridSizes</code> if <code>VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV</code> is set in <code>flags</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-flags-07588",
          "text": "<code>VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV</code> <strong class=\"purple\">must</strong> not be set in <code>flags</code> if <code>VkPhysicalDeviceOpticalFlowPropertiesNV</code>::<code>hintSupported</code> is <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-flags-07589",
          "text": "<code>VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV</code> <strong class=\"purple\">must</strong> not be set in <code>flags</code> if <code>VkPhysicalDeviceOpticalFlowPropertiesNV</code>::<code>costSupported</code> is <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-flags-07590",
          "text": "<code>VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV</code> <strong class=\"purple\">must</strong> not be set in <code>flags</code> if <code>VkPhysicalDeviceOpticalFlowPropertiesNV</code>::<code>globalFlowSupported</code> is <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-flags-07591",
          "text": "<code>VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV</code> <strong class=\"purple\">must</strong> not be set in <code>flags</code> if <code>VkPhysicalDeviceOpticalFlowPropertiesNV</code>::<code>maxNumRegionsOfInterest</code> is 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-flags-07592",
          "text": "<code>VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV</code> <strong class=\"purple\">must</strong> not be set in <code>flags</code> if <code>VkPhysicalDeviceOpticalFlowPropertiesNV</code>::<code>bidirectionalFlowSupported</code> is <code>VK_FALSE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_INFO_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkOpticalFlowSessionCreatePrivateDataInfoNV\">VkOpticalFlowSessionCreatePrivateDataInfoNV</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-imageFormat-parameter",
          "text": "<code>imageFormat</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-flowVectorFormat-parameter",
          "text": "<code>flowVectorFormat</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-costFormat-parameter",
          "text": "If <code>costFormat</code> is not <code>0</code>, <code>costFormat</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-outputGridSize-parameter",
          "text": "<code>outputGridSize</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkOpticalFlowGridSizeFlagBitsNV\">VkOpticalFlowGridSizeFlagBitsNV</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-outputGridSize-requiredbitmask",
          "text": "<code>outputGridSize</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-hintGridSize-parameter",
          "text": "<code>hintGridSize</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkOpticalFlowGridSizeFlagBitsNV\">VkOpticalFlowGridSizeFlagBitsNV</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-performanceLevel-parameter",
          "text": "If <code>performanceLevel</code> is not <code>0</code>, <code>performanceLevel</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkOpticalFlowPerformanceLevelNV\">VkOpticalFlowPerformanceLevelNV</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkOpticalFlowSessionCreateFlagBitsNV\">VkOpticalFlowSessionCreateFlagBitsNV</a> values",
          "page": "vkspec"
        }
      ]
    },
    "VkOpticalFlowSessionCreatePrivateDataInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkOpticalFlowSessionCreatePrivateDataInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkOpticalFlowSessionCreatePrivateDataInfoNV-pPrivateData-parameter",
          "text": "<code>pPrivateData</code> <strong class=\"purple\">must</strong> be a pointer value",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroyOpticalFlowSessionNV": {
      "core": [
        {
          "vuid": "VUID-vkDestroyOpticalFlowSessionNV-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyOpticalFlowSessionNV-session-parameter",
          "text": "<code>session</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkOpticalFlowSessionNV\">VkOpticalFlowSessionNV</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyOpticalFlowSessionNV-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyOpticalFlowSessionNV-session-parent",
          "text": "<code>session</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkBindOpticalFlowSessionImageNV": {
      "core": [
        {
          "vuid": "VUID-vkBindOpticalFlowSessionImageNV-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindOpticalFlowSessionImageNV-session-parameter",
          "text": "<code>session</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkOpticalFlowSessionNV\">VkOpticalFlowSessionNV</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindOpticalFlowSessionImageNV-bindingPoint-parameter",
          "text": "<code>bindingPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkOpticalFlowSessionBindingPointNV\">VkOpticalFlowSessionBindingPointNV</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindOpticalFlowSessionImageNV-view-parameter",
          "text": "If <code>view</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>view</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageView\">VkImageView</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindOpticalFlowSessionImageNV-layout-parameter",
          "text": "<code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindOpticalFlowSessionImageNV-session-parent",
          "text": "<code>session</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkBindOpticalFlowSessionImageNV-view-parent",
          "text": "If <code>view</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdOpticalFlowExecuteNV": {
      "core": [
        {
          "vuid": "VUID-vkCmdOpticalFlowExecuteNV-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdOpticalFlowExecuteNV-session-parameter",
          "text": "<code>session</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkOpticalFlowSessionNV\">VkOpticalFlowSessionNV</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdOpticalFlowExecuteNV-pExecuteInfo-parameter",
          "text": "<code>pExecuteInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkOpticalFlowExecuteInfoNV\">VkOpticalFlowExecuteInfoNV</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdOpticalFlowExecuteNV-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdOpticalFlowExecuteNV-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support optical flow operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdOpticalFlowExecuteNV-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdOpticalFlowExecuteNV-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdOpticalFlowExecuteNV-commonparent",
          "text": "Both of <code>commandBuffer</code>, and <code>session</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkOpticalFlowExecuteInfoNV": {
      "core": [
        {
          "vuid": "VUID-VkOpticalFlowExecuteInfoNV-regionCount-07593",
          "text": "<code>regionCount</code> <strong class=\"purple\">must</strong> be 0 if <code>VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV</code> was not set for <code>VkOpticalFlowSessionNV</code> on which this command is operating",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkOpticalFlowExecuteInfoNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkOpticalFlowExecuteInfoNV-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkOpticalFlowExecuteInfoNV-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkOpticalFlowExecuteFlagBitsNV\">VkOpticalFlowExecuteFlagBitsNV</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkOpticalFlowExecuteInfoNV-pRegions-parameter",
          "text": "If <code>regionCount</code> is not <code>0</code>, <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> <a href=\"#VkRect2D\">VkRect2D</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateExecutionGraphPipelinesAMDX": {
      "core": [
        {
          "vuid": "VUID-vkCreateExecutionGraphPipelinesAMDX-shaderEnqueue-09124",
          "text": "The <a href=\"#features-shaderEnqueue\"><code>shaderEnqueue</code> feature</a> <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateExecutionGraphPipelinesAMDX-flags-09125",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateExecutionGraphPipelinesAMDX-flags-09126",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateExecutionGraphPipelinesAMDX-pipelineCache-09127",
          "text": "If <code>pipelineCache</code> was created with <code>VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT</code>, host access to <code>pipelineCache</code> <strong class=\"purple\">must</strong> be <a href=\"#fundamentals-threadingbehavior\">externally synchronized</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateExecutionGraphPipelinesAMDX-pNext-09616",
          "text": "If <a href=\"#VkPipelineBinaryInfoKHR\">VkPipelineBinaryInfoKHR</a>::<code>binaryCount</code> is not <code>0</code> for any element of <code>pCreateInfos</code>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateExecutionGraphPipelinesAMDX-pNext-09617",
          "text": "If a <a href=\"#VkPipelineCreateFlags2CreateInfoKHR\">VkPipelineCreateFlags2CreateInfoKHR</a> structure with the <code>VK_PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR</code> flag set is included in the <code>pNext</code> chain of any element of <code>pCreateInfos</code>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateExecutionGraphPipelinesAMDX-binaryCount-09620",
          "text": "If <a href=\"#VkPipelineBinaryInfoKHR\">VkPipelineBinaryInfoKHR</a>::<code>binaryCount</code> is not <code>0</code> for any element of <code>pCreateInfos</code>, <code>VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT</code> <strong class=\"purple\">must</strong> not be set in the <code>flags</code> of that element",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateExecutionGraphPipelinesAMDX-binaryCount-09621",
          "text": "If <a href=\"#VkPipelineBinaryInfoKHR\">VkPipelineBinaryInfoKHR</a>::<code>binaryCount</code> is not <code>0</code> for any element of <code>pCreateInfos</code>, <code>VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT</code> <strong class=\"purple\">must</strong> not be set in the <code>flags</code> of that element",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateExecutionGraphPipelinesAMDX-binaryCount-09622",
          "text": "If <a href=\"#VkPipelineBinaryInfoKHR\">VkPipelineBinaryInfoKHR</a>::<code>binaryCount</code> is not <code>0</code> for any element of <code>pCreateInfos</code>, <code>VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT</code> <strong class=\"purple\">must</strong> not be set in the <code>flags</code> of that element",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateExecutionGraphPipelinesAMDX-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateExecutionGraphPipelinesAMDX-pipelineCache-parameter",
          "text": "If <code>pipelineCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineCache\">VkPipelineCache</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateExecutionGraphPipelinesAMDX-pCreateInfos-parameter",
          "text": "<code>pCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> valid <a href=\"#VkExecutionGraphPipelineCreateInfoAMDX\">VkExecutionGraphPipelineCreateInfoAMDX</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateExecutionGraphPipelinesAMDX-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateExecutionGraphPipelinesAMDX-pPipelines-parameter",
          "text": "<code>pPipelines</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> <a href=\"#VkPipeline\">VkPipeline</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateExecutionGraphPipelinesAMDX-createInfoCount-arraylength",
          "text": "<code>createInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateExecutionGraphPipelinesAMDX-pipelineCache-parent",
          "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>",
          "page": "vkspec"
        }
      ]
    },
    "VkExecutionGraphPipelineCreateInfoAMDX": {
      "core": [
        {
          "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-None-09497",
          "text": "If the <code>pNext</code> chain does not include a <a href=\"#VkPipelineCreateFlags2CreateInfoKHR\">VkPipelineCreateFlags2CreateInfoKHR</a> structure, <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineCreateFlagBits\">VkPipelineCreateFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-07984",
          "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 execution graph <code>VkPipeline</code> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-07985",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-07986",
          "text": "If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be -1 or <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-layout-07987",
          "text": "If a push constant block is declared in a shader, a push constant range in <code>layout</code> <strong class=\"purple\">must</strong> match the shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-layout-10069",
          "text": "If a push constant block is declared in a shader, the block must be contained inside the push constant range in <code>layout</code> that matches the stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-layout-07988",
          "text": "If a <a href=\"#interfaces-resources\">resource variables</a> is declared in a shader, a descriptor slot in <code>layout</code> <strong class=\"purple\">must</strong> match the shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-layout-07990",
          "text": "If a <a href=\"#interfaces-resources\">resource variables</a> is declared in a shader, and the descriptor type is not <code>VK_DESCRIPTOR_TYPE_MUTABLE_EXT</code>, a descriptor slot in <code>layout</code> <strong class=\"purple\">must</strong> match the descriptor type",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-layout-07991",
          "text": "If a <a href=\"#interfaces-resources\">resource variables</a> is declared in a shader as an array, a descriptor slot in <code>layout</code> <strong class=\"purple\">must</strong> match the descriptor count",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-03365",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-03366",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-03367",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-03368",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-03369",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-03370",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-03576",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-04945",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-09007",
          "text": "If the <a href=\"#features-deviceGeneratedComputePipelines\"><code>VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV</code>::<code>deviceGeneratedComputePipelines</code></a> is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-09008",
          "text": "If <code>flags</code> includes <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a pointer to a valid instance of <a href=\"#VkComputePipelineIndirectBufferInfoNV\">VkComputePipelineIndirectBufferInfoNV</a> specifying the address where the pipeline&#8217;s metadata will be saved",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-flags-11007",
          "text": "If <code>flags</code> includes <code>VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT</code>, then the <a href=\"#features-deviceGeneratedCommandsEXT\"><code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-pipelineCreationCacheControl-02875",
          "text": "If the <a href=\"#features-pipelineCreationCacheControl\"><code>pipelineCreationCacheControl</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT</code> or <code>VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-stage-09128",
          "text": "The <code>stage</code> member of any element of <code>pStages</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_STAGE_COMPUTE_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-pStages-09129",
          "text": "The shader code for the entry point identified by each element of <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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-layout-09130",
          "text": "<code>layout</code> <strong class=\"purple\">must</strong> be <a href=\"#descriptorsets-pipelinelayout-consistency\">consistent</a> with the layout of the shaders specified in <code>pStages</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-pLibraryInfo-09131",
          "text": "If <code>pLibraryInfo</code> is not <code>NULL</code>, each element of its <code>pLibraries</code> member <strong class=\"purple\">must</strong> have been created with a <code>layout</code> that is compatible with the <code>layout</code> in this pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-layout-09132",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-pLibraryInfo-09133",
          "text": "If <code>pLibraryInfo</code> is not <code>NULL</code>, each element of <code>pLibraryInfo-&gt;libraries</code> <strong class=\"purple\">must</strong> be either a compute pipeline or an execution graph pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-None-09134",
          "text": "There <strong class=\"purple\">must</strong> be no two nodes in the pipeline that share both the same shader name and index, as specified by <a href=\"#VkPipelineShaderStageNodeCreateInfoAMDX\">VkPipelineShaderStageNodeCreateInfoAMDX</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-None-09135",
          "text": "There <strong class=\"purple\">must</strong> be no two nodes in the pipeline that share the same shader name and have input payload declarations with different sizes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-None-09136",
          "text": "There <strong class=\"purple\">must</strong> be no two nodes in the pipeline that share the same name but have different execution models",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-CoalescedInputCountAMDX-09137",
          "text": "There <strong class=\"purple\">must</strong> be no two nodes in the pipeline that share the same name where one includes <code>CoalescedInputCountAMDX</code> and the other does not",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-StaticNumWorkgroupsAMDX-09138",
          "text": "There <strong class=\"purple\">must</strong> be no two nodes in the pipeline that share the same name where one includes <code>StaticNumWorkgroupsAMDX</code> and the other does not",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-PayloadNodeNameAMDX-09139",
          "text": "If an output payload declared in any shader in the pipeline has a <code>PayloadNodeNameAMDX</code> decoration with a <code>Node</code> <code>Name</code> that matches the shader name of any other node in the graph, the size of the output payload <strong class=\"purple\">must</strong> match the size of the input payload in the matching node",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-pNext-pNext",
          "text": "Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineCompilerControlCreateInfoAMD\">VkPipelineCompilerControlCreateInfoAMD</a> or <a href=\"#VkPipelineCreationFeedbackCreateInfo\">VkPipelineCreationFeedbackCreateInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-pStages-parameter",
          "text": "If <code>stageCount</code> is not <code>0</code>, and <code>pStages</code> is not <code>NULL</code>, <code>pStages</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stageCount</code> valid <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-pLibraryInfo-parameter",
          "text": "If <code>pLibraryInfo</code> is not <code>NULL</code>, <code>pLibraryInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-layout-parameter",
          "text": "<code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExecutionGraphPipelineCreateInfoAMDX-commonparent",
          "text": "Both of <code>basePipelineHandle</code>, and <code>layout</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "VkPipelineShaderStageNodeCreateInfoAMDX": {
      "core": [
        {
          "vuid": "VUID-VkPipelineShaderStageNodeCreateInfoAMDX-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPipelineShaderStageNodeCreateInfoAMDX-pName-parameter",
          "text": "If <code>pName</code> is not <code>NULL</code>, <code>pName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string",
          "page": "vkspec"
        }
      ]
    },
    "vkGetExecutionGraphPipelineNodeIndexAMDX": {
      "core": [
        {
          "vuid": "VUID-vkGetExecutionGraphPipelineNodeIndexAMDX-pNodeInfo-09140",
          "text": "<code>pNodeInfo-&gt;pName</code> <strong class=\"purple\">must</strong> not be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetExecutionGraphPipelineNodeIndexAMDX-pNodeInfo-09141",
          "text": "<code>pNodeInfo-&gt;index</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_INDEX_UNUSED_AMDX</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetExecutionGraphPipelineNodeIndexAMDX-executionGraph-09142",
          "text": "There <strong class=\"purple\">must</strong> be a node in <code>executionGraph</code> with a shader name and index equal to <code>pNodeInfo-&gt;pName</code> and <code>pNodeInfo-&gt;index</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetExecutionGraphPipelineNodeIndexAMDX-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetExecutionGraphPipelineNodeIndexAMDX-executionGraph-parameter",
          "text": "<code>executionGraph</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetExecutionGraphPipelineNodeIndexAMDX-pNodeInfo-parameter",
          "text": "<code>pNodeInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineShaderStageNodeCreateInfoAMDX\">VkPipelineShaderStageNodeCreateInfoAMDX</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetExecutionGraphPipelineNodeIndexAMDX-pNodeIndex-parameter",
          "text": "<code>pNodeIndex</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetExecutionGraphPipelineNodeIndexAMDX-executionGraph-parent",
          "text": "<code>executionGraph</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetExecutionGraphPipelineScratchSizeAMDX": {
      "core": [
        {
          "vuid": "VUID-vkGetExecutionGraphPipelineScratchSizeAMDX-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetExecutionGraphPipelineScratchSizeAMDX-executionGraph-parameter",
          "text": "<code>executionGraph</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetExecutionGraphPipelineScratchSizeAMDX-pSizeInfo-parameter",
          "text": "<code>pSizeInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkExecutionGraphPipelineScratchSizeAMDX\">VkExecutionGraphPipelineScratchSizeAMDX</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetExecutionGraphPipelineScratchSizeAMDX-executionGraph-parent",
          "text": "<code>executionGraph</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkExecutionGraphPipelineScratchSizeAMDX": {
      "core": [
        {
          "vuid": "VUID-VkExecutionGraphPipelineScratchSizeAMDX-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdInitializeGraphScratchMemoryAMDX": {
      "core": [
        {
          "vuid": "VUID-vkCmdInitializeGraphScratchMemoryAMDX-scratch-09143",
          "text": "<code>scratch</code> <strong class=\"purple\">must</strong> be the device address of an allocated memory range at least as large as the value of <a href=\"#VkExecutionGraphPipelineScratchSizeAMDX\">VkExecutionGraphPipelineScratchSizeAMDX</a>::<code>size</code> returned by <a href=\"#VkExecutionGraphPipelineScratchSizeAMDX\">VkExecutionGraphPipelineScratchSizeAMDX</a> for the currently bound execution graph pipeline.",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdInitializeGraphScratchMemoryAMDX-scratch-09144",
          "text": "<code>scratch</code> <strong class=\"purple\">must</strong> be a multiple of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdInitializeGraphScratchMemoryAMDX-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdInitializeGraphScratchMemoryAMDX-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdInitializeGraphScratchMemoryAMDX-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdInitializeGraphScratchMemoryAMDX-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdInitializeGraphScratchMemoryAMDX-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdInitializeGraphScratchMemoryAMDX-bufferlevel",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdDispatchGraphAMDX": {
      "core": [
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-magFilter-04553",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-magFilter-09598",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-mipmapMode-04770",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-mipmapMode-09599",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-unnormalizedCoordinates-09635",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>levelCount</code> and <code>layerCount</code> <strong class=\"purple\">must</strong> be 1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-unnormalizedCoordinates-09636",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_VIEW_TYPE_1D</code> or <code>VK_IMAGE_VIEW_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-None-06479",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is sampled with <a href=\"#textures-depth-compare-operation\">depth comparison</a>, 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_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-None-02691",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed using atomic operations as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-None-07888",
          "text": "If a <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> descriptor is accessed using atomic operations as a result of this command, then the storage texel buffer&#8217;s <a href=\"#resources-buffer-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-None-02692",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-None-02693",
          "text": "If the <a href=\"#VK_EXT_filter_cubic\">VK_EXT_filter_cubic</a> extension is not enabled and any <a href=\"#VkImageView\">VkImageView</a> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, it <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-filterCubic-02694",
          "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 <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubic</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-filterCubicMinmax-02695",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubicMinmax</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-cubicRangeClamp-09212",
          "text": "If the <a href=\"#features-filter-cubic-range-clamp\"><code>cubicRangeClamp</code></a> feature is not enabled, then 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=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-reductionMode-09213",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with a <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code> as a result of this command <strong class=\"purple\">must</strong> sample with <code>VK_FILTER_CUBIC_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-selectableCubicWeights-09214",
          "text": "If the <a href=\"#features-filter-cubic-weight-selection\"><code>selectableCubicWeights</code></a> feature is not enabled, then 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 href=\"#VkSamplerCubicWeightsCreateInfoQCOM\">VkSamplerCubicWeightsCreateInfoQCOM</a>::<code>cubicWeights</code> equal to <code>VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-flags-02696",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-OpTypeImage-07027",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being written as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-OpTypeImage-07028",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being read as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-OpTypeImage-07029",
          "text": "For any <a href=\"#VkBufferView\">VkBufferView</a> being written as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-OpTypeImage-07030",
          "text": "Any <a href=\"#VkBufferView\">VkBufferView</a> being read as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code> then the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-None-08600",
          "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-None-08601",
          "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-None-10068",
          "text": "For each array of resources that is used by <a href=\"#shaders-binding\">a bound shader</a>, the indices used to access members of the array <strong class=\"purple\">must</strong> be less than the descriptor count for the identified binding in the descriptor sets used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-maintenance4-08602",
          "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-None-08114",
          "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-None-08115",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created without <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-None-08116",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-None-08604",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-None-08117",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-None-08119",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkPipeline\">VkPipeline</a> created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-None-08605",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkShaderEXT\">VkShaderEXT</a> created with a <code>VkDescriptorSetLayout</code> that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-None-08606",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is not enabled, a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-None-08608",
          "text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state specified statically in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-None-08609",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <a href=\"#VkImage\">VkImage</a> with a <a href=\"#VkImageView\">VkImageView</a> 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-None-08610",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-None-08611",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-None-08607",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-uniformBuffers-06935",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-None-08612",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-storageBuffers-06936",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>storageBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-None-08613",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-commandBuffer-02707",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, any resource accessed by <a href=\"#shaders-binding\">bound shaders</a> <strong class=\"purple\">must</strong> not be a protected resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-None-06550",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> only be used with <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-ConstOffset-06551",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> not use the <code>ConstOffset</code> and <code>Offset</code> operands",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-viewType-07752",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> match the <code>Dim</code> operand of the <code>OpTypeImage</code> as described in <a href=\"#spirvenv-image-dimensions\">Compatibility Between SPIR-V Image Dimensions and Vulkan ImageView Types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-format-07753",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the <a href=\"#formats-numericformat\">numeric type</a> of the image view&#8217;s <code>format</code> and the <code>Sampled</code> <code>Type</code> operand of the <code>OpTypeImage</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-OpImageWrite-08795",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with a format other than <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-OpImageWrite-08796",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with the format <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have four components",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-OpImageWrite-04469",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the buffer view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-SampledType-04470",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-SampledType-04471",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-SampledType-04472",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-SampledType-04473",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-sparseImageInt64Atomics-04474",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-sparseImageInt64Atomics-04475",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-OpImageWeightedSampleQCOM-06971",
          "text": "If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-OpImageWeightedSampleQCOM-06972",
          "text": "If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image 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_2_WEIGHT_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-OpImageBoxFilterQCOM-06973",
          "text": "If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-OpImageBlockMatchSSDQCOM-06974",
          "text": "If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-OpImageBlockMatchSADQCOM-06975",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-OpImageBlockMatchSADQCOM-06976",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-OpImageWeightedSampleQCOM-06977",
          "text": "If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-OpImageWeightedSampleQCOM-06978",
          "text": "If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-OpImageBlockMatchWindow-09215",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-OpImageBlockMatchWindow-09216",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s format <strong class=\"purple\">must</strong> be a single-component format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-OpImageBlockMatchWindow-09217",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-None-07288",
          "text": "Any shader invocation executed by this command <strong class=\"purple\">must</strong> <a href=\"#shaders-termination\">terminate</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-None-09600",
          "text": "If a descriptor with type equal to any of <code>VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> is accessed as a result of this command, the image subresource identified by that descriptor <strong class=\"purple\">must</strong> be in the image layout identified when the descriptor was written",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-commandBuffer-09181",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-commandBuffer-09182",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-scratch-09183",
          "text": "<code>scratch</code> <strong class=\"purple\">must</strong> be the device address of an allocated memory range at least as large as the value of <a href=\"#VkExecutionGraphPipelineScratchSizeAMDX\">VkExecutionGraphPipelineScratchSizeAMDX</a>::<code>size</code> returned by <a href=\"#VkExecutionGraphPipelineScratchSizeAMDX\">VkExecutionGraphPipelineScratchSizeAMDX</a> for the currently bound execution graph pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-scratch-09184",
          "text": "<code>scratch</code> <strong class=\"purple\">must</strong> be a device address within a <a href=\"#VkBuffer\">VkBuffer</a> created with the <code>VK_BUFFER_USAGE_EXECUTION_GRAPH_SCRATCH_BIT_AMDX</code> or <code>VK_BUFFER_USAGE_2_EXECUTION_GRAPH_SCRATCH_BIT_AMDX</code> flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-scratch-09185",
          "text": "Device memory in the range [<code>scratch</code>,<code>scratch</code><br> <a href=\"#VkExecutionGraphPipelineScratchSizeAMDX\">VkExecutionGraphPipelineScratchSizeAMDX</a>::<code>size</code>) <strong class=\"purple\">must</strong> have been initialized with <a href=\"#vkCmdInitializeGraphScratchMemoryAMDX\">vkCmdInitializeGraphScratchMemoryAMDX</a> using the currently bound execution graph pipeline, and not modified after that by anything other than another execution graph dispatch command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-maxComputeWorkGroupCount-09186",
          "text": "Execution of this command <strong class=\"purple\">must</strong> not cause a node to be dispatched with a larger number of workgroups than that specified by either a <code>MaxNumWorkgroupsAMDX</code> decoration in the dispatched node or <a href=\"#limits-maxComputeWorkGroupCount\"><code>maxComputeWorkGroupCount</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-maxExecutionGraphShaderPayloadCount-09187",
          "text": "Execution of this command <strong class=\"purple\">must</strong> not cause any shader to initialize more than <a href=\"#limits-maxExecutionGraphShaderPayloadCount\"><code>maxExecutionGraphShaderPayloadCount</code></a> output payloads",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-NodeMaxPayloadsAMDX-09188",
          "text": "Execution of this command <strong class=\"purple\">must</strong> not cause any shader that declares <code>NodeMaxPayloadsAMDX</code> to initialize more output payloads than specified by the max number of payloads for that decoration. This requirement applies to each <code>NodeMaxPayloadsAMDX</code> decoration separately",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-pCountInfo-09145",
          "text": "<code>pCountInfo-&gt;infos</code> <strong class=\"purple\">must</strong> be a host pointer to a memory allocation at least as large as the product of <code>count</code> and <code>stride</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-infos-09146",
          "text": "Host memory locations at indexes in the range [<code>infos</code>, <code>infos</code> + (<code>count</code>*<code>stride</code>)), at a granularity of <code>stride</code> <strong class=\"purple\">must</strong> contain valid <a href=\"#VkDispatchGraphInfoAMDX\">VkDispatchGraphInfoAMDX</a> structures in the first 24 bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-pCountInfo-09147",
          "text": "For each <a href=\"#VkDispatchGraphInfoAMDX\">VkDispatchGraphInfoAMDX</a> structure in <code>pCountInfo-&gt;infos</code>, <code>payloads</code> <strong class=\"purple\">must</strong> be a host pointer to a memory allocation at least as large as the product of <code>payloadCount</code> and <code>payloadStride</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-pCountInfo-09148",
          "text": "For each <a href=\"#VkDispatchGraphInfoAMDX\">VkDispatchGraphInfoAMDX</a> structure in <code>pCountInfo-&gt;infos</code>, <code>nodeIndex</code> <strong class=\"purple\">must</strong> be a valid node index in the currently bound execution graph pipeline, as returned by <a href=\"#vkGetExecutionGraphPipelineNodeIndexAMDX\">vkGetExecutionGraphPipelineNodeIndexAMDX</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-pCountInfo-09149",
          "text": "For each <a href=\"#VkDispatchGraphInfoAMDX\">VkDispatchGraphInfoAMDX</a> structure in <code>pCountInfo-&gt;infos</code>, host memory locations at indexes in the range [<code>payloads</code>, <code>payloads</code> + (<code>payloadCount</code> * <code>payloadStride</code>)), at a granularity of <code>payloadStride</code> <strong class=\"purple\">must</strong> contain a payload matching the size of the input payload expected by the node in <code>nodeIndex</code> in the first bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-pCountInfo-parameter",
          "text": "<code>pCountInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDispatchGraphCountInfoAMDX\">VkDispatchGraphCountInfoAMDX</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphAMDX-bufferlevel",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdDispatchGraphIndirectAMDX": {
      "core": [
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-magFilter-04553",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-magFilter-09598",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-mipmapMode-04770",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-mipmapMode-09599",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-unnormalizedCoordinates-09635",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>levelCount</code> and <code>layerCount</code> <strong class=\"purple\">must</strong> be 1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-unnormalizedCoordinates-09636",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_VIEW_TYPE_1D</code> or <code>VK_IMAGE_VIEW_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-None-06479",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is sampled with <a href=\"#textures-depth-compare-operation\">depth comparison</a>, 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_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-None-02691",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed using atomic operations as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-None-07888",
          "text": "If a <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> descriptor is accessed using atomic operations as a result of this command, then the storage texel buffer&#8217;s <a href=\"#resources-buffer-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-None-02692",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-None-02693",
          "text": "If the <a href=\"#VK_EXT_filter_cubic\">VK_EXT_filter_cubic</a> extension is not enabled and any <a href=\"#VkImageView\">VkImageView</a> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, it <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-filterCubic-02694",
          "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 <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubic</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-filterCubicMinmax-02695",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubicMinmax</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-cubicRangeClamp-09212",
          "text": "If the <a href=\"#features-filter-cubic-range-clamp\"><code>cubicRangeClamp</code></a> feature is not enabled, then 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=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-reductionMode-09213",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with a <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code> as a result of this command <strong class=\"purple\">must</strong> sample with <code>VK_FILTER_CUBIC_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-selectableCubicWeights-09214",
          "text": "If the <a href=\"#features-filter-cubic-weight-selection\"><code>selectableCubicWeights</code></a> feature is not enabled, then 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 href=\"#VkSamplerCubicWeightsCreateInfoQCOM\">VkSamplerCubicWeightsCreateInfoQCOM</a>::<code>cubicWeights</code> equal to <code>VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-flags-02696",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-OpTypeImage-07027",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being written as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-OpTypeImage-07028",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being read as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-OpTypeImage-07029",
          "text": "For any <a href=\"#VkBufferView\">VkBufferView</a> being written as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-OpTypeImage-07030",
          "text": "Any <a href=\"#VkBufferView\">VkBufferView</a> being read as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code> then the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-None-08600",
          "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-None-08601",
          "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-None-10068",
          "text": "For each array of resources that is used by <a href=\"#shaders-binding\">a bound shader</a>, the indices used to access members of the array <strong class=\"purple\">must</strong> be less than the descriptor count for the identified binding in the descriptor sets used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-maintenance4-08602",
          "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-None-08114",
          "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-None-08115",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created without <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-None-08116",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-None-08604",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-None-08117",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-None-08119",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkPipeline\">VkPipeline</a> created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-None-08605",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkShaderEXT\">VkShaderEXT</a> created with a <code>VkDescriptorSetLayout</code> that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-None-08606",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is not enabled, a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-None-08608",
          "text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state specified statically in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-None-08609",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <a href=\"#VkImage\">VkImage</a> with a <a href=\"#VkImageView\">VkImageView</a> 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-None-08610",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-None-08611",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-None-08607",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-uniformBuffers-06935",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-None-08612",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-storageBuffers-06936",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>storageBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-None-08613",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-commandBuffer-02707",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, any resource accessed by <a href=\"#shaders-binding\">bound shaders</a> <strong class=\"purple\">must</strong> not be a protected resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-None-06550",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> only be used with <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-ConstOffset-06551",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> not use the <code>ConstOffset</code> and <code>Offset</code> operands",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-viewType-07752",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> match the <code>Dim</code> operand of the <code>OpTypeImage</code> as described in <a href=\"#spirvenv-image-dimensions\">Compatibility Between SPIR-V Image Dimensions and Vulkan ImageView Types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-format-07753",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the <a href=\"#formats-numericformat\">numeric type</a> of the image view&#8217;s <code>format</code> and the <code>Sampled</code> <code>Type</code> operand of the <code>OpTypeImage</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-OpImageWrite-08795",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with a format other than <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-OpImageWrite-08796",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with the format <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have four components",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-OpImageWrite-04469",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the buffer view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-SampledType-04470",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-SampledType-04471",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-SampledType-04472",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-SampledType-04473",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-sparseImageInt64Atomics-04474",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-sparseImageInt64Atomics-04475",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-OpImageWeightedSampleQCOM-06971",
          "text": "If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-OpImageWeightedSampleQCOM-06972",
          "text": "If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image 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_2_WEIGHT_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-OpImageBoxFilterQCOM-06973",
          "text": "If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-OpImageBlockMatchSSDQCOM-06974",
          "text": "If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-OpImageBlockMatchSADQCOM-06975",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-OpImageBlockMatchSADQCOM-06976",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-OpImageWeightedSampleQCOM-06977",
          "text": "If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-OpImageWeightedSampleQCOM-06978",
          "text": "If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-OpImageBlockMatchWindow-09215",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-OpImageBlockMatchWindow-09216",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s format <strong class=\"purple\">must</strong> be a single-component format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-OpImageBlockMatchWindow-09217",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-None-07288",
          "text": "Any shader invocation executed by this command <strong class=\"purple\">must</strong> <a href=\"#shaders-termination\">terminate</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-None-09600",
          "text": "If a descriptor with type equal to any of <code>VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> is accessed as a result of this command, the image subresource identified by that descriptor <strong class=\"purple\">must</strong> be in the image layout identified when the descriptor was written",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-commandBuffer-09181",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-commandBuffer-09182",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-scratch-09183",
          "text": "<code>scratch</code> <strong class=\"purple\">must</strong> be the device address of an allocated memory range at least as large as the value of <a href=\"#VkExecutionGraphPipelineScratchSizeAMDX\">VkExecutionGraphPipelineScratchSizeAMDX</a>::<code>size</code> returned by <a href=\"#VkExecutionGraphPipelineScratchSizeAMDX\">VkExecutionGraphPipelineScratchSizeAMDX</a> for the currently bound execution graph pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-scratch-09184",
          "text": "<code>scratch</code> <strong class=\"purple\">must</strong> be a device address within a <a href=\"#VkBuffer\">VkBuffer</a> created with the <code>VK_BUFFER_USAGE_EXECUTION_GRAPH_SCRATCH_BIT_AMDX</code> or <code>VK_BUFFER_USAGE_2_EXECUTION_GRAPH_SCRATCH_BIT_AMDX</code> flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-scratch-09185",
          "text": "Device memory in the range [<code>scratch</code>,<code>scratch</code><br> <a href=\"#VkExecutionGraphPipelineScratchSizeAMDX\">VkExecutionGraphPipelineScratchSizeAMDX</a>::<code>size</code>) <strong class=\"purple\">must</strong> have been initialized with <a href=\"#vkCmdInitializeGraphScratchMemoryAMDX\">vkCmdInitializeGraphScratchMemoryAMDX</a> using the currently bound execution graph pipeline, and not modified after that by anything other than another execution graph dispatch command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-maxComputeWorkGroupCount-09186",
          "text": "Execution of this command <strong class=\"purple\">must</strong> not cause a node to be dispatched with a larger number of workgroups than that specified by either a <code>MaxNumWorkgroupsAMDX</code> decoration in the dispatched node or <a href=\"#limits-maxComputeWorkGroupCount\"><code>maxComputeWorkGroupCount</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-maxExecutionGraphShaderPayloadCount-09187",
          "text": "Execution of this command <strong class=\"purple\">must</strong> not cause any shader to initialize more than <a href=\"#limits-maxExecutionGraphShaderPayloadCount\"><code>maxExecutionGraphShaderPayloadCount</code></a> output payloads",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-NodeMaxPayloadsAMDX-09188",
          "text": "Execution of this command <strong class=\"purple\">must</strong> not cause any shader that declares <code>NodeMaxPayloadsAMDX</code> to initialize more output payloads than specified by the max number of payloads for that decoration. This requirement applies to each <code>NodeMaxPayloadsAMDX</code> decoration separately",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-pCountInfo-09150",
          "text": "<code>pCountInfo-&gt;infos</code> <strong class=\"purple\">must</strong> be a device pointer to a memory allocation at least as large as the product of <code>count</code> and <code>stride</code> when this command is executed on the device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-pCountInfo-09151",
          "text": "<code>pCountInfo-&gt;infos</code> <strong class=\"purple\">must</strong> be a device address within a <a href=\"#VkBuffer\">VkBuffer</a> created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-pCountInfo-09152",
          "text": "<code>pCountInfo-&gt;infos</code> <strong class=\"purple\">must</strong> be a multiple of <a href=\"#limits-executionGraphDispatchAddressAlignment\"><code>executionGraphDispatchAddressAlignment</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-infos-09153",
          "text": "Device memory locations at indexes in the range [<code>infos</code>, <code>infos</code> + (<code>count</code>*<code>stride</code>)), at a granularity of <code>stride</code> <strong class=\"purple\">must</strong> contain valid <a href=\"#VkDispatchGraphInfoAMDX\">VkDispatchGraphInfoAMDX</a> structures in the first 24 bytes when this command is executed on the device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-pCountInfo-09154",
          "text": "For each <a href=\"#VkDispatchGraphInfoAMDX\">VkDispatchGraphInfoAMDX</a> structure in <code>pCountInfo-&gt;infos</code>, <code>payloads</code> <strong class=\"purple\">must</strong> be a device pointer to a memory allocation at least as large as the product of <code>payloadCount</code> and <code>payloadStride</code> when this command is executed on the device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-pCountInfo-09155",
          "text": "For each <a href=\"#VkDispatchGraphInfoAMDX\">VkDispatchGraphInfoAMDX</a> structure in <code>pCountInfo-&gt;infos</code>, <code>payloads</code> <strong class=\"purple\">must</strong> be a device address within a <a href=\"#VkBuffer\">VkBuffer</a> created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-pCountInfo-09156",
          "text": "For each <a href=\"#VkDispatchGraphInfoAMDX\">VkDispatchGraphInfoAMDX</a> structure in <code>pCountInfo-&gt;infos</code>, <code>payloads</code> <strong class=\"purple\">must</strong> be a multiple of <a href=\"#limits-executionGraphDispatchAddressAlignment\"><code>executionGraphDispatchAddressAlignment</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-pCountInfo-09157",
          "text": "For each <a href=\"#VkDispatchGraphInfoAMDX\">VkDispatchGraphInfoAMDX</a> structure in <code>pCountInfo-&gt;infos</code>, <code>nodeIndex</code> <strong class=\"purple\">must</strong> be a valid node index in the currently bound execution graph pipeline, as returned by <a href=\"#vkGetExecutionGraphPipelineNodeIndexAMDX\">vkGetExecutionGraphPipelineNodeIndexAMDX</a> when this command is executed on the device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-pCountInfo-09158",
          "text": "For each <a href=\"#VkDispatchGraphInfoAMDX\">VkDispatchGraphInfoAMDX</a> structure in <code>pCountInfo-&gt;infos</code>, device memory locations at indexes in the range [<code>payloads</code>, <code>payloads</code> + (<code>payloadCount</code> * <code>payloadStride</code>)), at a granularity of <code>payloadStride</code> <strong class=\"purple\">must</strong> contain a payload matching the size of the input payload expected by the node in <code>nodeIndex</code> in the first bytes when this command is executed on the device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-pCountInfo-parameter",
          "text": "<code>pCountInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDispatchGraphCountInfoAMDX\">VkDispatchGraphCountInfoAMDX</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-bufferlevel",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdDispatchGraphIndirectCountAMDX": {
      "core": [
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-magFilter-04553",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-magFilter-09598",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-mipmapMode-04770",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code>, <code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>, and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-mipmapMode-09599",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>mipmapMode</code> equal to <code>VK_SAMPLER_MIPMAP_MODE_LINEAR</code> and <code>reductionMode</code> equal to either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-unnormalizedCoordinates-09635",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>levelCount</code> and <code>layerCount</code> <strong class=\"purple\">must</strong> be 1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-unnormalizedCoordinates-09636",
          "text": "If a <a href=\"#VkSampler\">VkSampler</a> created with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_VIEW_TYPE_1D</code> or <code>VK_IMAGE_VIEW_TYPE_2D</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-None-06479",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is sampled with <a href=\"#textures-depth-compare-operation\">depth comparison</a>, 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_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-None-02691",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed using atomic operations as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-None-07888",
          "text": "If a <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> descriptor is accessed using atomic operations as a result of this command, then the storage texel buffer&#8217;s <a href=\"#resources-buffer-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-None-02692",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> 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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-None-02693",
          "text": "If the <a href=\"#VK_EXT_filter_cubic\">VK_EXT_filter_cubic</a> extension is not enabled and any <a href=\"#VkImageView\">VkImageView</a> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, it <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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-filterCubic-02694",
          "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 <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubic</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-filterCubicMinmax-02695",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>::<code>filterCubicMinmax</code> returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-cubicRangeClamp-09212",
          "text": "If the <a href=\"#features-filter-cubic-range-clamp\"><code>cubicRangeClamp</code></a> feature is not enabled, then 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=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-reductionMode-09213",
          "text": "Any <a href=\"#VkImageView\">VkImageView</a> being sampled with a <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>::<code>reductionMode</code> equal to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM</code> as a result of this command <strong class=\"purple\">must</strong> sample with <code>VK_FILTER_CUBIC_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-selectableCubicWeights-09214",
          "text": "If the <a href=\"#features-filter-cubic-weight-selection\"><code>selectableCubicWeights</code></a> feature is not enabled, then 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 href=\"#VkSamplerCubicWeightsCreateInfoQCOM\">VkSamplerCubicWeightsCreateInfoQCOM</a>::<code>cubicWeights</code> equal to <code>VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-flags-02696",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-OpTypeImage-07027",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being written as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-OpTypeImage-07028",
          "text": "For any <a href=\"#VkImageView\">VkImageView</a> being read as a storage image where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-OpTypeImage-07029",
          "text": "For any <a href=\"#VkBufferView\">VkBufferView</a> being written as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code>, the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-OpTypeImage-07030",
          "text": "Any <a href=\"#VkBufferView\">VkBufferView</a> being read as a storage texel buffer where the image format field of the <code>OpTypeImage</code> is <code>Unknown</code> then the view&#8217;s <a href=\"#VkFormatProperties3\">buffer features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08600",
          "text": "For each set <em>n</em> that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for set <em>n</em>, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08601",
          "text": "For each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> array used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-None-10068",
          "text": "For each array of resources that is used by <a href=\"#shaders-binding\">a bound shader</a>, the indices used to access members of the array <strong class=\"purple\">must</strong> be less than the descriptor count for the identified binding in the descriptor sets used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-maintenance4-08602",
          "text": "If the <a href=\"#features-maintenance4\"><code>maintenance4</code></a> feature is not enabled, then for each push constant that is statically used by <a href=\"#shaders-binding\">a bound shader</a>, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> that is compatible for push constants, with the <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> used to create the current <a href=\"#VkPipeline\">VkPipeline</a> or the <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> and <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> arrays used to create the current <a href=\"#VkShaderEXT\">VkShaderEXT</a> , as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08114",
          "text": "Descriptors in each bound descriptor set, specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, <strong class=\"purple\">must</strong> be valid as described by <a href=\"#descriptor-validity\">descriptor validity</a> if they are statically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was not created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08115",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdBindDescriptorSets\">vkCmdBindDescriptorSets</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created without <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08116",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point used by this command and the bound <a href=\"#VkPipeline\">VkPipeline</a> was created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08604",
          "text": "Descriptors in bound descriptor buffers, specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, <strong class=\"purple\">must</strong> be valid if they are dynamically used by any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08117",
          "text": "If the descriptors used by the <a href=\"#VkPipeline\">VkPipeline</a> bound to the pipeline bind point were specified via <a href=\"#vkCmdSetDescriptorBufferOffsetsEXT\">vkCmdSetDescriptorBufferOffsetsEXT</a>, the bound <a href=\"#VkPipeline\">VkPipeline</a> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08119",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkPipeline\">VkPipeline</a> created with <code>VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08605",
          "text": "If a descriptor is dynamically used with a <a href=\"#VkShaderEXT\">VkShaderEXT</a> created with a <code>VkDescriptorSetLayout</code> that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT</code>, the descriptor memory <strong class=\"purple\">must</strong> be resident",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08606",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> feature is not enabled, a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08608",
          "text": "If a pipeline is bound to the pipeline bind point used by this command, there <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state specified statically in the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command, since that pipeline was bound",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08609",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <a href=\"#VkImage\">VkImage</a> with a <a href=\"#VkImageView\">VkImageView</a> 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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08610",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08611",
          "text": "If the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command or any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a <a href=\"#VkSampler\">VkSampler</a> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08607",
          "text": "If the <a href=\"#features-shaderObject\"><code>shaderObject</code></a> is enabled, either a valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command, or a valid combination of valid and <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> shader objects <strong class=\"purple\">must</strong> be bound to every supported shader stage corresponding to the pipeline bind point used by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-uniformBuffers-06935",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>uniformBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08612",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-storageBuffers-06936",
          "text": "If any stage of the <a href=\"#VkPipeline\">VkPipeline</a> object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT</code> or <code>VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT</code> for <code>storageBuffers</code>, and the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, that stage <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08613",
          "text": "If the <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> feature is not enabled, and any <a href=\"#VkShaderEXT\">VkShaderEXT</a> bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-commandBuffer-02707",
          "text": "If <code>commandBuffer</code> is an unprotected command buffer and <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, any resource accessed by <a href=\"#shaders-binding\">bound shaders</a> <strong class=\"purple\">must</strong> not be a protected resource",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-None-06550",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> only be used with <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-ConstOffset-06551",
          "text": "If <a href=\"#shaders-binding\">a bound shader</a> accesses a <a href=\"#VkSampler\">VkSampler</a> or <a href=\"#VkImageView\">VkImageView</a> object that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y′C<sub>B</sub>C<sub>R</sub> conversion</a>, that object <strong class=\"purple\">must</strong> not use the <code>ConstOffset</code> and <code>Offset</code> operands",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-viewType-07752",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the image view&#8217;s <code>viewType</code> <strong class=\"purple\">must</strong> match the <code>Dim</code> operand of the <code>OpTypeImage</code> as described in <a href=\"#spirvenv-image-dimensions\">Compatibility Between SPIR-V Image Dimensions and Vulkan ImageView Types</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-format-07753",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> is accessed as a result of this command, then the <a href=\"#formats-numericformat\">numeric type</a> of the image view&#8217;s <code>format</code> and the <code>Sampled</code> <code>Type</code> operand of the <code>OpTypeImage</code> <strong class=\"purple\">must</strong> match",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-OpImageWrite-08795",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with a format other than <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-OpImageWrite-08796",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> created with the format <code>VK_FORMAT_A8_UNORM_KHR</code> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have four components",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-OpImageWrite-04469",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the buffer view&#8217;s format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-SampledType-04470",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-SampledType-04471",
          "text": "If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-SampledType-04472",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit component width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-SampledType-04473",
          "text": "If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a component width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-sparseImageInt64Atomics-04474",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-sparseImageInt64Atomics-04475",
          "text": "If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-OpImageWeightedSampleQCOM-06971",
          "text": "If <code>OpImageWeightedSampleQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-OpImageWeightedSampleQCOM-06972",
          "text": "If <code>OpImageWeightedSampleQCOM</code> uses a <a href=\"#VkImageView\">VkImageView</a> as a sample weight image 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_2_WEIGHT_IMAGE_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-OpImageBoxFilterQCOM-06973",
          "text": "If <code>OpImageBoxFilterQCOM</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-OpImageBlockMatchSSDQCOM-06974",
          "text": "If <code>OpImageBlockMatchSSDQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-OpImageBlockMatchSADQCOM-06975",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-OpImageBlockMatchSADQCOM-06976",
          "text": "If <code>OpImageBlockMatchSADQCOM</code> or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-OpImageWeightedSampleQCOM-06977",
          "text": "If <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-OpImageWeightedSampleQCOM-06978",
          "text": "If any command other than <code>OpImageWeightedSampleQCOM</code>, <code>OpImageBoxFilterQCOM</code>, <code>OpImageBlockMatchWindowSSDQCOM</code>, <code>OpImageBlockMatchWindowSADQCOM</code>, <code>OpImageBlockMatchGatherSSDQCOM</code>, <code>OpImageBlockMatchGatherSADQCOM</code>, <code>OpImageBlockMatchSSDQCOM</code>, or <code>OpImageBlockMatchSADQCOM</code> uses a <a href=\"#VkSampler\">VkSampler</a> as a result of this command, then the sampler <strong class=\"purple\">must</strong> not have been created with <code>VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-OpImageBlockMatchWindow-09215",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-OpImageBlockMatchWindow-09216",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> instruction is used to read from an <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view&#8217;s format <strong class=\"purple\">must</strong> be a single-component format",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-OpImageBlockMatchWindow-09217",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> read from a reference image as result of this command, then the specified reference coordinates <strong class=\"purple\">must</strong> not fail <a href=\"#textures-integer-coordinate-validation\">integer texel coordinate validation</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-None-07288",
          "text": "Any shader invocation executed by this command <strong class=\"purple\">must</strong> <a href=\"#shaders-termination\">terminate</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-None-09600",
          "text": "If a descriptor with type equal to any of <code>VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> is accessed as a result of this command, the image subresource identified by that descriptor <strong class=\"purple\">must</strong> be in the image layout identified when the descriptor was written",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-commandBuffer-09181",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-commandBuffer-09182",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary command buffer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-scratch-09183",
          "text": "<code>scratch</code> <strong class=\"purple\">must</strong> be the device address of an allocated memory range at least as large as the value of <a href=\"#VkExecutionGraphPipelineScratchSizeAMDX\">VkExecutionGraphPipelineScratchSizeAMDX</a>::<code>size</code> returned by <a href=\"#VkExecutionGraphPipelineScratchSizeAMDX\">VkExecutionGraphPipelineScratchSizeAMDX</a> for the currently bound execution graph pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-scratch-09184",
          "text": "<code>scratch</code> <strong class=\"purple\">must</strong> be a device address within a <a href=\"#VkBuffer\">VkBuffer</a> created with the <code>VK_BUFFER_USAGE_EXECUTION_GRAPH_SCRATCH_BIT_AMDX</code> or <code>VK_BUFFER_USAGE_2_EXECUTION_GRAPH_SCRATCH_BIT_AMDX</code> flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-scratch-09185",
          "text": "Device memory in the range [<code>scratch</code>,<code>scratch</code><br> <a href=\"#VkExecutionGraphPipelineScratchSizeAMDX\">VkExecutionGraphPipelineScratchSizeAMDX</a>::<code>size</code>) <strong class=\"purple\">must</strong> have been initialized with <a href=\"#vkCmdInitializeGraphScratchMemoryAMDX\">vkCmdInitializeGraphScratchMemoryAMDX</a> using the currently bound execution graph pipeline, and not modified after that by anything other than another execution graph dispatch command",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-maxComputeWorkGroupCount-09186",
          "text": "Execution of this command <strong class=\"purple\">must</strong> not cause a node to be dispatched with a larger number of workgroups than that specified by either a <code>MaxNumWorkgroupsAMDX</code> decoration in the dispatched node or <a href=\"#limits-maxComputeWorkGroupCount\"><code>maxComputeWorkGroupCount</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-maxExecutionGraphShaderPayloadCount-09187",
          "text": "Execution of this command <strong class=\"purple\">must</strong> not cause any shader to initialize more than <a href=\"#limits-maxExecutionGraphShaderPayloadCount\"><code>maxExecutionGraphShaderPayloadCount</code></a> output payloads",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-NodeMaxPayloadsAMDX-09188",
          "text": "Execution of this command <strong class=\"purple\">must</strong> not cause any shader that declares <code>NodeMaxPayloadsAMDX</code> to initialize more output payloads than specified by the max number of payloads for that decoration. This requirement applies to each <code>NodeMaxPayloadsAMDX</code> decoration separately",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-countInfo-09159",
          "text": "<code>countInfo</code> <strong class=\"purple\">must</strong> be a device pointer to a memory allocation containing a valid <a href=\"#VkDispatchGraphCountInfoAMDX\">VkDispatchGraphCountInfoAMDX</a> structure when this command is executed on the device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-countInfo-09160",
          "text": "<code>countInfo</code> <strong class=\"purple\">must</strong> be a device address within a <a href=\"#VkBuffer\">VkBuffer</a> created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-countInfo-09161",
          "text": "<code>countInfo</code> <strong class=\"purple\">must</strong> be a multiple of <a href=\"#limits-executionGraphDispatchAddressAlignment\"><code>executionGraphDispatchAddressAlignment</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-countInfo-09162",
          "text": "<code>countInfo-&gt;infos</code> <strong class=\"purple\">must</strong> be a device pointer to a memory allocation at least as large as the product of <code>count</code> and <code>stride</code> when this command is executed on the device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-countInfo-09163",
          "text": "<code>countInfo-&gt;infos</code> <strong class=\"purple\">must</strong> be a device address within a <a href=\"#VkBuffer\">VkBuffer</a> created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-countInfo-09164",
          "text": "<code>countInfo-&gt;infos</code> <strong class=\"purple\">must</strong> be a multiple of <a href=\"#limits-executionGraphDispatchAddressAlignment\"><code>executionGraphDispatchAddressAlignment</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-infos-09165",
          "text": "Device memory locations at indexes in the range [<code>infos</code>, <code>infos</code> + (<code>count</code>*<code>stride</code>)), at a granularity of <code>stride</code> <strong class=\"purple\">must</strong> contain valid <a href=\"#VkDispatchGraphInfoAMDX\">VkDispatchGraphInfoAMDX</a> structures in the first 24 bytes when this command is executed on the device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-countInfo-09166",
          "text": "For each <a href=\"#VkDispatchGraphInfoAMDX\">VkDispatchGraphInfoAMDX</a> structure in <code>countInfo-&gt;infos</code>, <code>payloads</code> <strong class=\"purple\">must</strong> be a device pointer to a memory allocation at least as large as the product of <code>payloadCount</code> and <code>payloadStride</code> when this command is executed on the device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-countInfo-09167",
          "text": "For each <a href=\"#VkDispatchGraphInfoAMDX\">VkDispatchGraphInfoAMDX</a> structure in <code>countInfo-&gt;infos</code>, <code>payloads</code> <strong class=\"purple\">must</strong> be a device address within a <a href=\"#VkBuffer\">VkBuffer</a> created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> flag",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-countInfo-09168",
          "text": "For each <a href=\"#VkDispatchGraphInfoAMDX\">VkDispatchGraphInfoAMDX</a> structure in <code>countInfo-&gt;infos</code>, <code>payloads</code> <strong class=\"purple\">must</strong> be a multiple of <a href=\"#limits-executionGraphDispatchAddressAlignment\"><code>executionGraphDispatchAddressAlignment</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-countInfo-09169",
          "text": "For each <a href=\"#VkDispatchGraphInfoAMDX\">VkDispatchGraphInfoAMDX</a> structure in <code>countInfo-&gt;infos</code>, <code>nodeIndex</code> <strong class=\"purple\">must</strong> be a valid node index in the currently bound execution graph pipeline, as returned by <a href=\"#vkGetExecutionGraphPipelineNodeIndexAMDX\">vkGetExecutionGraphPipelineNodeIndexAMDX</a> when this command is executed on the device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-countInfo-09170",
          "text": "For each <a href=\"#VkDispatchGraphInfoAMDX\">VkDispatchGraphInfoAMDX</a> structure in <code>countInfo-&gt;infos</code>, device memory locations at indexes in the range [<code>payloads</code>, <code>payloads</code> + (<code>payloadCount</code> * <code>payloadStride</code>)), at a granularity of <code>payloadStride</code> <strong class=\"purple\">must</strong> contain a payload matching the size of the input payload expected by the node in <code>nodeIndex</code> in the first bytes when this command is executed on the device",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-renderpass",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-bufferlevel",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkDispatchGraphInfoAMDX": {
      "core": [
        {
          "vuid": "VUID-VkDispatchGraphInfoAMDX-payloadCount-09171",
          "text": "<code>payloadCount</code> <strong class=\"purple\">must</strong> be no greater than <a href=\"#limits-maxExecutionGraphShaderPayloadCount\"><code>maxExecutionGraphShaderPayloadCount</code></a>",
          "page": "vkspec"
        }
      ]
    },
    "vkEnumerateInstanceLayerProperties": {
      "core": [
        {
          "vuid": "VUID-vkEnumerateInstanceLayerProperties-pPropertyCount-parameter",
          "text": "<code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkEnumerateInstanceLayerProperties-pProperties-parameter",
          "text": "If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <a href=\"#VkLayerProperties\">VkLayerProperties</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "vkEnumerateDeviceLayerProperties": {
      "core": [
        {
          "vuid": "VUID-vkEnumerateDeviceLayerProperties-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkEnumerateDeviceLayerProperties-pPropertyCount-parameter",
          "text": "<code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkEnumerateDeviceLayerProperties-pProperties-parameter",
          "text": "If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <a href=\"#VkLayerProperties\">VkLayerProperties</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "vkEnumerateInstanceExtensionProperties": {
      "core": [
        {
          "vuid": "VUID-vkEnumerateInstanceExtensionProperties-pLayerName-parameter",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkEnumerateInstanceExtensionProperties-pPropertyCount-parameter",
          "text": "<code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkEnumerateInstanceExtensionProperties-pProperties-parameter",
          "text": "If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <a href=\"#VkExtensionProperties\">VkExtensionProperties</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "vkEnumerateDeviceExtensionProperties": {
      "core": [
        {
          "vuid": "VUID-vkEnumerateDeviceExtensionProperties-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkEnumerateDeviceExtensionProperties-pLayerName-parameter",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkEnumerateDeviceExtensionProperties-pPropertyCount-parameter",
          "text": "<code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkEnumerateDeviceExtensionProperties-pProperties-parameter",
          "text": "If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <a href=\"#VkExtensionProperties\">VkExtensionProperties</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceFeatures": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceFeatures-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceFeatures-pFeatures-parameter",
          "text": "<code>pFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPhysicalDeviceFeatures\">VkPhysicalDeviceFeatures</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceFeatures2": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceFeatures2-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceFeatures2-pFeatures-parameter",
          "text": "<code>pFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPhysicalDeviceFeatures2\">VkPhysicalDeviceFeatures2</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceFeatures2": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceFeatures2-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceVulkan11Features": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceVulkan11Features-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceVulkan12Features": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceVulkan12Features-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceVulkan13Features": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceVulkan13Features-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceVariablePointersFeatures": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceVariablePointersFeatures-variablePointers-01431",
          "text": "If <code>variablePointers</code> is enabled then <code>variablePointersStorageBuffer</code> <strong class=\"purple\">must</strong> also be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceVariablePointersFeatures-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceMultiviewFeatures": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceMultiviewFeatures-multiviewGeometryShader-00580",
          "text": "If <code>multiviewGeometryShader</code> is enabled then <code>multiview</code> <strong class=\"purple\">must</strong> also be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceMultiviewFeatures-multiviewTessellationShader-00581",
          "text": "If <code>multiviewTessellationShader</code> is enabled then <code>multiview</code> <strong class=\"purple\">must</strong> also be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceMultiviewFeatures-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShaderAtomicFloatFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShaderAtomicFloatFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShaderAtomicInt64Features": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShaderAtomicInt64Features-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDevice8BitStorageFeatures": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDevice8BitStorageFeatures-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDevice16BitStorageFeatures": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDevice16BitStorageFeatures-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShaderFloat16Int8Features": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShaderFloat16Int8Features-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShaderClockFeaturesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShaderClockFeaturesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceSamplerYcbcrConversionFeatures": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceSamplerYcbcrConversionFeatures-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceProtectedMemoryFeatures": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceProtectedMemoryFeatures-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceConditionalRenderingFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceConditionalRenderingFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShaderDrawParametersFeatures": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShaderDrawParametersFeatures-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceMeshShaderFeaturesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceMeshShaderFeaturesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceMeshShaderFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceMeshShaderFeaturesEXT-multiviewMeshShader-07032",
          "text": "If <code>multiviewMeshShader</code> is enabled then <code>VkPhysicalDeviceMultiviewFeaturesKHR</code>::<code>multiview</code> <strong class=\"purple\">must</strong> also be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceMeshShaderFeaturesEXT-primitiveFragmentShadingRateMeshShader-07033",
          "text": "If <code>primitiveFragmentShadingRateMeshShader</code> is enabled then <code>VkPhysicalDeviceFragmentShadingRateFeaturesKHR</code>::<code>primitiveFragmentShadingRate</code> <strong class=\"purple\">must</strong> also be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceMeshShaderFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceMemoryDecompressionFeaturesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceMemoryDecompressionFeaturesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceDescriptorIndexingFeatures": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceDescriptorIndexingFeatures-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceCopyMemoryIndirectFeaturesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceCopyMemoryIndirectFeaturesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceASTCDecodeFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceASTCDecodeFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceTransformFeedbackFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceTransformFeedbackFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceVulkanMemoryModelFeatures": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceVulkanMemoryModelFeatures-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceInlineUniformBlockFeatures": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceInlineUniformBlockFeatures-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceExclusiveScissorFeaturesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceExclusiveScissorFeaturesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceCornerSampledImageFeaturesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceCornerSampledImageFeaturesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShaderImageFootprintFeaturesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShaderImageFootprintFeaturesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShadingRateImageFeaturesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShadingRateImageFeaturesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceFragmentDensityMapFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceFragmentDensityMapFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceFragmentDensityMap2FeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceFragmentDensityMap2FeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceInvocationMaskFeaturesHUAWEI": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceInvocationMaskFeaturesHUAWEI-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceScalarBlockLayoutFeatures": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceScalarBlockLayoutFeatures-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceUniformBufferStandardLayoutFeatures": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceUniformBufferStandardLayoutFeatures-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceDepthClipEnableFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceDepthClipEnableFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceMemoryPriorityFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceMemoryPriorityFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceBufferDeviceAddressFeatures": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceBufferDeviceAddressFeatures-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceBufferDeviceAddressFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceBufferDeviceAddressFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceImagelessFramebufferFeatures": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceImagelessFramebufferFeatures-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceCooperativeMatrixFeaturesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceCooperativeMatrixFeaturesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceCooperativeMatrixFeaturesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceCooperativeMatrixFeaturesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceYcbcrImageArraysFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceYcbcrImageArraysFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceHostQueryResetFeatures": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceHostQueryResetFeatures-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceCoverageReductionModeFeaturesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceCoverageReductionModeFeaturesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceTimelineSemaphoreFeatures": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceTimelineSemaphoreFeatures-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceIndexTypeUint8FeaturesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceIndexTypeUint8FeaturesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShaderSMBuiltinsFeaturesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShaderSMBuiltinsFeaturesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceTextureCompressionASTCHDRFeatures": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceTextureCompressionASTCHDRFeatures-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceLineRasterizationFeaturesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceLineRasterizationFeaturesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceSubgroupSizeControlFeatures": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceSubgroupSizeControlFeatures-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceCoherentMemoryFeaturesAMD": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceCoherentMemoryFeaturesAMD-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceAccelerationStructureFeaturesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceAccelerationStructureFeaturesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceRayTracingPipelineFeaturesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceRayTracingPipelineFeaturesKHR-rayTracingPipelineShaderGroupHandleCaptureReplayMixed-03575",
          "text": "If <code>rayTracingPipelineShaderGroupHandleCaptureReplayMixed</code> is <code>VK_TRUE</code>, <code>rayTracingPipelineShaderGroupHandleCaptureReplay</code> <strong class=\"purple\">must</strong> also be <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceRayTracingPipelineFeaturesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceRayQueryFeaturesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceRayQueryFeaturesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceVideoMaintenance1FeaturesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceVideoMaintenance1FeaturesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceExtendedDynamicStateFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceExtendedDynamicStateFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceExtendedDynamicState2FeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceExtendedDynamicState2FeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceExtendedDynamicState3FeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceExtendedDynamicState3FeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceDiagnosticsConfigFeaturesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceDiagnosticsConfigFeaturesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceDeviceMemoryReportFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceDeviceMemoryReportFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDevicePipelineCreationCacheControlFeatures": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDevicePipelineCreationCacheControlFeatures-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDevicePrivateDataFeatures": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDevicePrivateDataFeatures-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceRobustness2FeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceRobustness2FeaturesEXT-robustBufferAccess2-04000",
          "text": "If <code>robustBufferAccess2</code> is enabled then <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> <strong class=\"purple\">must</strong> also be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceRobustness2FeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceImageRobustnessFeatures": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceImageRobustnessFeatures-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShaderTerminateInvocationFeatures": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShaderTerminateInvocationFeatures-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceCustomBorderColorFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceCustomBorderColorFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceBorderColorSwizzleFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceBorderColorSwizzleFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDevicePortabilitySubsetFeaturesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDevicePortabilitySubsetFeaturesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDevicePerformanceQueryFeaturesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDevicePerformanceQueryFeaturesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDevice4444FormatsFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDevice4444FormatsFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceDepthClipControlFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceDepthClipControlFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceDepthClampControlFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceDepthClampControlFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceSynchronization2Features": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceSynchronization2Features-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceFragmentShadingRateFeaturesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceFragmentShadingRateFeaturesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceLegacyDitheringFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceLegacyDitheringFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceInheritedViewportScissorFeaturesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceInheritedViewportScissorFeaturesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDevicePipelineProtectedAccessFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDevicePipelineProtectedAccessFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceColorWriteEnableFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceColorWriteEnableFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDevicePipelinePropertiesFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDevicePipelinePropertiesFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceProvokingVertexFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceProvokingVertexFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceDescriptorBufferFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceDescriptorBufferFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceMultiDrawFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceMultiDrawFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceRayTracingMotionBlurFeaturesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceRayTracingMotionBlurFeaturesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceOpacityMicromapFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceOpacityMicromapFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceDisplacementMicromapFeaturesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceDisplacementMicromapFeaturesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceRayTracingValidationFeaturesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceRayTracingValidationFeaturesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceSubpassShadingFeaturesHUAWEI": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceSubpassShadingFeaturesHUAWEI-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceExternalMemoryRDMAFeaturesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceExternalMemoryRDMAFeaturesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDevicePresentIdFeaturesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDevicePresentIdFeaturesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDevicePresentWaitFeaturesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDevicePresentWaitFeaturesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceHostImageCopyFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceHostImageCopyFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDevicePresentBarrierFeaturesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDevicePresentBarrierFeaturesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShaderIntegerDotProductFeatures": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShaderIntegerDotProductFeatures-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceMaintenance4Features": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceMaintenance4Features-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceMaintenance5FeaturesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceMaintenance5FeaturesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceMaintenance6FeaturesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceMaintenance6FeaturesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceMaintenance7FeaturesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceMaintenance7FeaturesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceDynamicRenderingFeatures": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceDynamicRenderingFeatures-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDevicePipelineRobustnessFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDevicePipelineRobustnessFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceImageViewMinLodFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceImageViewMinLodFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceLinearColorAttachmentFeaturesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceLinearColorAttachmentFeaturesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceNestedCommandBufferFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceNestedCommandBufferFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDevicePipelineBinaryFeaturesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDevicePipelineBinaryFeaturesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceImage2DViewOf3DFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceImage2DViewOf3DFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceImageCompressionControlFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceImageCompressionControlFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShaderFloatControls2FeaturesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShaderFloatControls2FeaturesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceAntiLagFeaturesAMD": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceAntiLagFeaturesAMD-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceTilePropertiesFeaturesQCOM": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceTilePropertiesFeaturesQCOM-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceImageProcessingFeaturesQCOM": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceImageProcessingFeaturesQCOM-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceImageProcessing2FeaturesQCOM": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceImageProcessing2FeaturesQCOM-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceDepthClampZeroOneFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceDepthClampZeroOneFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShaderTileImageFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShaderTileImageFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceDepthBiasControlFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceDepthBiasControlFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceAddressBindingReportFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceAddressBindingReportFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceOpticalFlowFeaturesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceOpticalFlowFeaturesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceFaultFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceFaultFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShaderObjectFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShaderObjectFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceFrameBoundaryFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceFrameBoundaryFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShaderEnqueueFeaturesAMDX": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShaderEnqueueFeaturesAMDX-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceCubicClampFeaturesQCOM": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceCubicClampFeaturesQCOM-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceYcbcrDegammaFeaturesQCOM": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceYcbcrDegammaFeaturesQCOM-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceCubicWeightsFeaturesQCOM": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceCubicWeightsFeaturesQCOM-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDevicePerStageDescriptorSetFeaturesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDevicePerStageDescriptorSetFeaturesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceCudaKernelLaunchFeaturesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceCudaKernelLaunchFeaturesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceExternalFormatResolveFeaturesANDROID": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceExternalFormatResolveFeaturesANDROID-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceSchedulingControlsFeaturesARM": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceSchedulingControlsFeaturesARM-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceRenderPassStripedFeaturesARM": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceRenderPassStripedFeaturesARM-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShaderExpectAssumeFeaturesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShaderExpectAssumeFeaturesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShaderQuadControlFeaturesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShaderQuadControlFeaturesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceMapMemoryPlacedFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceMapMemoryPlacedFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceRawAccessChainsFeaturesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceRawAccessChainsFeaturesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceCommandBufferInheritanceFeaturesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceCommandBufferInheritanceFeaturesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceImageAlignmentControlFeaturesMESA": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceImageAlignmentControlFeaturesMESA-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDevicePushDescriptorPropertiesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDevicePushDescriptorPropertiesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceMultiviewProperties": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceMultiviewProperties-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceFloatControlsProperties": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceFloatControlsProperties-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceDiscardRectanglePropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceDiscardRectanglePropertiesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceSampleLocationsPropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceSampleLocationsPropertiesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceExternalMemoryHostPropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceExternalMemoryHostPropertiesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDevicePointClippingProperties": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDevicePointClippingProperties-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceSubgroupProperties": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceSubgroupProperties-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceSubgroupSizeControlProperties": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceSubgroupSizeControlProperties-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceSamplerFilterMinmaxProperties": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceSamplerFilterMinmaxProperties-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceProtectedMemoryProperties": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceProtectedMemoryProperties-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceMaintenance3Properties": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceMaintenance3Properties-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceMaintenance4Properties": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceMaintenance4Properties-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceMaintenance5PropertiesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceMaintenance5PropertiesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceMaintenance6PropertiesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceMaintenance6PropertiesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceMaintenance7PropertiesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceMaintenance7PropertiesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceLayeredApiPropertiesListKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceLayeredApiPropertiesListKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceLayeredApiPropertiesListKHR-pLayeredApis-parameter",
          "text": "If <code>layeredApiCount</code> is not <code>0</code>, and <code>pLayeredApis</code> is not <code>NULL</code>, <code>pLayeredApis</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>layeredApiCount</code> <a href=\"#VkPhysicalDeviceLayeredApiPropertiesKHR\">VkPhysicalDeviceLayeredApiPropertiesKHR</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceLayeredApiPropertiesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceLayeredApiPropertiesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceLayeredApiPropertiesKHR-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPhysicalDeviceLayeredApiVulkanPropertiesKHR\">VkPhysicalDeviceLayeredApiVulkanPropertiesKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceLayeredApiPropertiesKHR-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceLayeredApiVulkanPropertiesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceLayeredApiVulkanPropertiesKHR-pNext-10011",
          "text": "Only <a href=\"#VkPhysicalDeviceDriverProperties\">VkPhysicalDeviceDriverProperties</a> and <a href=\"#VkPhysicalDeviceIDProperties\">VkPhysicalDeviceIDProperties</a> are allowed in the <code>pNext</code> chain of <code>properties</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceLayeredApiVulkanPropertiesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceMeshShaderPropertiesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceMeshShaderPropertiesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceMeshShaderPropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceMeshShaderPropertiesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceDescriptorIndexingProperties": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceDescriptorIndexingProperties-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceInlineUniformBlockProperties": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceInlineUniformBlockProperties-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceConservativeRasterizationPropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceConservativeRasterizationPropertiesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceFragmentDensityMapPropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceFragmentDensityMapPropertiesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceFragmentDensityMap2PropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceFragmentDensityMap2PropertiesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShaderCorePropertiesAMD": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShaderCorePropertiesAMD-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShaderCoreProperties2AMD": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShaderCoreProperties2AMD-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceDepthStencilResolveProperties": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceDepthStencilResolveProperties-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDevicePerformanceQueryPropertiesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDevicePerformanceQueryPropertiesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShadingRateImagePropertiesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShadingRateImagePropertiesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceMemoryDecompressionPropertiesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceMemoryDecompressionPropertiesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceTransformFeedbackPropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceTransformFeedbackPropertiesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceCopyMemoryIndirectPropertiesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceCopyMemoryIndirectPropertiesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceRayTracingPropertiesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceRayTracingPropertiesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceAccelerationStructurePropertiesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceAccelerationStructurePropertiesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceRayTracingPipelinePropertiesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceRayTracingPipelinePropertiesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceCooperativeMatrixPropertiesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceCooperativeMatrixPropertiesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceCooperativeMatrixPropertiesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceCooperativeMatrixPropertiesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShaderSMBuiltinsPropertiesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShaderSMBuiltinsPropertiesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceTexelBufferAlignmentProperties": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceTexelBufferAlignmentProperties-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceTimelineSemaphoreProperties": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceTimelineSemaphoreProperties-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceLineRasterizationPropertiesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceLineRasterizationPropertiesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceRobustness2PropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceRobustness2PropertiesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDevicePortabilitySubsetPropertiesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDevicePortabilitySubsetPropertiesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceFragmentShadingRatePropertiesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceFragmentShadingRatePropertiesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV-maxFragmentShadingRateInvocationCount-parameter",
          "text": "<code>maxFragmentShadingRateInvocationCount</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceCustomBorderColorPropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceCustomBorderColorPropertiesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceProvokingVertexPropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceProvokingVertexPropertiesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceDescriptorBufferPropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceDescriptorBufferPropertiesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceHostImageCopyPropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceHostImageCopyPropertiesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceHostImageCopyPropertiesEXT-pCopySrcLayouts-parameter",
          "text": "If <code>copySrcLayoutCount</code> is not <code>0</code>, and <code>pCopySrcLayouts</code> is not <code>NULL</code>, <code>pCopySrcLayouts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>copySrcLayoutCount</code> <a href=\"#VkImageLayout\">VkImageLayout</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceHostImageCopyPropertiesEXT-pCopyDstLayouts-parameter",
          "text": "If <code>copyDstLayoutCount</code> is not <code>0</code>, and <code>pCopyDstLayouts</code> is not <code>NULL</code>, <code>pCopyDstLayouts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>copyDstLayoutCount</code> <a href=\"#VkImageLayout\">VkImageLayout</a> values",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceSubpassShadingPropertiesHUAWEI": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceSubpassShadingPropertiesHUAWEI-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceMultiDrawPropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceMultiDrawPropertiesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceNestedCommandBufferPropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceNestedCommandBufferPropertiesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDevicePipelineRobustnessPropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDevicePipelineRobustnessPropertiesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceExtendedDynamicState3PropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceExtendedDynamicState3PropertiesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceOpticalFlowPropertiesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceOpticalFlowPropertiesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceOpacityMicromapPropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceOpacityMicromapPropertiesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceDisplacementMicromapPropertiesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceDisplacementMicromapPropertiesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShaderCorePropertiesARM": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShaderCorePropertiesARM-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShaderObjectPropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShaderObjectPropertiesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceShaderEnqueuePropertiesAMDX": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceShaderEnqueuePropertiesAMDX-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceCudaKernelLaunchPropertiesNV": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceCudaKernelLaunchPropertiesNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceExternalFormatResolvePropertiesANDROID": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceExternalFormatResolvePropertiesANDROID-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDevicePipelineBinaryPropertiesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDevicePipelineBinaryPropertiesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceRenderPassStripedPropertiesARM": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceRenderPassStripedPropertiesARM-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceMapMemoryPlacedPropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceMapMemoryPlacedPropertiesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceImageAlignmentControlPropertiesMESA": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceImageAlignmentControlPropertiesMESA-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceMultisamplePropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-samples-parameter",
          "text": "<code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-pMultisampleProperties-parameter",
          "text": "<code>pMultisampleProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkMultisamplePropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-VkMultisamplePropertiesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkMultisamplePropertiesEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceFormatProperties": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceFormatProperties-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceFormatProperties-format-parameter",
          "text": "<code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceFormatProperties-pFormatProperties-parameter",
          "text": "<code>pFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkFormatProperties\">VkFormatProperties</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceFormatProperties2": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceFormatProperties2-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceFormatProperties2-format-parameter",
          "text": "<code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceFormatProperties2-pFormatProperties-parameter",
          "text": "<code>pFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkFormatProperties2\">VkFormatProperties2</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkFormatProperties2": {
      "core": [
        {
          "vuid": "VUID-VkFormatProperties2-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFormatProperties2-pNext-pNext",
          "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=\"#VkDrmFormatModifierPropertiesList2EXT\">VkDrmFormatModifierPropertiesList2EXT</a>, <a href=\"#VkDrmFormatModifierPropertiesListEXT\">VkDrmFormatModifierPropertiesListEXT</a>, <a href=\"#VkFormatProperties3\">VkFormatProperties3</a>, or <a href=\"#VkSubpassResolvePerformanceQueryEXT\">VkSubpassResolvePerformanceQueryEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFormatProperties2-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        }
      ]
    },
    "VkDrmFormatModifierPropertiesListEXT": {
      "core": [
        {
          "vuid": "VUID-VkDrmFormatModifierPropertiesListEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkDrmFormatModifierPropertiesList2EXT": {
      "core": [
        {
          "vuid": "VUID-VkDrmFormatModifierPropertiesList2EXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkFormatProperties3": {
      "core": [
        {
          "vuid": "VUID-VkFormatProperties3-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkSubpassResolvePerformanceQueryEXT": {
      "core": [
        {
          "vuid": "VUID-VkSubpassResolvePerformanceQueryEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceImageFormatProperties": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-tiling-02248",
          "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)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-format-parameter",
          "text": "<code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-type-parameter",
          "text": "<code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-tiling-parameter",
          "text": "<code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-usage-parameter",
          "text": "<code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-usage-requiredbitmask",
          "text": "<code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-pImageFormatProperties-parameter",
          "text": "<code>pImageFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkImageFormatProperties\">VkImageFormatProperties</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceExternalImageFormatPropertiesNV": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-externalHandleType-07721",
          "text": "<code>externalHandleType</code> <strong class=\"purple\">must</strong> not have more than one bit set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-format-parameter",
          "text": "<code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-type-parameter",
          "text": "<code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-tiling-parameter",
          "text": "<code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-usage-parameter",
          "text": "<code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-usage-requiredbitmask",
          "text": "<code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-externalHandleType-parameter",
          "text": "<code>externalHandleType</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-pExternalImageFormatProperties-parameter",
          "text": "<code>pExternalImageFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkExternalImageFormatPropertiesNV\">VkExternalImageFormatPropertiesNV</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceImageFormatProperties2": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-pNext-01868",
          "text": "If the <code>pNext</code> chain of <code>pImageFormatProperties</code> includes a <a href=\"#VkAndroidHardwareBufferUsageANDROID\">VkAndroidHardwareBufferUsageANDROID</a> structure, the <code>pNext</code> chain of <code>pImageFormatInfo</code> <strong class=\"purple\">must</strong> include a <a href=\"#VkPhysicalDeviceExternalImageFormatInfo\">VkPhysicalDeviceExternalImageFormatInfo</a> structure with <code>handleType</code> set to <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-pNext-09004",
          "text": "If the <code>pNext</code> chain of <code>pImageFormatProperties</code> includes a <a href=\"#VkHostImageCopyDevicePerformanceQueryEXT\">VkHostImageCopyDevicePerformanceQueryEXT</a> structure, <code>pImageFormatInfo-&gt;usage</code> <strong class=\"purple\">must</strong> contain <code>VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-pImageFormatInfo-parameter",
          "text": "<code>pImageFormatInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPhysicalDeviceImageFormatInfo2\">VkPhysicalDeviceImageFormatInfo2</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-pImageFormatProperties-parameter",
          "text": "<code>pImageFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkImageFormatProperties2\">VkImageFormatProperties2</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceImageFormatInfo2": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-tiling-02249",
          "text": "<code>tiling</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code> if and only if the <code>pNext</code> chain includes <a href=\"#VkPhysicalDeviceImageDrmFormatModifierInfoEXT\">VkPhysicalDeviceImageDrmFormatModifierInfoEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-tiling-02313",
          "text": "If <code>tiling</code> is <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code> and <code>flags</code> contains <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a> structure with non-zero <code>viewFormatCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-pNext-pNext",
          "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=\"#VkImageCompressionControlEXT\">VkImageCompressionControlEXT</a>, <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>, <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a>, <a href=\"#VkOpticalFlowImageFormatInfoNV\">VkOpticalFlowImageFormatInfoNV</a>, <a href=\"#VkPhysicalDeviceExternalImageFormatInfo\">VkPhysicalDeviceExternalImageFormatInfo</a>, <a href=\"#VkPhysicalDeviceImageDrmFormatModifierInfoEXT\">VkPhysicalDeviceImageDrmFormatModifierInfoEXT</a>, <a href=\"#VkPhysicalDeviceImageViewImageFormatInfoEXT\">VkPhysicalDeviceImageViewImageFormatInfoEXT</a>, or <a href=\"#VkVideoProfileListInfoKHR\">VkVideoProfileListInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-format-parameter",
          "text": "<code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-type-parameter",
          "text": "<code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-tiling-parameter",
          "text": "<code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-usage-parameter",
          "text": "<code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-usage-requiredbitmask",
          "text": "<code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values",
          "page": "vkspec"
        }
      ]
    },
    "VkImageFormatProperties2": {
      "core": [
        {
          "vuid": "VUID-VkImageFormatProperties2-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageFormatProperties2-pNext-pNext",
          "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=\"#VkHostImageCopyDevicePerformanceQueryEXT\">VkHostImageCopyDevicePerformanceQueryEXT</a>, <a href=\"#VkImageCompressionPropertiesEXT\">VkImageCompressionPropertiesEXT</a>, <a href=\"#VkSamplerYcbcrConversionImageFormatProperties\">VkSamplerYcbcrConversionImageFormatProperties</a>, or <a href=\"#VkTextureLODGatherFormatPropertiesAMD\">VkTextureLODGatherFormatPropertiesAMD</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkImageFormatProperties2-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        }
      ]
    },
    "VkTextureLODGatherFormatPropertiesAMD": {
      "core": [
        {
          "vuid": "VUID-VkTextureLODGatherFormatPropertiesAMD-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceExternalImageFormatInfo": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceExternalImageFormatInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceExternalImageFormatInfo-handleType-parameter",
          "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",
          "page": "vkspec"
        }
      ]
    },
    "VkExternalImageFormatProperties": {
      "core": [
        {
          "vuid": "VUID-VkExternalImageFormatProperties-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceImageDrmFormatModifierInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02314",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02315",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02316",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-parameter",
          "text": "<code>sharingMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSharingMode\">VkSharingMode</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkSamplerYcbcrConversionImageFormatProperties": {
      "core": [
        {
          "vuid": "VUID-VkSamplerYcbcrConversionImageFormatProperties-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkAndroidHardwareBufferUsageANDROID": {
      "core": [
        {
          "vuid": "VUID-VkAndroidHardwareBufferUsageANDROID-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkHostImageCopyDevicePerformanceQueryEXT": {
      "core": [
        {
          "vuid": "VUID-VkHostImageCopyDevicePerformanceQueryEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceImageViewImageFormatInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceImageViewImageFormatInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceImageViewImageFormatInfoEXT-imageViewType-parameter",
          "text": "<code>imageViewType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageViewType\">VkImageViewType</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkFilterCubicImageViewImageFormatPropertiesEXT": {
      "core": [
        {
          "vuid": "VUID-VkFilterCubicImageViewImageFormatPropertiesEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFilterCubicImageViewImageFormatPropertiesEXT-pNext-02627",
          "text": "If the <code>pNext</code> chain of the <a href=\"#VkImageFormatProperties2\">VkImageFormatProperties2</a> structure includes a <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a> structure, the <code>pNext</code> chain of the <a href=\"#VkPhysicalDeviceImageFormatInfo2\">VkPhysicalDeviceImageFormatInfo2</a> structure <strong class=\"purple\">must</strong> include a <a href=\"#VkPhysicalDeviceImageViewImageFormatInfoEXT\">VkPhysicalDeviceImageViewImageFormatInfoEXT</a> structure with an <code>imageViewType</code> that is compatible with <code>imageType</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceExternalBufferProperties": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceExternalBufferProperties-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceExternalBufferProperties-pExternalBufferInfo-parameter",
          "text": "<code>pExternalBufferInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPhysicalDeviceExternalBufferInfo\">VkPhysicalDeviceExternalBufferInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceExternalBufferProperties-pExternalBufferProperties-parameter",
          "text": "<code>pExternalBufferProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceExternalBufferInfo": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-None-09499",
          "text": "If the <code>pNext</code> chain does not include a <a href=\"#VkBufferUsageFlags2CreateInfoKHR\">VkBufferUsageFlags2CreateInfoKHR</a> structure, <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferUsageFlagBits\">VkBufferUsageFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-None-09500",
          "text": "If the <code>pNext</code> chain does not include a <a href=\"#VkBufferUsageFlags2CreateInfoKHR\">VkBufferUsageFlags2CreateInfoKHR</a> structure, <code>usage</code> <strong class=\"purple\">must</strong> not be 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkBufferUsageFlags2CreateInfoKHR\">VkBufferUsageFlags2CreateInfoKHR</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferCreateFlagBits\">VkBufferCreateFlagBits</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-handleType-parameter",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkExternalBufferProperties": {
      "core": [
        {
          "vuid": "VUID-VkExternalBufferProperties-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExternalBufferProperties-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceExternalSemaphoreProperties": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-pExternalSemaphoreInfo-parameter",
          "text": "<code>pExternalSemaphoreInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPhysicalDeviceExternalSemaphoreInfo\">VkPhysicalDeviceExternalSemaphoreInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-pExternalSemaphoreProperties-parameter",
          "text": "<code>pExternalSemaphoreProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkExternalSemaphoreProperties\">VkExternalSemaphoreProperties</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceExternalSemaphoreInfo": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceExternalSemaphoreInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceExternalSemaphoreInfo-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkSemaphoreTypeCreateInfo\">VkSemaphoreTypeCreateInfo</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceExternalSemaphoreInfo-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceExternalSemaphoreInfo-handleType-parameter",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkExternalSemaphoreProperties": {
      "core": [
        {
          "vuid": "VUID-VkExternalSemaphoreProperties-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExternalSemaphoreProperties-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceExternalFenceProperties": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceExternalFenceProperties-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceExternalFenceProperties-pExternalFenceInfo-parameter",
          "text": "<code>pExternalFenceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPhysicalDeviceExternalFenceInfo\">VkPhysicalDeviceExternalFenceInfo</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceExternalFenceProperties-pExternalFenceProperties-parameter",
          "text": "<code>pExternalFenceProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkExternalFenceProperties\">VkExternalFenceProperties</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceExternalFenceInfo": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceExternalFenceInfo-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceExternalFenceInfo-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceExternalFenceInfo-handleType-parameter",
          "text": "<code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkExternalFenceProperties": {
      "core": [
        {
          "vuid": "VUID-VkExternalFenceProperties-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkExternalFenceProperties-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceCalibrateableTimeDomainsKHR": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceCalibrateableTimeDomainsKHR-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceCalibrateableTimeDomainsKHR-pTimeDomainCount-parameter",
          "text": "<code>pTimeDomainCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceCalibrateableTimeDomainsKHR-pTimeDomains-parameter",
          "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=\"#VkTimeDomainKHR\">VkTimeDomainKHR</a> values",
          "page": "vkspec"
        }
      ]
    },
    "vkSetDebugUtilsObjectNameEXT": {
      "core": [
        {
          "vuid": "VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-02587",
          "text": "<code>pNameInfo-&gt;objectType</code> <strong class=\"purple\">must</strong> not be <code>VK_OBJECT_TYPE_UNKNOWN</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-02588",
          "text": "<code>pNameInfo-&gt;objectHandle</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-07872",
          "text": "If <code>pNameInfo-&gt;objectHandle</code> is the valid handle of an instance-level object, the <a href=\"#VkDevice\">VkDevice</a> identified by <code>device</code> <strong class=\"purple\">must</strong> be a descendent of the same <a href=\"#VkInstance\">VkInstance</a> as the object identified by <code>pNameInfo-&gt;objectHandle</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-07873",
          "text": "If <code>pNameInfo-&gt;objectHandle</code> is the valid handle of a physical-device-level object, the <a href=\"#VkDevice\">VkDevice</a> identified by <code>device</code> <strong class=\"purple\">must</strong> be a descendant of the same <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> as the object identified by <code>pNameInfo-&gt;objectHandle</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-07874",
          "text": "If <code>pNameInfo-&gt;objectHandle</code> is the valid handle of a device-level object, that object <strong class=\"purple\">must</strong> be a descendent of the <a href=\"#VkDevice\">VkDevice</a> identified by <code>device</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetDebugUtilsObjectNameEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-parameter",
          "text": "<code>pNameInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugUtilsObjectNameInfoEXT\">VkDebugUtilsObjectNameInfoEXT</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkDebugUtilsObjectNameInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-objectType-02589",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-objectType-02590",
          "text": "If <code>objectType</code> is not <code>VK_OBJECT_TYPE_UNKNOWN</code>, <code>objectHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> or a valid Vulkan handle of the type associated with <code>objectType</code> as defined in the <a href=\"#debugging-object-types\"><code>VkObjectType</code> and Vulkan Handle Relationship</a> table",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-objectType-parameter",
          "text": "<code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectType\">VkObjectType</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-pObjectName-parameter",
          "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",
          "page": "vkspec"
        }
      ]
    },
    "vkSetDebugUtilsObjectTagEXT": {
      "core": [
        {
          "vuid": "VUID-vkSetDebugUtilsObjectTagEXT-pNameInfo-07875",
          "text": "If <code>pNameInfo-&gt;objectHandle</code> is the valid handle of an instance-level object, the <a href=\"#VkDevice\">VkDevice</a> identified by <code>device</code> <strong class=\"purple\">must</strong> be a descendent of the same <a href=\"#VkInstance\">VkInstance</a> as the object identified by <code>pNameInfo-&gt;objectHandle</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetDebugUtilsObjectTagEXT-pNameInfo-07876",
          "text": "If <code>pNameInfo-&gt;objectHandle</code> is the valid handle of a physical-device-level object, the <a href=\"#VkDevice\">VkDevice</a> identified by <code>device</code> <strong class=\"purple\">must</strong> be a descendant of the same <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> as the object identified by <code>pNameInfo-&gt;objectHandle</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetDebugUtilsObjectTagEXT-pNameInfo-07877",
          "text": "If <code>pNameInfo-&gt;objectHandle</code> is the valid handle of a device-level object, that object <strong class=\"purple\">must</strong> be a descendent of the <a href=\"#VkDevice\">VkDevice</a> identified by <code>device</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetDebugUtilsObjectTagEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSetDebugUtilsObjectTagEXT-pTagInfo-parameter",
          "text": "<code>pTagInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugUtilsObjectTagInfoEXT\">VkDebugUtilsObjectTagInfoEXT</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkDebugUtilsObjectTagInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-objectType-01908",
          "text": "<code>objectType</code> <strong class=\"purple\">must</strong> not be <code>VK_OBJECT_TYPE_UNKNOWN</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-objectHandle-01910",
          "text": "<code>objectHandle</code> <strong class=\"purple\">must</strong> be a valid Vulkan handle of the type associated with <code>objectType</code> as defined in the <a href=\"#debugging-object-types\"><code>VkObjectType</code> and Vulkan Handle Relationship</a> table",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-objectType-parameter",
          "text": "<code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectType\">VkObjectType</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-pTag-parameter",
          "text": "<code>pTag</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>tagSize</code> bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-tagSize-arraylength",
          "text": "<code>tagSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkQueueBeginDebugUtilsLabelEXT": {
      "core": [
        {
          "vuid": "VUID-vkQueueBeginDebugUtilsLabelEXT-queue-parameter",
          "text": "<code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueBeginDebugUtilsLabelEXT-pLabelInfo-parameter",
          "text": "<code>pLabelInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugUtilsLabelEXT\">VkDebugUtilsLabelEXT</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkDebugUtilsLabelEXT": {
      "core": [
        {
          "vuid": "VUID-VkDebugUtilsLabelEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugUtilsLabelEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugUtilsLabelEXT-pLabelName-parameter",
          "text": "<code>pLabelName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string",
          "page": "vkspec"
        }
      ]
    },
    "vkQueueEndDebugUtilsLabelEXT": {
      "core": [
        {
          "vuid": "VUID-vkQueueEndDebugUtilsLabelEXT-None-01911",
          "text": "There <strong class=\"purple\">must</strong> be an outstanding <code>vkQueueBeginDebugUtilsLabelEXT</code> command prior to the <code>vkQueueEndDebugUtilsLabelEXT</code> on the queue",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueEndDebugUtilsLabelEXT-queue-parameter",
          "text": "<code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "vkQueueInsertDebugUtilsLabelEXT": {
      "core": [
        {
          "vuid": "VUID-vkQueueInsertDebugUtilsLabelEXT-queue-parameter",
          "text": "<code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkQueueInsertDebugUtilsLabelEXT-pLabelInfo-parameter",
          "text": "<code>pLabelInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugUtilsLabelEXT\">VkDebugUtilsLabelEXT</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdBeginDebugUtilsLabelEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-pLabelInfo-parameter",
          "text": "<code>pLabelInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugUtilsLabelEXT\">VkDebugUtilsLabelEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdEndDebugUtilsLabelEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-01912",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-01913",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdInsertDebugUtilsLabelEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-pLabelInfo-parameter",
          "text": "<code>pLabelInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugUtilsLabelEXT\">VkDebugUtilsLabelEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateDebugUtilsMessengerEXT": {
      "core": [
        {
          "vuid": "VUID-vkCreateDebugUtilsMessengerEXT-instance-parameter",
          "text": "<code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateDebugUtilsMessengerEXT-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugUtilsMessengerCreateInfoEXT\">VkDebugUtilsMessengerCreateInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateDebugUtilsMessengerEXT-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateDebugUtilsMessengerEXT-pMessenger-parameter",
          "text": "<code>pMessenger</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDebugUtilsMessengerEXT\">VkDebugUtilsMessengerEXT</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkDebugUtilsMessengerCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageSeverity-parameter",
          "text": "<code>messageSeverity</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugUtilsMessageSeverityFlagBitsEXT\">VkDebugUtilsMessageSeverityFlagBitsEXT</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageSeverity-requiredbitmask",
          "text": "<code>messageSeverity</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageType-parameter",
          "text": "<code>messageType</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugUtilsMessageTypeFlagBitsEXT\">VkDebugUtilsMessageTypeFlagBitsEXT</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageType-requiredbitmask",
          "text": "<code>messageType</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-pfnUserCallback-parameter",
          "text": "<code>pfnUserCallback</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#PFN_vkDebugUtilsMessengerCallbackEXT\">PFN_vkDebugUtilsMessengerCallbackEXT</a> value",
          "page": "vkspec"
        }
      ]
    },
    "PFN_vkDebugUtilsMessengerCallbackEXT": {
      "core": [
        {
          "vuid": "VUID-PFN_vkDebugUtilsMessengerCallbackEXT-None-04769",
          "text": "The callback <strong class=\"purple\">must</strong> not make calls to any Vulkan commands",
          "page": "vkspec"
        }
      ]
    },
    "VkDebugUtilsMessengerCallbackDataEXT": {
      "core": [
        {
          "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceAddressBindingCallbackDataEXT\">VkDeviceAddressBindingCallbackDataEXT</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-sType-unique",
          "text": "The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-flags-zerobitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pMessageIdName-parameter",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pMessage-parameter",
          "text": "If <code>pMessage</code> is not <code>NULL</code>, <code>pMessage</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pQueueLabels-parameter",
          "text": "If <code>queueLabelCount</code> is not <code>0</code>, <code>pQueueLabels</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueLabelCount</code> valid <a href=\"#VkDebugUtilsLabelEXT\">VkDebugUtilsLabelEXT</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pCmdBufLabels-parameter",
          "text": "If <code>cmdBufLabelCount</code> is not <code>0</code>, <code>pCmdBufLabels</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>cmdBufLabelCount</code> valid <a href=\"#VkDebugUtilsLabelEXT\">VkDebugUtilsLabelEXT</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pObjects-parameter",
          "text": "If <code>objectCount</code> is not <code>0</code>, <code>pObjects</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> valid <a href=\"#VkDebugUtilsObjectNameInfoEXT\">VkDebugUtilsObjectNameInfoEXT</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkDeviceAddressBindingCallbackDataEXT": {
      "core": [
        {
          "vuid": "VUID-VkDeviceAddressBindingCallbackDataEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceAddressBindingCallbackDataEXT-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDeviceAddressBindingFlagBitsEXT\">VkDeviceAddressBindingFlagBitsEXT</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceAddressBindingCallbackDataEXT-bindingType-parameter",
          "text": "<code>bindingType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceAddressBindingTypeEXT\">VkDeviceAddressBindingTypeEXT</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkSubmitDebugUtilsMessageEXT": {
      "core": [
        {
          "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-objectType-02591",
          "text": "The <code>objectType</code> member of each element of <code>pCallbackData-&gt;pObjects</code> <strong class=\"purple\">must</strong> not be <code>VK_OBJECT_TYPE_UNKNOWN</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-instance-parameter",
          "text": "<code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-messageSeverity-parameter",
          "text": "<code>messageSeverity</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugUtilsMessageSeverityFlagBitsEXT\">VkDebugUtilsMessageSeverityFlagBitsEXT</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-messageTypes-parameter",
          "text": "<code>messageTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugUtilsMessageTypeFlagBitsEXT\">VkDebugUtilsMessageTypeFlagBitsEXT</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-messageTypes-requiredbitmask",
          "text": "<code>messageTypes</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-pCallbackData-parameter",
          "text": "<code>pCallbackData</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugUtilsMessengerCallbackDataEXT\">VkDebugUtilsMessengerCallbackDataEXT</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroyDebugUtilsMessengerEXT": {
      "core": [
        {
          "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-01915",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-01916",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-instance-parameter",
          "text": "<code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-parameter",
          "text": "If <code>messenger</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>messenger</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugUtilsMessengerEXT\">VkDebugUtilsMessengerEXT</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-parent",
          "text": "If <code>messenger</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>instance</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkDebugMarkerSetObjectNameEXT": {
      "core": [
        {
          "vuid": "VUID-vkDebugMarkerSetObjectNameEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDebugMarkerSetObjectNameEXT-pNameInfo-parameter",
          "text": "<code>pNameInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugMarkerObjectNameInfoEXT\">VkDebugMarkerObjectNameInfoEXT</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkDebugMarkerObjectNameInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-objectType-01490",
          "text": "<code>objectType</code> <strong class=\"purple\">must</strong> not be <code>VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-object-01491",
          "text": "<code>object</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-object-01492",
          "text": "<code>object</code> <strong class=\"purple\">must</strong> be a Vulkan object of the type associated with <code>objectType</code> as defined in <a href=\"#debug-report-object-types\"><code>VkDebugReportObjectTypeEXT</code> and Vulkan Handle Relationship</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-objectType-parameter",
          "text": "<code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugReportObjectTypeEXT\">VkDebugReportObjectTypeEXT</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-pObjectName-parameter",
          "text": "<code>pObjectName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string",
          "page": "vkspec"
        }
      ]
    },
    "vkDebugMarkerSetObjectTagEXT": {
      "core": [
        {
          "vuid": "VUID-vkDebugMarkerSetObjectTagEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDebugMarkerSetObjectTagEXT-pTagInfo-parameter",
          "text": "<code>pTagInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugMarkerObjectTagInfoEXT\">VkDebugMarkerObjectTagInfoEXT</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkDebugMarkerObjectTagInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-objectType-01493",
          "text": "<code>objectType</code> <strong class=\"purple\">must</strong> not be <code>VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-object-01494",
          "text": "<code>object</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-object-01495",
          "text": "<code>object</code> <strong class=\"purple\">must</strong> be a Vulkan object of the type associated with <code>objectType</code> as defined in <a href=\"#debug-report-object-types\"><code>VkDebugReportObjectTypeEXT</code> and Vulkan Handle Relationship</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-objectType-parameter",
          "text": "<code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugReportObjectTypeEXT\">VkDebugReportObjectTypeEXT</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-pTag-parameter",
          "text": "<code>pTag</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>tagSize</code> bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-tagSize-arraylength",
          "text": "<code>tagSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdDebugMarkerBeginEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDebugMarkerBeginEXT-pMarkerInfo-parameter",
          "text": "<code>pMarkerInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugMarkerMarkerInfoEXT\">VkDebugMarkerMarkerInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDebugMarkerBeginEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkDebugMarkerMarkerInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkDebugMarkerMarkerInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugMarkerMarkerInfoEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugMarkerMarkerInfoEXT-pMarkerName-parameter",
          "text": "<code>pMarkerName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdDebugMarkerEndEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-01239",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-01240",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDebugMarkerEndEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdDebugMarkerInsertEXT": {
      "core": [
        {
          "vuid": "VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDebugMarkerInsertEXT-pMarkerInfo-parameter",
          "text": "<code>pMarkerInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugMarkerMarkerInfoEXT\">VkDebugMarkerMarkerInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdDebugMarkerInsertEXT-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateDebugReportCallbackEXT": {
      "core": [
        {
          "vuid": "VUID-vkCreateDebugReportCallbackEXT-instance-parameter",
          "text": "<code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateDebugReportCallbackEXT-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugReportCallbackCreateInfoEXT\">VkDebugReportCallbackCreateInfoEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateDebugReportCallbackEXT-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateDebugReportCallbackEXT-pCallback-parameter",
          "text": "<code>pCallback</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDebugReportCallbackEXT\">VkDebugReportCallbackEXT</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkDebugReportCallbackCreateInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkDebugReportCallbackCreateInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugReportCallbackCreateInfoEXT-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugReportFlagBitsEXT\">VkDebugReportFlagBitsEXT</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDebugReportCallbackCreateInfoEXT-pfnCallback-parameter",
          "text": "<code>pfnCallback</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#PFN_vkDebugReportCallbackEXT\">PFN_vkDebugReportCallbackEXT</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkDebugReportMessageEXT": {
      "core": [
        {
          "vuid": "VUID-vkDebugReportMessageEXT-object-01241",
          "text": "<code>object</code> <strong class=\"purple\">must</strong> be a Vulkan object or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDebugReportMessageEXT-objectType-01498",
          "text": "If <code>objectType</code> is not <code>VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT</code> and <code>object</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>object</code> <strong class=\"purple\">must</strong> be a Vulkan object of the corresponding type associated with <code>objectType</code> as defined in <a href=\"#debug-report-object-types\"><code>VkDebugReportObjectTypeEXT</code> and Vulkan Handle Relationship</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDebugReportMessageEXT-instance-parameter",
          "text": "<code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDebugReportMessageEXT-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugReportFlagBitsEXT\">VkDebugReportFlagBitsEXT</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDebugReportMessageEXT-flags-requiredbitmask",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDebugReportMessageEXT-objectType-parameter",
          "text": "<code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugReportObjectTypeEXT\">VkDebugReportObjectTypeEXT</a> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDebugReportMessageEXT-pLayerPrefix-parameter",
          "text": "<code>pLayerPrefix</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDebugReportMessageEXT-pMessage-parameter",
          "text": "<code>pMessage</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroyDebugReportCallbackEXT": {
      "core": [
        {
          "vuid": "VUID-vkDestroyDebugReportCallbackEXT-instance-01242",
          "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",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyDebugReportCallbackEXT-instance-01243",
          "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>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyDebugReportCallbackEXT-instance-parameter",
          "text": "<code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyDebugReportCallbackEXT-callback-parameter",
          "text": "If <code>callback</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>callback</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugReportCallbackEXT\">VkDebugReportCallbackEXT</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyDebugReportCallbackEXT-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyDebugReportCallbackEXT-callback-parent",
          "text": "If <code>callback</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>instance</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdSetCheckpointNV": {
      "core": [
        {
          "vuid": "VUID-vkCmdSetCheckpointNV-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCheckpointNV-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCheckpointNV-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, or transfer operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdSetCheckpointNV-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "vkGetQueueCheckpointData2NV": {
      "core": [
        {
          "vuid": "VUID-vkGetQueueCheckpointData2NV-queue-03892",
          "text": "The device that <code>queue</code> belongs to <strong class=\"purple\">must</strong> be in the lost state",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetQueueCheckpointData2NV-queue-parameter",
          "text": "<code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetQueueCheckpointData2NV-pCheckpointDataCount-parameter",
          "text": "<code>pCheckpointDataCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetQueueCheckpointData2NV-pCheckpointData-parameter",
          "text": "If the value referenced by <code>pCheckpointDataCount</code> is not <code>0</code>, and <code>pCheckpointData</code> is not <code>NULL</code>, <code>pCheckpointData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pCheckpointDataCount</code> <a href=\"#VkCheckpointData2NV\">VkCheckpointData2NV</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkCheckpointData2NV": {
      "core": [
        {
          "vuid": "VUID-VkCheckpointData2NV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCheckpointData2NV-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetQueueCheckpointDataNV": {
      "core": [
        {
          "vuid": "VUID-vkGetQueueCheckpointDataNV-queue-02025",
          "text": "The device that <code>queue</code> belongs to <strong class=\"purple\">must</strong> be in the lost state",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetQueueCheckpointDataNV-queue-parameter",
          "text": "<code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetQueueCheckpointDataNV-pCheckpointDataCount-parameter",
          "text": "<code>pCheckpointDataCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetQueueCheckpointDataNV-pCheckpointData-parameter",
          "text": "If the value referenced by <code>pCheckpointDataCount</code> is not <code>0</code>, and <code>pCheckpointData</code> is not <code>NULL</code>, <code>pCheckpointData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pCheckpointDataCount</code> <a href=\"#VkCheckpointDataNV\">VkCheckpointDataNV</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkCheckpointDataNV": {
      "core": [
        {
          "vuid": "VUID-VkCheckpointDataNV-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCheckpointDataNV-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetDeviceFaultInfoEXT": {
      "core": [
        {
          "vuid": "VUID-vkGetDeviceFaultInfoEXT-device-07336",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be in the <em>lost</em> state",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceFaultInfoEXT-pFaultCounts-07337",
          "text": "If the value referenced by <code>pFaultCounts-&gt;addressInfoCount</code> is not <code>0</code>, and <code>pFaultInfo-&gt;pAddressInfos</code> is not <code>NULL</code>, <code>pFaultInfo-&gt;pAddressInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pFaultCounts-&gt;addressInfoCount</code> <a href=\"#VkDeviceFaultAddressInfoEXT\">VkDeviceFaultAddressInfoEXT</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceFaultInfoEXT-pFaultCounts-07338",
          "text": "If the value referenced by <code>pFaultCounts-&gt;vendorInfoCount</code> is not <code>0</code>, and <code>pFaultInfo-&gt;pVendorInfos</code> is not <code>NULL</code>, <code>pFaultInfo-&gt;pVendorInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pFaultCounts-&gt;vendorInfoCount</code> <a href=\"#VkDeviceFaultVendorInfoEXT\">VkDeviceFaultVendorInfoEXT</a> structures",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceFaultInfoEXT-pFaultCounts-07339",
          "text": "If the value referenced by <code>pFaultCounts-&gt;vendorBinarySize</code> is not <code>0</code>, and <code>pFaultInfo-&gt;pVendorBinaryData</code> is not <code>NULL</code>, <code>pFaultInfo-&gt;pVendorBinaryData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pFaultCounts-&gt;vendorBinarySize</code> bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceFaultInfoEXT-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceFaultInfoEXT-pFaultCounts-parameter",
          "text": "<code>pFaultCounts</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDeviceFaultCountsEXT\">VkDeviceFaultCountsEXT</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDeviceFaultInfoEXT-pFaultInfo-parameter",
          "text": "If <code>pFaultInfo</code> is not <code>NULL</code>, <code>pFaultInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDeviceFaultInfoEXT\">VkDeviceFaultInfoEXT</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "VkDeviceFaultCountsEXT": {
      "core": [
        {
          "vuid": "VUID-VkDeviceFaultCountsEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_FAULT_COUNTS_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceFaultCountsEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkDeviceFaultInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkDeviceFaultInfoEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_FAULT_INFO_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceFaultInfoEXT-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkDeviceFaultAddressInfoEXT": {
      "core": [
        {
          "vuid": "VUID-VkDeviceFaultAddressInfoEXT-addressType-parameter",
          "text": "<code>addressType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceFaultAddressTypeEXT\">VkDeviceFaultAddressTypeEXT</a> value",
          "page": "vkspec"
        }
      ]
    },
    "VkDeviceFaultVendorBinaryHeaderVersionOneEXT": {
      "core": [
        {
          "vuid": "VUID-VkDeviceFaultVendorBinaryHeaderVersionOneEXT-headerSize-07340",
          "text": "<code>headerSize</code> <strong class=\"purple\">must</strong> be 56",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceFaultVendorBinaryHeaderVersionOneEXT-headerVersion-07341",
          "text": "<code>headerVersion</code> <strong class=\"purple\">must</strong> be <code>VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDeviceFaultVendorBinaryHeaderVersionOneEXT-headerVersion-parameter",
          "text": "<code>headerVersion</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceFaultVendorBinaryHeaderVersionEXT\">VkDeviceFaultVendorBinaryHeaderVersionEXT</a> value",
          "page": "vkspec"
        }
      ]
    },
    "vkGetPhysicalDeviceToolProperties": {
      "core": [
        {
          "vuid": "VUID-vkGetPhysicalDeviceToolProperties-physicalDevice-parameter",
          "text": "<code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceToolProperties-pToolCount-parameter",
          "text": "<code>pToolCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetPhysicalDeviceToolProperties-pToolProperties-parameter",
          "text": "If the value referenced by <code>pToolCount</code> is not <code>0</code>, and <code>pToolProperties</code> is not <code>NULL</code>, <code>pToolProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pToolCount</code> <a href=\"#VkPhysicalDeviceToolProperties\">VkPhysicalDeviceToolProperties</a> structures",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceToolProperties": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceToolProperties-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkPhysicalDeviceToolProperties-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkFrameBoundaryEXT": {
      "core": [
        {
          "vuid": "VUID-VkFrameBoundaryEXT-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FRAME_BOUNDARY_EXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFrameBoundaryEXT-flags-parameter",
          "text": "<code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkFrameBoundaryFlagBitsEXT\">VkFrameBoundaryFlagBitsEXT</a> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFrameBoundaryEXT-pImages-parameter",
          "text": "If <code>imageCount</code> is not <code>0</code>, and <code>pImages</code> is not <code>NULL</code>, <code>pImages</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>imageCount</code> valid <a href=\"#VkImage\">VkImage</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFrameBoundaryEXT-pBuffers-parameter",
          "text": "If <code>bufferCount</code> is not <code>0</code>, and <code>pBuffers</code> is not <code>NULL</code>, <code>pBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bufferCount</code> valid <a href=\"#VkBuffer\">VkBuffer</a> handles",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFrameBoundaryEXT-pTag-parameter",
          "text": "If <code>tagSize</code> is not <code>0</code>, and <code>pTag</code> is not <code>NULL</code>, <code>pTag</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>tagSize</code> bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkFrameBoundaryEXT-commonparent",
          "text": "Both of the elements of <code>pBuffers</code>, and the elements of <code>pImages</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>",
          "page": "vkspec"
        }
      ]
    },
    "StandaloneSpirv": {
      "core": [
        {
          "vuid": "VUID-StandaloneSpirv-None-04633",
          "text": "Every entry point <strong class=\"purple\">must</strong> have no return value and accept no arguments",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-None-04634",
          "text": "The static function-call graph for an entry point <strong class=\"purple\">must</strong> not contain cycles; that is, static recursion is not allowed",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-None-04635",
          "text": "The <code>Logical</code> or <code>PhysicalStorageBuffer64</code> addressing model <strong class=\"purple\">must</strong> be selected",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-None-04636",
          "text": "<code>Scope</code> for execution <strong class=\"purple\">must</strong> be limited to <code>Workgroup</code> or <code>Subgroup</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-None-04637",
          "text": "If the <code>Scope</code> for execution is <code>Workgroup</code>, then it <strong class=\"purple\">must</strong> only be used in the task, mesh, tessellation control, or compute <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-None-04638",
          "text": "<code>Scope</code> for memory <strong class=\"purple\">must</strong> be limited to <code>Device</code>, <code>QueueFamily</code>, <code>Workgroup</code>, <code>ShaderCallKHR</code>, <code>Subgroup</code>, or <code>Invocation</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-ExecutionModel-07320",
          "text": "If the <code>Execution</code> <code>Model</code> is <code>TessellationControl</code>, and the <code>MemoryModel</code> is <code>GLSL450</code>, the <code>Scope</code> for memory <strong class=\"purple\">must</strong> not be <code>Workgroup</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-None-07321",
          "text": "If the <code>Scope</code> for memory is <code>Workgroup</code>, then it <strong class=\"purple\">must</strong> only be used in the task, mesh, tessellation control, or compute <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-None-04640",
          "text": "If the <code>Scope</code> for memory is <code>ShaderCallKHR</code>, then it <strong class=\"purple\">must</strong> only be used in ray generation, intersection, closest hit, any-hit, miss, and callable <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-None-04641",
          "text": "If the <code>Scope</code> for memory is <code>Invocation</code>, then memory semantics <strong class=\"purple\">must</strong> be <code>None</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-None-04642",
          "text": "<code>Scope</code> for <a href=\"#shaders-group-operations\">group operations</a> <strong class=\"purple\">must</strong> be limited to <code>Subgroup</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-SubgroupVoteKHR-07951",
          "text": "If none of the <code>SubgroupVoteKHR</code>, <code>GroupNonUniform</code>, or <code>SubgroupBallotKHR</code> capabilities are declared, <code>Scope</code> for memory <strong class=\"purple\">must</strong> not be <code>Subgroup</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-None-04643",
          "text": "<code>Storage</code> <code>Class</code> <strong class=\"purple\">must</strong> be limited to <code>UniformConstant</code>, <code>Input</code>, <code>Uniform</code>, <code>Output</code>, <code>Workgroup</code>, <code>Private</code>, <code>Function</code>, <code>PushConstant</code>, <code>Image</code>, <code>StorageBuffer</code>, <code>RayPayloadKHR</code>, <code>IncomingRayPayloadKHR</code>, <code>HitAttributeKHR</code>, <code>CallableDataKHR</code>, <code>IncomingCallableDataKHR</code>, <code>ShaderRecordBufferKHR</code>, <code>PhysicalStorageBuffer</code>, or <code>TileImageEXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-None-04644",
          "text": "If the <code>Storage</code> <code>Class</code> is <code>Output</code>, then it <strong class=\"purple\">must</strong> not be used in the <code>GlCompute</code>, <code>RayGenerationKHR</code>, <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, <code>ClosestHitKHR</code>, <code>MissKHR</code>, or <code>CallableKHR</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-None-04645",
          "text": "If the <code>Storage</code> <code>Class</code> is <code>Workgroup</code>, then it <strong class=\"purple\">must</strong> only be used in the task, mesh, or compute <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-None-08720",
          "text": "If the <code>Storage</code> <code>Class</code> is <code>TileImageEXT</code>, then it <strong class=\"purple\">must</strong> only be used in the fragment execution model",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-OpAtomicStore-04730",
          "text": "<code>OpAtomicStore</code> <strong class=\"purple\">must</strong> not use <code>Acquire</code>, <code>AcquireRelease</code>, or <code>SequentiallyConsistent</code> memory semantics",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-OpAtomicLoad-04731",
          "text": "<code>OpAtomicLoad</code> <strong class=\"purple\">must</strong> not use <code>Release</code>, <code>AcquireRelease</code>, or <code>SequentiallyConsistent</code> memory semantics",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-OpMemoryBarrier-04732",
          "text": "<code>OpMemoryBarrier</code> <strong class=\"purple\">must</strong> use one of <code>Acquire</code>, <code>Release</code>, <code>AcquireRelease</code>, or <code>SequentiallyConsistent</code> memory semantics",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-OpMemoryBarrier-04733",
          "text": "<code>OpMemoryBarrier</code> <strong class=\"purple\">must</strong> include at least one <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-OpControlBarrier-04650",
          "text": "If the semantics for <code>OpControlBarrier</code> includes one of <code>Acquire</code>, <code>Release</code>, <code>AcquireRelease</code>, or <code>SequentiallyConsistent</code> memory semantics, then it <strong class=\"purple\">must</strong> include at least one <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-OpVariable-04651",
          "text": "Any <code>OpVariable</code> with an <code>Initializer</code> operand <strong class=\"purple\">must</strong> have <code>Output</code>, <code>Private</code>, <code>Function</code>, or <code>Workgroup</code> as its <code>Storage</code> <code>Class</code> operand",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-OpVariable-04734",
          "text": "Any <code>OpVariable</code> with an <code>Initializer</code> operand and <code>Workgroup</code> as its <code>Storage</code> <code>Class</code> operand <strong class=\"purple\">must</strong> use <code>OpConstantNull</code> as the initializer",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-OpReadClockKHR-04652",
          "text": "<code>Scope</code> for <code>OpReadClockKHR</code> <strong class=\"purple\">must</strong> be limited to <code>Subgroup</code> or <code>Device</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-OriginLowerLeft-04653",
          "text": "The <code>OriginLowerLeft</code> <code>Execution</code> <code>Mode</code> <strong class=\"purple\">must</strong> not be used; fragment entry points <strong class=\"purple\">must</strong> declare <code>OriginUpperLeft</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-PixelCenterInteger-04654",
          "text": "The <code>PixelCenterInteger</code> <code>Execution</code> <code>Mode</code> <strong class=\"purple\">must</strong> not be used (pixels are always centered at half-integer coordinates)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-UniformConstant-04655",
          "text": "Any variable in the <code>UniformConstant</code> <code>Storage</code> <code>Class</code> <strong class=\"purple\">must</strong> be typed as either <code>OpTypeImage</code>, <code>OpTypeSampler</code>, <code>OpTypeSampledImage</code>, <code>OpTypeAccelerationStructureKHR</code>, or an array of one of these types",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-Uniform-06807",
          "text": "Any variable in the <code>Uniform</code> or <code>StorageBuffer</code> <code>Storage</code> <code>Class</code> <strong class=\"purple\">must</strong> be typed as <code>OpTypeStruct</code> or an array of this type",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-PushConstant-06808",
          "text": "Any variable in the <code>PushConstant</code> <code>Storage</code> <code>Class</code> <strong class=\"purple\">must</strong> be typed as <code>OpTypeStruct</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-OpTypeImage-04656",
          "text": "<code>OpTypeImage</code> <strong class=\"purple\">must</strong> declare a scalar 32-bit float, 64-bit integer, or 32-bit integer type for the &#8220;Sampled Type&#8221; (<code>RelaxedPrecision</code> <strong class=\"purple\">can</strong> be applied to a sampling instruction and to the variable holding the result of a sampling instruction)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-OpTypeImage-04657",
          "text": "<code>OpTypeImage</code> <strong class=\"purple\">must</strong> have a &#8220;Sampled&#8221; operand of 1 (sampled image) or 2 (storage image)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-OpTypeSampledImage-06671",
          "text": "<code>OpTypeSampledImage</code> <strong class=\"purple\">must</strong> have a <code>OpTypeImage</code> with a &#8220;Sampled&#8221; operand of 1 (sampled image)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-Image-04965",
          "text": "The <a href=\"#spirv-type\">SPIR-V Type</a> of the <code>Image</code> <code>Format</code> operand of an <code>OpTypeImage</code> <strong class=\"purple\">must</strong> match the <code>Sampled</code> <code>Type</code>, as defined in <a href=\"#spirvenv-format-type-matching\">Image Format and Type Matching</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-OpImageTexelPointer-04658",
          "text": "If an <code>OpImageTexelPointer</code> is used in an atomic operation, the image type of the <code>image</code> parameter to <code>OpImageTexelPointer</code> <strong class=\"purple\">must</strong> have an image format of <code>R64i</code>, <code>R64ui</code>, <code>R32f</code>, <code>R32i</code>, or <code>R32ui</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-OpImageQuerySizeLod-04659",
          "text": "<code>OpImageQuerySizeLod</code>, <code>OpImageQueryLod</code>, and <code>OpImageQueryLevels</code> <strong class=\"purple\">must</strong> only consume an &#8220;Image&#8221; operand whose type has its &#8220;Sampled&#8221; operand set to 1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-OpTypeImage-09638",
          "text": "An <code>OpTypeImage</code> <strong class=\"purple\">must</strong> not have a &#8220;Dim&#8221; operand of <code>Rect</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-OpTypeImage-06214",
          "text": "An <code>OpTypeImage</code> with a &#8220;Dim&#8221; operand of <code>SubpassData</code> <strong class=\"purple\">must</strong> have an &#8220;Arrayed&#8221; operand of 0 (non-arrayed) and a &#8220;Sampled&#8221; operand of 2 (storage image)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-SubpassData-04660",
          "text": "The <span class=\"eq\">(u,v)</span> coordinates used for a <code>SubpassData</code> <strong class=\"purple\">must</strong> be the &lt;id&gt; of a constant vector <span class=\"eq\">(0,0)</span>.",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-OpTypeImage-06924",
          "text": "Objects of types <code>OpTypeImage</code>, <code>OpTypeSampler</code>, <code>OpTypeSampledImage</code>, <code>OpTypeAccelerationStructureKHR</code>, and arrays of these types <strong class=\"purple\">must</strong> not be stored to or modified",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-Uniform-06925",
          "text": "Any variable in the <code>Uniform</code> <code>Storage</code> <code>Class</code> decorated as <code>Block</code> <strong class=\"purple\">must</strong> not be stored to or modified",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-Offset-04663",
          "text": "Image operand <code>Offset</code> <strong class=\"purple\">must</strong> only be used with <code>OpImage*Gather</code> instructions",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-Offset-04865",
          "text": "Any image instruction which uses an <code>Offset</code>, <code>ConstOffset</code>, or <code>ConstOffsets</code> image operand, <strong class=\"purple\">must</strong> only consume a &#8220;Sampled Image&#8221; operand whose type has its &#8220;Sampled&#8221; operand set to 1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-OpImageGather-04664",
          "text": "The &#8220;Component&#8221; operand of <code>OpImageGather</code>, and <code>OpImageSparseGather</code> <strong class=\"purple\">must</strong> be the &lt;id&gt; of a constant instruction",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-OpImage-04777",
          "text": "<code>OpImage*Dref*</code> instructions <strong class=\"purple\">must</strong> not consume an image whose <code>Dim</code> is 3D",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-None-04667",
          "text": "Structure types <strong class=\"purple\">must</strong> not contain opaque types",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-BuiltIn-04668",
          "text": "Any <code>BuiltIn</code> decoration not listed in <a href=\"#interfaces-builtin-variables\">Built-In Variables</a> <strong class=\"purple\">must</strong> not be used",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-OpEntryPoint-09658",
          "text": "For a given <code>OpEntryPoint</code>, any <code>BuiltIn</code> decoration <strong class=\"purple\">must</strong> not be used more than once by the <code>Input</code> interface.",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-OpEntryPoint-09659",
          "text": "For a given <code>OpEntryPoint</code>, any <code>BuiltIn</code> decoration <strong class=\"purple\">must</strong> not be used more than once by the <code>Output</code> interface.",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-Location-06672",
          "text": "The <code>Location</code> or <code>Component</code> decorations <strong class=\"purple\">must</strong> only be used with the <code>Input</code>, <code>Output</code>, <code>RayPayloadKHR</code>, <code>IncomingRayPayloadKHR</code>, <code>HitAttributeKHR</code>, <code>HitObjectAttributeNV</code>, <code>CallableDataKHR</code>, <code>IncomingCallableDataKHR</code>, or <code>ShaderRecordBufferKHR</code> storage classes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-Location-04915",
          "text": "The <code>Location</code> or <code>Component</code> decorations <strong class=\"purple\">must</strong> not be used with <code>BuiltIn</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-Location-04916",
          "text": "The <code>Location</code> decorations <strong class=\"purple\">must</strong> be used on <a href=\"#interfaces-iointerfaces-user\">user-defined variables</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-Location-04917",
          "text": "If a <a href=\"#interfaces-iointerfaces-user\">user-defined variable</a> is not a pointer to a <code>Block</code> decorated <code>OpTypeStruct</code>, then the <code>OpVariable</code> <strong class=\"purple\">must</strong> have a <code>Location</code> decoration",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-Location-04918",
          "text": "If a <a href=\"#interfaces-iointerfaces-user\">user-defined variable</a> has a <code>Location</code> decoration, and the variable is a pointer to a <code>OpTypeStruct</code>, then the members of that structure <strong class=\"purple\">must</strong> not have <code>Location</code> decorations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-Location-04919",
          "text": "If a <a href=\"#interfaces-iointerfaces-user\">user-defined variable</a> does not have a <code>Location</code> decoration, and the variable is a pointer to a <code>Block</code> decorated <code>OpTypeStruct</code>, then each member of the struct <strong class=\"purple\">must</strong> have a <code>Location</code> decoration",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-Component-04920",
          "text": "The <code>Component</code> decoration value <strong class=\"purple\">must</strong> not be greater than 3",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-Component-04921",
          "text": "If the <code>Component</code> decoration is used on an <code>OpVariable</code> that has a <code>OpTypeVector</code> type with a <code>Component</code> <code>Type</code> with a <code>Width</code> that is less than or equal to 32, the sum of its <code>Component</code> <code>Count</code> and the <code>Component</code> decoration value <strong class=\"purple\">must</strong> be less than or equal to 4",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-Component-04922",
          "text": "If the <code>Component</code> decoration is used on an <code>OpVariable</code> that has a <code>OpTypeVector</code> type with a <code>Component</code> <code>Type</code> with a <code>Width</code> that is equal to 64, the sum of two times its <code>Component</code> <code>Count</code> and the <code>Component</code> decoration value <strong class=\"purple\">must</strong> be less than or equal to 4",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-Component-04923",
          "text": "The <code>Component</code> decorations value <strong class=\"purple\">must</strong> not be 1 or 3 for scalar or two-component 64-bit data types",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-Component-04924",
          "text": "The <code>Component</code> decorations <strong class=\"purple\">must</strong> not be used with any type that is not a scalar or vector, or an array of such a type",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-Component-07703",
          "text": "The <code>Component</code> decorations <strong class=\"purple\">must</strong> not be used for a 64-bit vector type with more than two components",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-Input-09557",
          "text": "The pointers of any <code>Input</code> or <code>Output</code> <a href=\"#interfaces-iointerfaces-user\">Interface user-defined variables</a> <strong class=\"purple\">must</strong> not contain any <code>PhysicalStorageBuffer</code> <code>Storage</code> <code>Class</code> pointers",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-GLSLShared-04669",
          "text": "The <code>GLSLShared</code> and <code>GLSLPacked</code> decorations <strong class=\"purple\">must</strong> not be used",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-Flat-04670",
          "text": "The <code>Flat</code>, <code>NoPerspective</code>, <code>Sample</code>, and <code>Centroid</code> decorations <strong class=\"purple\">must</strong> only be used on variables with the <code>Output</code> or <code>Input</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-Flat-06201",
          "text": "The <code>Flat</code>, <code>NoPerspective</code>, <code>Sample</code>, and <code>Centroid</code> decorations <strong class=\"purple\">must</strong> not be used on variables with the <code>Output</code> storage class in a fragment shader",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-Flat-06202",
          "text": "The <code>Flat</code>, <code>NoPerspective</code>, <code>Sample</code>, and <code>Centroid</code> decorations <strong class=\"purple\">must</strong> not be used on variables with the <code>Input</code> storage class in a vertex shader",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-PerVertexKHR-06777",
          "text": "The <code>PerVertexKHR</code> decoration <strong class=\"purple\">must</strong> only be used on variables with the <code>Input</code> <code>Storage</code> <code>Class</code> in a fragment shader",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-Flat-04744",
          "text": "Any variable with integer or double-precision floating-point type and with <code>Input</code> <code>Storage</code> <code>Class</code> in a fragment shader, <strong class=\"purple\">must</strong> be decorated <code>Flat</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-ViewportRelativeNV-04672",
          "text": "The <code>ViewportRelativeNV</code> decoration <strong class=\"purple\">must</strong> only be used on a variable decorated with <code>Layer</code> in the vertex, tessellation evaluation, or geometry shader stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-ViewportRelativeNV-04673",
          "text": "The <code>ViewportRelativeNV</code> decoration <strong class=\"purple\">must</strong> not be used unless a variable decorated with one of <code>ViewportIndex</code> or <code>ViewportMaskNV</code> is also statically used by the same <code>OpEntryPoint</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-ViewportMaskNV-04674",
          "text": "The <code>ViewportMaskNV</code> and <code>ViewportIndex</code> decorations <strong class=\"purple\">must</strong> not both be statically used by one or more <code>OpEntryPoint</code>&#8217;s that form the <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader stages</a> of a graphics pipeline",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-FPRoundingMode-04675",
          "text": "Rounding modes other than round-to-nearest-even and round-towards-zero <strong class=\"purple\">must</strong> not be used for the <code>FPRoundingMode</code> decoration",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-Invariant-04677",
          "text": "Variables decorated with <code>Invariant</code> and variables with structure types that have any members decorated with <code>Invariant</code> <strong class=\"purple\">must</strong> be in the <code>Output</code> or <code>Input</code> <code>Storage</code> <code>Class</code>, <code>Invariant</code> used on an <code>Input</code> <code>Storage</code> <code>Class</code> variable or structure member has no effect",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-VulkanMemoryModel-04678",
          "text": "<a id=\"builtin-volatile-semantics\"></a> If the <code>VulkanMemoryModel</code> capability is not declared, the <code>Volatile</code> decoration <strong class=\"purple\">must</strong> be used on any variable declaration that includes one of the <code>SMIDNV</code>, <code>WarpIDNV</code>, <code>SubgroupSize</code>, <code>SubgroupLocalInvocationId</code>, <code>SubgroupEqMask</code>, <code>SubgroupGeMask</code>, <code>SubgroupGtMask</code>, <code>SubgroupLeMask</code>, or <code>SubgroupLtMask</code> <code>BuiltIn</code> decorations when used in the ray generation, closest hit, miss, intersection, or callable shaders, or with the <code>RayTmaxKHR</code> <code>Builtin</code> decoration when used in an intersection shader",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-VulkanMemoryModel-04679",
          "text": "If the <code>VulkanMemoryModel</code> capability is declared, the <code>OpLoad</code> instruction <strong class=\"purple\">must</strong> use the <code>Volatile</code> memory semantics when it accesses into any variable that includes one of the <code>SMIDNV</code>, <code>WarpIDNV</code>, <code>SubgroupSize</code>, <code>SubgroupLocalInvocationId</code>, <code>SubgroupEqMask</code>, <code>SubgroupGeMask</code>, <code>SubgroupGtMask</code>, <code>SubgroupLeMask</code>, or <code>SubgroupLtMask</code> <code>BuiltIn</code> decorations when used in the ray generation, closest hit, miss, intersection, or callable shaders, or with the <code>RayTmaxKHR</code> <code>Builtin</code> decoration when used in an intersection shader",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-OpTypeRuntimeArray-04680",
          "text": "<code>OpTypeRuntimeArray</code> <strong class=\"purple\">must</strong> only be used for:<div class=\"ulist\">\n<ul>\n<li>\n<p>the last member of a <code>Block</code>-decorated <code>OpTypeStruct</code> in\n<code>StorageBuffer</code> or <code>PhysicalStorageBuffer</code> storage <code>Storage</code> <code>Class</code></p>\n</li>\n<li>\n<p><code>BufferBlock</code>-decorated <code>OpTypeStruct</code> in the <code>Uniform</code>\nstorage <code>Storage</code> <code>Class</code></p>\n</li>\n<li>\n<p>the outermost dimension of an arrayed variable in the\n<code>StorageBuffer</code>, <code>Uniform</code>, or <code>UniformConstant</code> storage\n<code>Storage</code> <code>Class</code></p>\n</li>\n<li>\n<p>variables in the <code>NodePayloadAMDX</code> storage <code>Storage</code> <code>Class</code> when the\n<code>CoalescingAMDX</code> <code>Execution</code> <code>Mode</code> is specified</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-Function-04681",
          "text": "A type <em>T</em> that is an array sized with a specialization constant <strong class=\"purple\">must</strong> neither be, nor be contained in, the type <em>T2</em> of a variable <em>V</em>, unless either: a) <em>T</em> is equal to <em>T2</em>, b) <em>V</em> is declared in the <code>Function</code>, or <code>Private</code> <code>Storage</code> <code>Class</code>, c) <em>V</em> is a non-Block variable in the <code>Workgroup</code> <code>Storage</code> <code>Class</code>, or d) <em>V</em> is an interface variable with an additional level of arrayness, <a href=\"#interfaces-iointerfaces-matching\">as described in interface matching</a>, and <em>T</em> is the member type of the array type <em>T2</em>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-OpControlBarrier-04682",
          "text": "If <code>OpControlBarrier</code> is used in ray generation, intersection, any-hit, closest hit, miss, fragment, vertex, tessellation evaluation, or geometry shaders, the execution Scope <strong class=\"purple\">must</strong> be <code>Subgroup</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-LocalSize-06426",
          "text": "For each compute shader entry point, either a <code>LocalSize</code> or <code>LocalSizeId</code> <code>Execution</code> <code>Mode</code>, or an object decorated with the <code>WorkgroupSize</code> decoration <strong class=\"purple\">must</strong> be specified",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-DerivativeGroupQuadsNV-04684",
          "text": "For compute shaders using the <code>DerivativeGroupQuadsNV</code> execution mode, the first two dimensions of the local workgroup size <strong class=\"purple\">must</strong> be a multiple of two",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-DerivativeGroupLinearNV-04778",
          "text": "For compute shaders using the <code>DerivativeGroupLinearNV</code> execution mode, the product of the dimensions of the local workgroup size <strong class=\"purple\">must</strong> be a multiple of four",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-DerivativeGroupQuadsKHR-10151",
          "text": "For compute, mesh, or task shaders using the <code>DerivativeGroupQuadsKHR</code> execution mode, the first two dimensions of the local workgroup size <strong class=\"purple\">must</strong> be a multiple of two",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-DerivativeGroupLinearKHR-10152",
          "text": "For compute, mesh, or task shaders using the <code>DerivativeGroupLinearKHR</code> execution mode, the product of the dimensions of the local workgroup size <strong class=\"purple\">must</strong> be a multiple of four",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-OpGroupNonUniformBallotBitCount-04685",
          "text": "If <code>OpGroupNonUniformBallotBitCount</code> is used, the group operation <strong class=\"purple\">must</strong> be limited to <code>Reduce</code>, <code>InclusiveScan</code>, or <code>ExclusiveScan</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-None-04686",
          "text": "The <em>Pointer</em> operand of all atomic instructions <strong class=\"purple\">must</strong> have a <code>Storage</code> <code>Class</code> limited to <code>Uniform</code>, <code>Workgroup</code>, <code>Image</code>, <code>StorageBuffer</code>, <code>PhysicalStorageBuffer</code>, or <code>TaskPayloadWorkgroupEXT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-Offset-04687",
          "text": "Output variables or block members decorated with <code>Offset</code> that have a 64-bit type, or a composite type containing a 64-bit type, <strong class=\"purple\">must</strong> specify an <code>Offset</code> value aligned to a 8 byte boundary",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-Offset-04689",
          "text": "The size of any output block containing any member decorated with <code>Offset</code> that is a 64-bit type <strong class=\"purple\">must</strong> be a multiple of 8",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-Offset-04690",
          "text": "The first member of an output block specifying a <code>Offset</code> decoration <strong class=\"purple\">must</strong> specify a <code>Offset</code> value that is aligned to an 8 byte boundary if that block contains any member decorated with <code>Offset</code> and is a 64-bit type",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-Offset-04691",
          "text": "Output variables or block members decorated with <code>Offset</code> that have a 32-bit type, or a composite type contains a 32-bit type, <strong class=\"purple\">must</strong> specify an <code>Offset</code> value aligned to a 4 byte boundary",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-Offset-04692",
          "text": "Output variables, blocks or block members decorated with <code>Offset</code> <strong class=\"purple\">must</strong> only contain base types that have components that are either 32-bit or 64-bit in size",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-Offset-04716",
          "text": "Only variables or block members in the output interface decorated with <code>Offset</code> <strong class=\"purple\">can</strong> be captured for transform feedback, and those variables or block members <strong class=\"purple\">must</strong> also be decorated with <code>XfbBuffer</code> and <code>XfbStride</code>, or inherit <code>XfbBuffer</code> and <code>XfbStride</code> decorations from a block containing them",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-XfbBuffer-04693",
          "text": "All variables or block members in the output interface of the entry point being compiled decorated with a specific <code>XfbBuffer</code> value <strong class=\"purple\">must</strong> all be decorated with identical <code>XfbStride</code> values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-Stream-04694",
          "text": "If any variables or block members in the output interface of the entry point being compiled are decorated with <code>Stream</code>, then all variables belonging to the same <code>XfbBuffer</code> <strong class=\"purple\">must</strong> specify the same <code>Stream</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-XfbBuffer-04696",
          "text": "For any two variables or block members in the output interface of the entry point being compiled with the same <code>XfbBuffer</code> value, the ranges determined by the <code>Offset</code> decoration and the size of the type <strong class=\"purple\">must</strong> not overlap",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-XfbBuffer-04697",
          "text": "All block members in the output interface of the entry point being compiled that are in the same block and have a declared or inherited <code>XfbBuffer</code> decoration <strong class=\"purple\">must</strong> specify the same <code>XfbBuffer</code> value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-RayPayloadKHR-04698",
          "text": "<code>RayPayloadKHR</code> <code>Storage</code> <code>Class</code> <strong class=\"purple\">must</strong> only be used in ray generation, closest hit or miss shaders",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-IncomingRayPayloadKHR-04699",
          "text": "<code>IncomingRayPayloadKHR</code> <code>Storage</code> <code>Class</code> <strong class=\"purple\">must</strong> only be used in closest hit, any-hit, or miss shaders",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-IncomingRayPayloadKHR-04700",
          "text": "There <strong class=\"purple\">must</strong> be at most one variable with the <code>IncomingRayPayloadKHR</code> <code>Storage</code> <code>Class</code> in the input interface of an entry point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-HitAttributeKHR-04701",
          "text": "<code>HitAttributeKHR</code> <code>Storage</code> <code>Class</code> <strong class=\"purple\">must</strong> only be used in intersection, any-hit, or closest hit shaders",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-HitAttributeKHR-04702",
          "text": "There <strong class=\"purple\">must</strong> be at most one variable with the <code>HitAttributeKHR</code> <code>Storage</code> <code>Class</code> in the input interface of an entry point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-HitAttributeKHR-04703",
          "text": "A variable with <code>HitAttributeKHR</code> <code>Storage</code> <code>Class</code> <strong class=\"purple\">must</strong> only be written to in an intersection shader",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-CallableDataKHR-04704",
          "text": "<code>CallableDataKHR</code> <code>Storage</code> <code>Class</code> <strong class=\"purple\">must</strong> only be used in ray generation, closest hit, miss, and callable shaders",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-IncomingCallableDataKHR-04705",
          "text": "<code>IncomingCallableDataKHR</code> <code>Storage</code> <code>Class</code> <strong class=\"purple\">must</strong> only be used in callable shaders",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-IncomingCallableDataKHR-04706",
          "text": "There <strong class=\"purple\">must</strong> be at most one variable with the <code>IncomingCallableDataKHR</code> <code>Storage</code> <code>Class</code> in the input interface of an entry point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-ShaderRecordBufferKHR-07119",
          "text": "<code>ShaderRecordBufferKHR</code> <code>Storage</code> <code>Class</code> <strong class=\"purple\">must</strong> only be used in ray generation, intersection, any-hit, closest hit, callable, or miss shaders",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-Base-07650",
          "text": "The <code>Base</code> operand of <code>OpPtrAccessChain</code> <strong class=\"purple\">must</strong> have a storage class of <code>Workgroup</code>, <code>StorageBuffer</code>, or <code>PhysicalStorageBuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-Base-07651",
          "text": "If the <code>Base</code> operand of <code>OpPtrAccessChain</code> has a <code>Workgroup</code> <code>Storage</code> <code>Class</code>, then the <code>VariablePointers</code> capability <strong class=\"purple\">must</strong> be declared",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-Base-07652",
          "text": "If the <code>Base</code> operand of <code>OpPtrAccessChain</code> has a <code>StorageBuffer</code> <code>Storage</code> <code>Class</code>, then the <code>VariablePointers</code> or <code>VariablePointersStorageBuffer</code> capability <strong class=\"purple\">must</strong> be declared",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-PhysicalStorageBuffer64-04708",
          "text": "If the <code>PhysicalStorageBuffer64</code> addressing model is enabled, all instructions that support memory access operands and that use a physical pointer <strong class=\"purple\">must</strong> include the <code>Aligned</code> operand",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-PhysicalStorageBuffer64-04709",
          "text": "If the <code>PhysicalStorageBuffer64</code> addressing model is enabled, any access chain instruction that accesses into a <code>RowMajor</code> matrix <strong class=\"purple\">must</strong> only be used as the <code>Pointer</code> operand to <code>OpLoad</code> or <code>OpStore</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-PhysicalStorageBuffer64-04710",
          "text": "If the <code>PhysicalStorageBuffer64</code> addressing model is enabled, <code>OpConvertUToPtr</code> and <code>OpConvertPtrToU</code> <strong class=\"purple\">must</strong> use an integer type whose <code>Width</code> is 64",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-OpTypeForwardPointer-04711",
          "text": "<code>OpTypeForwardPointer</code> <strong class=\"purple\">must</strong> have a <code>Storage</code> <code>Class</code> of <code>PhysicalStorageBuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-None-04745",
          "text": "All block members in a variable with a <code>Storage</code> <code>Class</code> of <code>PushConstant</code> declared as an array <strong class=\"purple\">must</strong> only be accessed by dynamically uniform indices",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-OpVariable-06673",
          "text": "There <strong class=\"purple\">must</strong> not be more than one <code>OpVariable</code> in the <code>PushConstant</code> <code>Storage</code> <code>Class</code> listed in the <code>Interface</code> for each <code>OpEntryPoint</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-OpEntryPoint-06674",
          "text": "Each <code>OpEntryPoint</code> <strong class=\"purple\">must</strong> not statically use more than one <code>OpVariable</code> in the <code>PushConstant</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-OpEntryPoint-08721",
          "text": "Each <code>OpEntryPoint</code> <strong class=\"purple\">must</strong> not have more than one <code>Input</code> variable assigned the same <code>Component</code> word inside a <code>Location</code> slot, either explicitly or implicitly",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-OpEntryPoint-08722",
          "text": "Each <code>OpEntryPoint</code> <strong class=\"purple\">must</strong> not have more than one <code>Output</code> variable assigned the same <code>Component</code> word inside a <code>Location</code> slot, either explicitly or implicitly",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-Result-04780",
          "text": "The <code>Result</code> <code>Type</code> operand of any <code>OpImageRead</code> or <code>OpImageSparseRead</code> instruction <strong class=\"purple\">must</strong> be a vector of four components",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-Base-04781",
          "text": "The <code>Base</code> operand of any <code>OpBitCount</code>, <code>OpBitReverse</code>, <code>OpBitFieldInsert</code>, <code>OpBitFieldSExtract</code>, or <code>OpBitFieldUExtract</code> instruction <strong class=\"purple\">must</strong> be a 32-bit integer scalar or a vector of 32-bit integers",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-PushConstant-06675",
          "text": "Any variable in the <code>PushConstant</code> or <code>StorageBuffer</code> storage class <strong class=\"purple\">must</strong> be decorated as <code>Block</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-Uniform-06676",
          "text": "Any variable in the <code>Uniform</code> <code>Storage</code> <code>Class</code> <strong class=\"purple\">must</strong> be decorated as <code>Block</code> or <code>BufferBlock</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-UniformConstant-06677",
          "text": "Any variable in the <code>UniformConstant</code>, <code>StorageBuffer</code>, or <code>Uniform</code> <code>Storage</code> <code>Class</code> <strong class=\"purple\">must</strong> be decorated with <code>DescriptorSet</code> and <code>Binding</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-InputAttachmentIndex-06678",
          "text": "Variables decorated with <code>InputAttachmentIndex</code> <strong class=\"purple\">must</strong> be in the <code>UniformConstant</code> <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-DescriptorSet-06491",
          "text": "If a variable is decorated by <code>DescriptorSet</code> or <code>Binding</code>, the <code>Storage</code> <code>Class</code> <strong class=\"purple\">must</strong> correspond to an entry in <a href=\"#interfaces-resources-storage-class-correspondence\">Shader Resource and Storage Class Correspondence</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-Input-06778",
          "text": "Variables with a <code>Storage</code> <code>Class</code> of <code>Input</code> in a fragment shader stage that are decorated with <code>PerVertexKHR</code> <strong class=\"purple\">must</strong> be declared as arrays",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-MeshEXT-07102",
          "text": "The module <strong class=\"purple\">must</strong> not contain both an entry point that uses the <code>TaskEXT</code> or <code>MeshEXT</code> <code>Execution</code> <code>Model</code> and an entry point that uses the <code>TaskNV</code> or <code>MeshNV</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-MeshEXT-07106",
          "text": "In mesh shaders using the <code>MeshEXT</code> <code>Execution</code> <code>Model</code> <code>OpSetMeshOutputsEXT</code> <strong class=\"purple\">must</strong> be called before any outputs are written",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-MeshEXT-07107",
          "text": "In mesh shaders using the <code>MeshEXT</code> <code>Execution</code> <code>Model</code> all variables declared as output <strong class=\"purple\">must</strong> not be read from",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-MeshEXT-07108",
          "text": "In mesh shaders using the <code>MeshEXT</code> <code>Execution</code> <code>Model</code> for <code>OpSetMeshOutputsEXT</code> instructions, the &#8220;Vertex Count&#8221; and &#8220;Primitive Count&#8221; operands <strong class=\"purple\">must</strong> not depend on <code>ViewIndex</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-MeshEXT-07109",
          "text": "In mesh shaders using the <code>MeshEXT</code> <code>Execution</code> <code>Model</code> variables decorated with <code>PrimitivePointIndicesEXT</code>, <code>PrimitiveLineIndicesEXT</code>, or <code>PrimitiveTriangleIndicesEXT</code> declared as an array <strong class=\"purple\">must</strong> not be accessed by indices that depend on <code>ViewIndex</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-MeshEXT-07110",
          "text": "In mesh shaders using the <code>MeshEXT</code> <code>Execution</code> <code>Model</code> any values stored in variables decorated with <code>PrimitivePointIndicesEXT</code>, <code>PrimitiveLineIndicesEXT</code>, or <code>PrimitiveTriangleIndicesEXT</code> <strong class=\"purple\">must</strong> not depend on <code>ViewIndex</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-MeshEXT-07111",
          "text": "In mesh shaders using the <code>MeshEXT</code> <code>Execution</code> <code>Model</code> variables in workgroup or private <code>Storage</code> <code>Class</code> declared as or containing a composite type <strong class=\"purple\">must</strong> not be accessed by indices that depend on <code>ViewIndex</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-MeshEXT-07330",
          "text": "In mesh shaders using the <code>MeshEXT</code> <code>Execution</code> <code>Model</code> the <code>OutputVertices</code> <code>Execution</code> <code>Mode</code> <strong class=\"purple\">must</strong> be greater than 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-MeshEXT-07331",
          "text": "In mesh shaders using the <code>MeshEXT</code> <code>Execution</code> <code>Model</code> the <code>OutputPrimitivesEXT</code> <code>Execution</code> <code>Mode</code> <strong class=\"purple\">must</strong> be greater than 0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-Input-07290",
          "text": "Variables with a <code>Storage</code> <code>Class</code> of <code>Input</code> or <code>Output</code> and a type of <code>OpTypeBool</code> <strong class=\"purple\">must</strong> be decorated with the <code>BuiltIn</code> decoration",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-TileImageEXT-08723",
          "text": "The tile image variable declarations <strong class=\"purple\">must</strong> obey the constraints on the <code>TileImageEXT</code> <code>Storage</code> <code>Class</code> and the <code>Location</code> decoration described in <a href=\"#interfaces-fragmenttileimage\">Fragment Tile Image Interface</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-None-08724",
          "text": "The <code>TileImageEXT</code> <code>Storage</code> <code>Class</code> <strong class=\"purple\">must</strong> only be used for declaring tile image variables",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-Pointer-08973",
          "text": "The <code>Storage</code> <code>Class</code> of the <code>Pointer</code> operand to <code>OpCooperativeMatrixLoadKHR</code> or <code>OpCooperativeMatrixStoreKHR</code> <strong class=\"purple\">must</strong> be limited to <code>Workgroup</code>, <code>StorageBuffer</code>, or <code>PhysicalStorageBuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-UniformBufferArrayDynamicIndexing-10127",
          "text": "If the <code>UniformBufferArrayDynamicIndexing</code> capability is not declared, and an instruction accesses memory through a uniform buffer, the uniform buffer through which that memory is accessed <strong class=\"purple\">must</strong> be determined by <a href=\"#glossary-constant-integral-expression\">constant integral expressions</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-SampledImageArrayDynamicIndexing-10128",
          "text": "If the <code>SampledImageArrayDynamicIndexing</code> capability is not declared, and an instruction accesses memory through a sampled image or sampler, the sampled image or sampler through which that memory is accessed <strong class=\"purple\">must</strong> be determined by <a href=\"#glossary-constant-integral-expression\">constant integral expressions</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-StorageBufferArrayDynamicIndexing-10129",
          "text": "If the <code>StorageBufferArrayDynamicIndexing</code> capability is not declared, and an instruction accesses memory through a storage buffer, the storage buffer through which that memory is accessed <strong class=\"purple\">must</strong> be determined by <a href=\"#glossary-constant-integral-expression\">constant integral expressions</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-StorageImageArrayDynamicIndexing-10130",
          "text": "If the <code>StorageImageArrayDynamicIndexing</code> capability is not declared, and an instruction accesses memory through a storage image, the storage image through which that memory is accessed <strong class=\"purple\">must</strong> be determined by <a href=\"#glossary-constant-integral-expression\">constant integral expressions</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-InputAttachmentArrayDynamicIndexing-10131",
          "text": "If the <code>InputAttachmentArrayDynamicIndexing</code> capability is not declared, and an instruction accesses memory through an input attachment, the input attachmnet through which that memory is accessed <strong class=\"purple\">must</strong> be determined by <a href=\"#glossary-constant-integral-expression\">constant integral expressions</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-UniformTexelBufferArrayDynamicIndexing-10132",
          "text": "If the <code>UniformTexelBufferArrayDynamicIndexing</code> capability is declared, and an instruction accesses memory through a uniform texel buffer, the uniform texel buffer through which that memory is accessed <strong class=\"purple\">must</strong> be determined by <a href=\"#glossary-constant-integral-expression\">constant integral expressions</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-StandaloneSpirv-StorageTexelBufferArrayDynamicIndexing-10133",
          "text": "If the <code>StorageTexelBufferArrayDynamicIndexing</code> capability is declared, and an instruction accesses memory through a storage texel buffer, the storage texel buffer through which that memory is accessed <strong class=\"purple\">must</strong> be determined by <a href=\"#glossary-constant-integral-expression\">constant integral expressions</a>",
          "page": "vkspec"
        }
      ]
    },
    "RuntimeSpirv": {
      "core": [
        {
          "vuid": "VUID-RuntimeSpirv-vulkanMemoryModel-06265",
          "text": "If <a href=\"#features-vulkanMemoryModel\"><code>vulkanMemoryModel</code></a> is enabled and <a href=\"#features-vulkanMemoryModelDeviceScope\"><code>vulkanMemoryModelDeviceScope</code></a> is not enabled, <code>Device</code> memory scope <strong class=\"purple\">must</strong> not be used",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-vulkanMemoryModel-06266",
          "text": "If <a href=\"#features-vulkanMemoryModel\"><code>vulkanMemoryModel</code></a> is not enabled, <code>QueueFamily</code> memory scope <strong class=\"purple\">must</strong> not be used",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-shaderSubgroupClock-06267",
          "text": "If <a href=\"#features-shaderSubgroupClock\"><code>shaderSubgroupClock</code></a> is not enabled, the <code>Subgroup</code> scope <strong class=\"purple\">must</strong> not be used for <code>OpReadClockKHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-shaderDeviceClock-06268",
          "text": "If <a href=\"#features-shaderDeviceClock\"><code>shaderDeviceClock</code></a> is not enabled, the <code>Device</code> scope <strong class=\"purple\">must</strong> not be used for <code>OpReadClockKHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-None-09558",
          "text": "If <a href=\"#features-dynamicRenderingLocalRead\"><code>dynamicRenderingLocalRead</code></a> is not enabled, any variable created with a &#8220;Type&#8221; of <code>OpTypeImage</code> that has a &#8220;Dim&#8221; operand of <code>SubpassData</code> <strong class=\"purple\">must</strong> be decorated with <code>InputAttachmentIndex</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpTypeImage-09644",
          "text": "Any variable declared as an <code>OpTypeArray</code> where the <code>Element</code> <code>Type</code> is an <code>OpTypeImage</code> with a &#8220;Dim&#8221; operand of <code>SubpassData</code> <strong class=\"purple\">must</strong> be decorated with <code>InputAttachmentIndex</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-apiVersion-07954",
          "text": "If <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan 1.3, the <a href=\"#VK_KHR_format_feature_flags2\">VK_KHR_format_feature_flags2</a> extension is not supported, and <a href=\"#features-shaderStorageImageWriteWithoutFormat\"><code>shaderStorageImageWriteWithoutFormat</code></a> is not enabled, any variable created with a &#8220;Type&#8221; of <code>OpTypeImage</code> that has a &#8220;Sampled&#8221; operand of 2 and an &#8220;Image Format&#8221; operand of <code>Unknown</code> <strong class=\"purple\">must</strong> be decorated with <code>NonWritable</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-apiVersion-07955",
          "text": "If <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a>::<code>apiVersion</code> is less than Vulkan 1.3, the <a href=\"#VK_KHR_format_feature_flags2\">VK_KHR_format_feature_flags2</a> extension is not supported, and <a href=\"#features-shaderStorageImageReadWithoutFormat\"><code>shaderStorageImageReadWithoutFormat</code></a> is not enabled, any variable created with a &#8220;Type&#8221; of <code>OpTypeImage</code> that has a &#8220;Sampled&#8221; operand of 2 and an &#8220;Image Format&#8221; operand of <code>Unknown</code> <strong class=\"purple\">must</strong> be decorated with <code>NonReadable</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpImageWrite-07112",
          "text": "<code>OpImageWrite</code> to any <code>Image</code> whose <code>Image</code> <code>Format</code> is not <code>Unknown</code> <strong class=\"purple\">must</strong> have the <code>Texel</code> operand contain at least as many components as the corresponding <a href=\"#VkFormat\">VkFormat</a> as given in the <a href=\"#spirvenv-image-formats\">SPIR-V Image Format compatibility table</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-Location-06272",
          "text": "The sum of <code>Location</code> and the number of locations the variable it decorates consumes <strong class=\"purple\">must</strong> be less than or equal to the value for the matching <code>Execution</code> <code>Model</code> defined in <a href=\"#interfaces-iointerfaces-limits\">Shader Input and Output Locations</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-Location-06428",
          "text": "The maximum number of storage buffers, storage images, and output <code>Location</code> decorated color attachments written to in the <code>Fragment</code> <code>Execution</code> <code>Model</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxFragmentCombinedOutputResources\"><code>maxFragmentCombinedOutputResources</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-UniformBufferArrayNonUniformIndexing-10134",
          "text": "If the <code>UniformBufferArrayNonUniformIndexing</code> capability is not declared, and an instruction accesses memory through a uniform buffer, the uniform buffer through which that memory is accessed <strong class=\"purple\">must</strong> be dynamically uniform within the invocation group or subgroup",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-SampledImageArrayNonUniformIndexing-10135",
          "text": "If the <code>SampledImageArrayNonUniformIndexing</code> capability is not declared, and an instruction accesses memory through a sampled image or sampler, the sampled image or sampler through which that memory is accessed <strong class=\"purple\">must</strong> be dynamically uniform within the invocation group or subgroup",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-StorageBufferArrayNonUniformIndexing-10136",
          "text": "If the <code>StorageBufferArrayNonUniformIndexing</code> capability is not declared, and an instruction accesses memory through a storage buffer, the storage buffer through which that memory is accessed <strong class=\"purple\">must</strong> be dynamically uniform within the invocation group or subgroup",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-StorageImageArrayNonUniformIndexing-10137",
          "text": "If the <code>StorageImageArrayNonUniformIndexing</code> capability is not declared, and an instruction accesses memory through a storage image, the storage image through which that memory is accessed <strong class=\"purple\">must</strong> be dynamically uniform within the invocation group or subgroup",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-InputAttachmentArrayNonUniformIndexing-10138",
          "text": "If the <code>InputAttachmentArrayNonUniformIndexing</code> capability is not declared, and an instruction accesses memory through an input attachment, the input attachment through which that memory is accessed <strong class=\"purple\">must</strong> be dynamically uniform within the invocation group or subgroup",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-UniformTexelBufferArrayNonUniformIndexing-10139",
          "text": "If the <code>UniformTexelBufferArrayNonUniformIndexing</code> capability is not declared, and an instruction accesses memory through a uniform texel buffer, the uniform texel buffer through which that memory is accessed <strong class=\"purple\">must</strong> be dynamically uniform within the invocation group or subgroup",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-StorageTexelBufferArrayNonUniformIndexing-10140",
          "text": "If the <code>StorageTexelBufferArrayNonUniformIndexing</code> capability is not is not declared, and an instruction accesses memory through a storage texel buffer, the storage texel buffer through which that memory is accessed <strong class=\"purple\">must</strong> be dynamically uniform within the invocation group or subgroup",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-subgroupSize-10141",
          "text": "If <a href=\"#limits-subgroupSize\"><code>subgroupSize</code></a> is 1, the <code>UniformBufferArrayNonUniformIndexing</code> capability is not declared, and an instruction accesses memory through a uniform buffer, the uniform buffer through which that memory is accessed <strong class=\"purple\">must</strong> be dynamically uniform within the invocation group",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-subgroupSize-10142",
          "text": "If <a href=\"#limits-subgroupSize\"><code>subgroupSize</code></a> is 1, the <code>SampledImageArrayNonUniformIndexing</code> capability is not declared, and an instruction accesses memory through a sampled image or sampler, the sampled image or sampler through which that memory is accessed <strong class=\"purple\">must</strong> be dynamically uniform within the invocation group",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-subgroupSize-10143",
          "text": "If <a href=\"#limits-subgroupSize\"><code>subgroupSize</code></a> is 1, the <code>StorageBufferArrayNonUniformIndexing</code> capability is not declared, and an instruction accesses memory through a storage buffer, the storage buffer through which that memory is accessed <strong class=\"purple\">must</strong> be dynamically uniform within the invocation group",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-subgroupSize-10144",
          "text": "If <a href=\"#limits-subgroupSize\"><code>subgroupSize</code></a> is 1, the <code>StorageImageArrayNonUniformIndexing</code> capability is not declared, and an instruction accesses memory through a storage image, the storage image through which that memory is accessed <strong class=\"purple\">must</strong> be dynamically uniform within the invocation group",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-subgroupSize-10145",
          "text": "If <a href=\"#limits-subgroupSize\"><code>subgroupSize</code></a> is 1, the <code>InputAttachmentArrayNonUniformIndexing</code> capability is not declared, and an instruction accesses memory through an input attachment, the input attachment through which that memory is accessed <strong class=\"purple\">must</strong> be dynamically uniform within the invocation group",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-subgroupSize-10146",
          "text": "If <a href=\"#limits-subgroupSize\"><code>subgroupSize</code></a> is 1, the <code>UniformTexelBufferArrayNonUniformIndexing</code> capability is not declared, and an instruction accesses memory through a uniform texel buffer, the uniform texel buffer through which that memory is accessed <strong class=\"purple\">must</strong> be dynamically uniform within the invocation group",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-subgroupSize-10147",
          "text": "If <a href=\"#limits-subgroupSize\"><code>subgroupSize</code></a> is 1, the <code>StorageTexelBufferArrayNonUniformIndexing</code> capability is not is not declared, and an instruction accesses memory through a storage texel buffer, the storage texel buffer through which that memory is accessed <strong class=\"purple\">must</strong> be dynamically uniform within the invocation group",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-None-10148",
          "text": "If an instruction accesses memory through any resource, <a href=\"#limits-subgroupSize\"><code>subgroupSize</code></a> is 1, and the resource through which that memory is accessed is not uniform within the invocation group, then the operand corresponding to that resource (e.g. the pointer or sampled image operand) <strong class=\"purple\">must</strong> be decorated with <code>NonUniform</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-subgroupSize-10149",
          "text": "If an instruction accesses memory through any resource, <a href=\"#limits-subgroupSize\"><code>subgroupSize</code></a> is greater than 1, and the resource through which that memory is accessed is not uniform within the invocation group, and not uniform within the subgroup, then the operand corresponding to that resource (e.g. the pointer or sampled image operand) <strong class=\"purple\">must</strong> be decorated with <code>NonUniform</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-None-06275",
          "text": "<a href=\"#features-shaderSubgroupExtendedTypes\"><code>shaderSubgroupExtendedTypes</code></a> <strong class=\"purple\">must</strong> be enabled for <a href=\"#shaders-group-operations\">group operations</a> to use 8-bit integer, 16-bit integer, 64-bit integer, 16-bit floating-point, and vectors of these types",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-subgroupBroadcastDynamicId-06276",
          "text": "If <a href=\"#features-subgroupBroadcastDynamicId\"><code>subgroupBroadcastDynamicId</code></a> is <code>VK_TRUE</code>, and the shader module version is 1.5 or higher, the &#8220;Index&#8221; for <code>OpGroupNonUniformQuadBroadcast</code> <strong class=\"purple\">must</strong> be dynamically uniform within the derivative group. Otherwise, &#8220;Index&#8221; <strong class=\"purple\">must</strong> be a constant",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-subgroupBroadcastDynamicId-06277",
          "text": "If <a href=\"#features-subgroupBroadcastDynamicId\"><code>subgroupBroadcastDynamicId</code></a> is <code>VK_TRUE</code>, and the shader module version is 1.5 or higher, the &#8220;Id&#8221; for <code>OpGroupNonUniformBroadcast</code> <strong class=\"purple\">must</strong> be dynamically uniform within the subgroup. Otherwise, &#8220;Id&#8221; <strong class=\"purple\">must</strong> be a constant",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-None-06278",
          "text": "<a href=\"#features-shaderBufferInt64Atomics\"><code>shaderBufferInt64Atomics</code></a> <strong class=\"purple\">must</strong> be enabled for 64-bit integer atomic operations to be supported on a <em>Pointer</em> with a <code>Storage</code> <code>Class</code> of <code>StorageBuffer</code> or <code>Uniform</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-None-06279",
          "text": "<a href=\"#features-shaderSharedInt64Atomics\"><code>shaderSharedInt64Atomics</code></a> <strong class=\"purple\">must</strong> be enabled for 64-bit integer atomic operations to be supported on a <em>Pointer</em> with a <code>Storage</code> <code>Class</code> of <code>Workgroup</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-None-06284",
          "text": "<a href=\"#features-shaderBufferFloat32Atomics\"><code>shaderBufferFloat32Atomics</code></a>, or <a href=\"#features-shaderBufferFloat32AtomicAdd\"><code>shaderBufferFloat32AtomicAdd</code></a>, or <a href=\"#features-shaderBufferFloat64Atomics\"><code>shaderBufferFloat64Atomics</code></a>, or <a href=\"#features-shaderBufferFloat64AtomicAdd\"><code>shaderBufferFloat64AtomicAdd</code></a>, or <a href=\"#features-shaderBufferFloat16AtomicMinMax\"><code>shaderBufferFloat16Atomics</code></a>, or <a href=\"#features-shaderBufferFloat16AtomicMinMax\"><code>shaderBufferFloat16AtomicAdd</code></a>, or <a href=\"#features-shaderBufferFloat16AtomicMinMax\"><code>shaderBufferFloat16AtomicMinMax</code></a>, or <a href=\"#features-shaderBufferFloat32AtomicMinMax\"><code>shaderBufferFloat32AtomicMinMax</code></a>, or <a href=\"#features-shaderBufferFloat64AtomicMinMax\"><code>shaderBufferFloat64AtomicMinMax</code></a>, or <a href=\"#features-shaderFloat16VectorAtomics\"><code>shaderFloat16VectorAtomics</code></a> <strong class=\"purple\">must</strong> be enabled for floating-point atomic operations to be supported on a <em>Pointer</em> with a <code>Storage</code> <code>Class</code> of <code>StorageBuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-None-06285",
          "text": "<a href=\"#features-shaderSharedFloat32Atomics\"><code>shaderSharedFloat32Atomics</code></a>, or <a href=\"#features-shaderSharedFloat32AtomicAdd\"><code>shaderSharedFloat32AtomicAdd</code></a>, or <a href=\"#features-shaderSharedFloat64Atomics\"><code>shaderSharedFloat64Atomics</code></a>, or <a href=\"#features-shaderSharedFloat64AtomicAdd\"><code>shaderSharedFloat64AtomicAdd</code></a>, or <a href=\"#features-shaderBufferFloat16AtomicMinMax\"><code>shaderSharedFloat16Atomics</code></a>, or <a href=\"#features-shaderBufferFloat16AtomicMinMax\"><code>shaderSharedFloat16AtomicAdd</code></a>, or <a href=\"#features-shaderBufferFloat16AtomicMinMax\"><code>shaderSharedFloat16AtomicMinMax</code></a>, or <a href=\"#features-shaderSharedFloat32AtomicMinMax\"><code>shaderSharedFloat32AtomicMinMax</code></a>, or <a href=\"#features-shaderSharedFloat64AtomicMinMax\"><code>shaderSharedFloat64AtomicMinMax</code></a>, or <a href=\"#features-shaderFloat16VectorAtomics\"><code>shaderFloat16VectorAtomics</code></a>, <strong class=\"purple\">must</strong> be enabled for floating-point atomic operations to be supported on a <em>Pointer</em> with a <code>Storage</code> <code>Class</code> of <code>Workgroup</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-None-06286",
          "text": "<a href=\"#features-shaderImageFloat32Atomics\"><code>shaderImageFloat32Atomics</code></a>, or <a href=\"#features-shaderImageFloat32AtomicAdd\"><code>shaderImageFloat32AtomicAdd</code></a>, or <a href=\"#features-shaderImageFloat32AtomicMinMax\"><code>shaderImageFloat32AtomicMinMax</code></a>, <strong class=\"purple\">must</strong> be enabled for 32-bit floating-point atomic operations to be supported on a <em>Pointer</em> with a <code>Storage</code> <code>Class</code> of <code>Image</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-None-06287",
          "text": "<a href=\"#features-sparseImageFloat32Atomics\"><code>sparseImageFloat32Atomics</code></a>, or <a href=\"#features-sparseImageFloat32AtomicAdd\"><code>sparseImageFloat32AtomicAdd</code></a>, or <a href=\"#features-sparseImageFloat32AtomicMinMax\"><code>sparseImageFloat32AtomicMinMax</code></a>, <strong class=\"purple\">must</strong> be enabled for 32-bit floating-point atomics to be supported on sparse images",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-None-06288",
          "text": "<a href=\"#features-shaderImageInt64Atomics\"><code>shaderImageInt64Atomics</code></a> <strong class=\"purple\">must</strong> be enabled for 64-bit integer atomic operations to be supported on a <em>Pointer</em> with a <code>Storage</code> <code>Class</code> of <code>Image</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-denormBehaviorIndependence-06289",
          "text": "If <a href=\"#features-denormBehaviorIndependence\"><code>denormBehaviorIndependence</code></a> is <code>VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY</code>, then the entry point <strong class=\"purple\">must</strong> use the same denormals <code>Execution</code> <code>Mode</code> for both 16-bit and 64-bit floating-point types",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-denormBehaviorIndependence-06290",
          "text": "If <a href=\"#features-denormBehaviorIndependence\"><code>denormBehaviorIndependence</code></a> is <code>VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE</code>, then the entry point <strong class=\"purple\">must</strong> use the same denormals <code>Execution</code> <code>Mode</code> for all floating-point types",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-roundingModeIndependence-06291",
          "text": "If <a href=\"#features-roundingModeIndependence\"><code>roundingModeIndependence</code></a> is <code>VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY</code>, then the entry point <strong class=\"purple\">must</strong> use the same rounding <code>Execution</code> <code>Mode</code> for both 16-bit and 64-bit floating-point types",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-roundingModeIndependence-06292",
          "text": "If <a href=\"#features-roundingModeIndependence\"><code>roundingModeIndependence</code></a> is <code>VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE</code>, then the entry point <strong class=\"purple\">must</strong> use the same rounding <code>Execution</code> <code>Mode</code> for all floating-point types",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-shaderSignedZeroInfNanPreserveFloat16-06293",
          "text": "If <a href=\"#limits-shaderSignedZeroInfNanPreserveFloat16\"><code>shaderSignedZeroInfNanPreserveFloat16</code></a> is <code>VK_FALSE</code>, then <code>SignedZeroInfNanPreserve</code> for 16-bit floating-point type <strong class=\"purple\">must</strong> not be used",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-shaderSignedZeroInfNanPreserveFloat32-06294",
          "text": "If <a href=\"#limits-shaderSignedZeroInfNanPreserveFloat32\"><code>shaderSignedZeroInfNanPreserveFloat32</code></a> is <code>VK_FALSE</code>, then <code>SignedZeroInfNanPreserve</code> for 32-bit floating-point type <strong class=\"purple\">must</strong> not be used",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-shaderSignedZeroInfNanPreserveFloat64-06295",
          "text": "If <a href=\"#limits-shaderSignedZeroInfNanPreserveFloat64\"><code>shaderSignedZeroInfNanPreserveFloat64</code></a> is <code>VK_FALSE</code>, then <code>SignedZeroInfNanPreserve</code> for 64-bit floating-point type <strong class=\"purple\">must</strong> not be used",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-shaderDenormPreserveFloat16-06296",
          "text": "If <a href=\"#limits-shaderDenormPreserveFloat16\"><code>shaderDenormPreserveFloat16</code></a> is <code>VK_FALSE</code>, then <code>DenormPreserve</code> for 16-bit floating-point type <strong class=\"purple\">must</strong> not be used",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-shaderDenormPreserveFloat32-06297",
          "text": "If <a href=\"#limits-shaderDenormPreserveFloat32\"><code>shaderDenormPreserveFloat32</code></a> is <code>VK_FALSE</code>, then <code>DenormPreserve</code> for 32-bit floating-point type <strong class=\"purple\">must</strong> not be used",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-shaderDenormPreserveFloat64-06298",
          "text": "If <a href=\"#limits-shaderDenormPreserveFloat64\"><code>shaderDenormPreserveFloat64</code></a> is <code>VK_FALSE</code>, then <code>DenormPreserve</code> for 64-bit floating-point type <strong class=\"purple\">must</strong> not be used",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-shaderDenormFlushToZeroFloat16-06299",
          "text": "If <a href=\"#limits-shaderDenormFlushToZeroFloat16\"><code>shaderDenormFlushToZeroFloat16</code></a> is <code>VK_FALSE</code>, then <code>DenormFlushToZero</code> for 16-bit floating-point type <strong class=\"purple\">must</strong> not be used",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-shaderDenormFlushToZeroFloat32-06300",
          "text": "If <a href=\"#limits-shaderDenormFlushToZeroFloat32\"><code>shaderDenormFlushToZeroFloat32</code></a> is <code>VK_FALSE</code>, then <code>DenormFlushToZero</code> for 32-bit floating-point type <strong class=\"purple\">must</strong> not be used",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-shaderDenormFlushToZeroFloat64-06301",
          "text": "If <a href=\"#limits-shaderDenormFlushToZeroFloat64\"><code>shaderDenormFlushToZeroFloat64</code></a> is <code>VK_FALSE</code>, then <code>DenormFlushToZero</code> for 64-bit floating-point type <strong class=\"purple\">must</strong> not be used",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-shaderRoundingModeRTEFloat16-06302",
          "text": "If <a href=\"#limits-shaderRoundingModeRTEFloat16\"><code>shaderRoundingModeRTEFloat16</code></a> is <code>VK_FALSE</code>, then <code>RoundingModeRTE</code> for 16-bit floating-point type <strong class=\"purple\">must</strong> not be used",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-shaderRoundingModeRTEFloat32-06303",
          "text": "If <a href=\"#limits-shaderRoundingModeRTEFloat32\"><code>shaderRoundingModeRTEFloat32</code></a> is <code>VK_FALSE</code>, then <code>RoundingModeRTE</code> for 32-bit floating-point type <strong class=\"purple\">must</strong> not be used",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-shaderRoundingModeRTEFloat64-06304",
          "text": "If <a href=\"#limits-shaderRoundingModeRTEFloat64\"><code>shaderRoundingModeRTEFloat64</code></a> is <code>VK_FALSE</code>, then <code>RoundingModeRTE</code> for 64-bit floating-point type <strong class=\"purple\">must</strong> not be used",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-shaderRoundingModeRTZFloat16-06305",
          "text": "If <a href=\"#limits-shaderRoundingModeRTZFloat16\"><code>shaderRoundingModeRTZFloat16</code></a> is <code>VK_FALSE</code>, then <code>RoundingModeRTZ</code> for 16-bit floating-point type <strong class=\"purple\">must</strong> not be used",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-shaderRoundingModeRTZFloat32-06306",
          "text": "If <a href=\"#limits-shaderRoundingModeRTZFloat32\"><code>shaderRoundingModeRTZFloat32</code></a> is <code>VK_FALSE</code>, then <code>RoundingModeRTZ</code> for 32-bit floating-point type <strong class=\"purple\">must</strong> not be used",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-shaderRoundingModeRTZFloat64-06307",
          "text": "If <a href=\"#limits-shaderRoundingModeRTZFloat64\"><code>shaderRoundingModeRTZFloat64</code></a> is <code>VK_FALSE</code>, then <code>RoundingModeRTZ</code> for 64-bit floating-point type <strong class=\"purple\">must</strong> not be used",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-shaderSignedZeroInfNanPreserveFloat16-09559",
          "text": "If <a href=\"#limits-shaderSignedZeroInfNanPreserveFloat16\"><code>shaderSignedZeroInfNanPreserveFloat16</code></a> is <code>VK_FALSE</code> then any <code>FPFastMathDefault</code> execution mode with a type of 16-bit float <strong class=\"purple\">must</strong> include the <code>NSZ</code>, <code>NotInf</code>, and <code>NotNaN</code> flags",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-shaderSignedZeroInfNanPreserveFloat16-09560",
          "text": "If <a href=\"#limits-shaderSignedZeroInfNanPreserveFloat16\"><code>shaderSignedZeroInfNanPreserveFloat16</code></a> is <code>VK_FALSE</code> then any <code>FPFastMathMode</code> decoration on an instruction with result type or any operand type that includes a 16-bit float <strong class=\"purple\">must</strong> include the <code>NSZ</code>, <code>NotInf</code>, and <code>NotNaN</code> flags",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-shaderSignedZeroInfNanPreserveFloat32-09561",
          "text": "If <a href=\"#limits-shaderSignedZeroInfNanPreserveFloat32\"><code>shaderSignedZeroInfNanPreserveFloat32</code></a> is <code>VK_FALSE</code> then any <code>FPFastMathDefault</code> execution mode with a type of 32-bit float <strong class=\"purple\">must</strong> include the <code>NSZ</code>, <code>NotInf</code>, and <code>NotNaN</code> flags",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-shaderSignedZeroInfNanPreserveFloat32-09562",
          "text": "If <a href=\"#limits-shaderSignedZeroInfNanPreserveFloat32\"><code>shaderSignedZeroInfNanPreserveFloat32</code></a> is <code>VK_FALSE</code> then any <code>FPFastMathMode</code> decoration on an instruction with result type or any operand type that includes a 32-bit float <strong class=\"purple\">must</strong> include the <code>NSZ</code>, <code>NotInf</code>, and <code>NotNaN</code> flags",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-shaderSignedZeroInfNanPreserveFloat64-09563",
          "text": "If <a href=\"#limits-shaderSignedZeroInfNanPreserveFloat64\"><code>shaderSignedZeroInfNanPreserveFloat64</code></a> is <code>VK_FALSE</code> then any <code>FPFastMathDefault</code> execution mode with a type of 64-bit float <strong class=\"purple\">must</strong> include the <code>NSZ</code>, <code>NotInf</code>, and <code>NotNaN</code> flags",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-shaderSignedZeroInfNanPreserveFloat64-09564",
          "text": "If <a href=\"#limits-shaderSignedZeroInfNanPreserveFloat64\"><code>shaderSignedZeroInfNanPreserveFloat64</code></a> is <code>VK_FALSE</code> then any <code>FPFastMathMode</code> decoration on an instruction with result type or any operand type that includes a 64-bit float <strong class=\"purple\">must</strong> include the <code>NSZ</code>, <code>NotInf</code>, and <code>NotNaN</code> flags",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-Offset-06308",
          "text": "The <code>Offset</code> plus size of the type of each variable, in the output interface of the entry point being compiled, decorated with <code>XfbBuffer</code> <strong class=\"purple\">must</strong> not be greater than <a href=\"#VkPhysicalDeviceTransformFeedbackPropertiesEXT\">VkPhysicalDeviceTransformFeedbackPropertiesEXT</a>::<code>maxTransformFeedbackBufferDataSize</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-XfbBuffer-06309",
          "text": "For any given <code>XfbBuffer</code> value, define the buffer data size to be smallest number of bytes such that, for all outputs decorated with the same <code>XfbBuffer</code> value, the size of the output interface variable plus the <code>Offset</code> is less than or equal to the buffer data size. For a given <code>Stream</code>, the sum of all the buffer data sizes for all buffers writing to that stream the <strong class=\"purple\">must</strong> not exceed <a href=\"#VkPhysicalDeviceTransformFeedbackPropertiesEXT\">VkPhysicalDeviceTransformFeedbackPropertiesEXT</a>::<code>maxTransformFeedbackStreamDataSize</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpEmitStreamVertex-06310",
          "text": "The Stream value to <code>OpEmitStreamVertex</code> and <code>OpEndStreamPrimitive</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkPhysicalDeviceTransformFeedbackPropertiesEXT\">VkPhysicalDeviceTransformFeedbackPropertiesEXT</a>::<code>maxTransformFeedbackStreams</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-transformFeedbackStreamsLinesTriangles-06311",
          "text": "If the geometry shader emits to more than one vertex stream and <a href=\"#VkPhysicalDeviceTransformFeedbackPropertiesEXT\">VkPhysicalDeviceTransformFeedbackPropertiesEXT</a>::<code>transformFeedbackStreamsLinesTriangles</code> is <code>VK_FALSE</code>, then <code>Execution</code> <code>Mode</code> <strong class=\"purple\">must</strong> be <code>OutputPoints</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-Stream-06312",
          "text": "The stream number value to <code>Stream</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkPhysicalDeviceTransformFeedbackPropertiesEXT\">VkPhysicalDeviceTransformFeedbackPropertiesEXT</a>::<code>maxTransformFeedbackStreams</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-XfbStride-06313",
          "text": "The XFB Stride value to <code>XfbStride</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceTransformFeedbackPropertiesEXT\">VkPhysicalDeviceTransformFeedbackPropertiesEXT</a>::<code>maxTransformFeedbackBufferDataStride</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-PhysicalStorageBuffer64-06314",
          "text": "If the <code>PhysicalStorageBuffer64</code> addressing model is enabled any load or store through a physical pointer type <strong class=\"purple\">must</strong> be aligned to a multiple of the size of the largest scalar type in the pointed-to type",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-PhysicalStorageBuffer64-06315",
          "text": "If the <code>PhysicalStorageBuffer64</code> addressing model is enabled the pointer value of a memory access instruction <strong class=\"purple\">must</strong> be at least as aligned as specified by the <code>Aligned</code> memory access operand",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpTypeCooperativeMatrixNV-06316",
          "text": "For <code>OpTypeCooperativeMatrixNV</code>, the component type, scope, number of rows, and number of columns <strong class=\"purple\">must</strong> match one of the matrices in any of the supported <a href=\"#VkCooperativeMatrixPropertiesNV\">VkCooperativeMatrixPropertiesNV</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpTypeCooperativeMatrixMulAddNV-10059",
          "text": "For <code>OpTypeCooperativeMatrixMulAddNV</code>, the operands <strong class=\"purple\">must</strong> match a supported <a href=\"#VkCooperativeMatrixPropertiesNV\">VkCooperativeMatrixPropertiesNV</a>, such that:<div class=\"ulist\">\n<ul>\n<li>\n<p>The type of <code>A</code> <strong class=\"purple\">must</strong> have <code>Rows</code> match\n<a href=\"#VkCooperativeMatrixPropertiesNV\">VkCooperativeMatrixPropertiesNV</a>::<code>MSize</code>, <code>Columns</code> match\n<a href=\"#VkCooperativeMatrixPropertiesNV\">VkCooperativeMatrixPropertiesNV</a>::<code>KSize</code>, and\n<code>ComponentType</code> match\n<a href=\"#VkCooperativeMatrixPropertiesNV\">VkCooperativeMatrixPropertiesNV</a>::<code>AType</code>.</p>\n</li>\n<li>\n<p>The type of <code>B</code> <strong class=\"purple\">must</strong> have <code>Rows</code> match\n<a href=\"#VkCooperativeMatrixPropertiesNV\">VkCooperativeMatrixPropertiesNV</a>::<code>KSize</code>, <code>Columns</code> match\n<a href=\"#VkCooperativeMatrixPropertiesNV\">VkCooperativeMatrixPropertiesNV</a>::<code>NSize</code>, and\n<code>ComponentType</code> match\n<a href=\"#VkCooperativeMatrixPropertiesNV\">VkCooperativeMatrixPropertiesNV</a>::<code>BType</code>.</p>\n</li>\n<li>\n<p>The type of <code>C</code> <strong class=\"purple\">must</strong> have <code>Rows</code> match\n<a href=\"#VkCooperativeMatrixPropertiesNV\">VkCooperativeMatrixPropertiesNV</a>::<code>MSize</code>, <code>Columns</code> match\n<a href=\"#VkCooperativeMatrixPropertiesNV\">VkCooperativeMatrixPropertiesNV</a>::<code>NSize</code>, and\n<code>ComponentType</code> match\n<a href=\"#VkCooperativeMatrixPropertiesNV\">VkCooperativeMatrixPropertiesNV</a>::<code>CType</code>.</p>\n</li>\n<li>\n<p>The type of <code>Result</code> <strong class=\"purple\">must</strong> have <code>Rows</code> match\n<a href=\"#VkCooperativeMatrixPropertiesNV\">VkCooperativeMatrixPropertiesNV</a>::<code>MSize</code>, <code>Columns</code> match\n<a href=\"#VkCooperativeMatrixPropertiesNV\">VkCooperativeMatrixPropertiesNV</a>::<code>NSize</code>, and\n<code>ComponentType</code> match\n<a href=\"#VkCooperativeMatrixPropertiesNV\">VkCooperativeMatrixPropertiesNV</a>::<code>DType</code>.</p>\n</li>\n<li>\n<p>The scope of all cooperative matrix operands <strong class=\"purple\">must</strong> be\n<a href=\"#VkScopeNV\">VkScopeNV</a>::<code>VK_SCOPE_SUBGROUP_NV</code>.</p>\n</li>\n<li>\n<p>If <code>ComponentType</code> of <code>A</code>, <code>B</code>, <code>C</code>, or <code>Result</code> is a\nsigned integral type, the <code>Signedness</code> operand of the <code>OpTypeInt</code>\nmust be 1.</p>\n</li>\n<li>\n<p>If <code>ComponentType</code> of <code>A</code>, <code>B</code>, <code>C</code>, or <code>Result</code> is an\nunsigned integral type, the <code>Signedness</code> operand of the\n<code>OpTypeInt</code> must be 0.</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpTypeCooperativeMatrixNV-06322",
          "text": "<code>OpTypeCooperativeMatrixNV</code> and <code>OpCooperativeMatrix*</code> instructions <strong class=\"purple\">must</strong> not be used in shader stages not included in <a href=\"#VkPhysicalDeviceCooperativeMatrixPropertiesNV\">VkPhysicalDeviceCooperativeMatrixPropertiesNV</a>::<code>cooperativeMatrixSupportedStages</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpTypeCooperativeMatrixKHR-08974",
          "text": "For <code>OpTypeCooperativeMatrixKHR</code>, the component type, scope, number of rows, and number of columns <strong class=\"purple\">must</strong> match one of the matrices in any of the supported <a href=\"#VkCooperativeMatrixPropertiesKHR\">VkCooperativeMatrixPropertiesKHR</a>.",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpCooperativeMatrixMulAddKHR-10060",
          "text": "For <code>OpCooperativeMatrixMulAddKHR</code>, the operands <strong class=\"purple\">must</strong> match a supported <a href=\"#VkCooperativeMatrixPropertiesKHR\">VkCooperativeMatrixPropertiesKHR</a>, such that:<div class=\"ulist\">\n<ul>\n<li>\n<p>The type of <code>A</code> <strong class=\"purple\">must</strong> have <code>Rows</code> match\n<a href=\"#VkCooperativeMatrixPropertiesKHR\">VkCooperativeMatrixPropertiesKHR</a>::<code>MSize</code>, <code>Columns</code> match\n<a href=\"#VkCooperativeMatrixPropertiesKHR\">VkCooperativeMatrixPropertiesKHR</a>::<code>KSize</code>, <code>Use</code> be\n<code>MatrixAKHR</code>, and <code>ComponentType</code> match\n<a href=\"#VkCooperativeMatrixPropertiesKHR\">VkCooperativeMatrixPropertiesKHR</a>::<code>AType</code>.</p>\n</li>\n<li>\n<p>The type of <code>B</code> <strong class=\"purple\">must</strong> have <code>Rows</code> match\n<a href=\"#VkCooperativeMatrixPropertiesKHR\">VkCooperativeMatrixPropertiesKHR</a>::<code>KSize</code>, <code>Columns</code> match\n<a href=\"#VkCooperativeMatrixPropertiesKHR\">VkCooperativeMatrixPropertiesKHR</a>::<code>NSize</code>, <code>Use</code> be\n<code>MatrixBKHR</code>, and <code>ComponentType</code> match\n<a href=\"#VkCooperativeMatrixPropertiesKHR\">VkCooperativeMatrixPropertiesKHR</a>::<code>BType</code>.</p>\n</li>\n<li>\n<p>The type of <code>C</code> <strong class=\"purple\">must</strong> have <code>Rows</code> match\n<a href=\"#VkCooperativeMatrixPropertiesKHR\">VkCooperativeMatrixPropertiesKHR</a>::<code>MSize</code>, <code>Columns</code> match\n<a href=\"#VkCooperativeMatrixPropertiesKHR\">VkCooperativeMatrixPropertiesKHR</a>::<code>NSize</code>, <code>Use</code> be\n<code>MatrixAccumulatorKHR</code>, and <code>ComponentType</code> match\n<a href=\"#VkCooperativeMatrixPropertiesKHR\">VkCooperativeMatrixPropertiesKHR</a>::<code>CType</code>.</p>\n</li>\n<li>\n<p>The type of <code>Result</code> <strong class=\"purple\">must</strong> have <code>Rows</code> match\n<a href=\"#VkCooperativeMatrixPropertiesKHR\">VkCooperativeMatrixPropertiesKHR</a>::<code>MSize</code>, <code>Columns</code> match\n<a href=\"#VkCooperativeMatrixPropertiesKHR\">VkCooperativeMatrixPropertiesKHR</a>::<code>NSize</code>, <code>Use</code> be\n<code>MatrixAccumulatorKHR</code>, and <code>ComponentType</code> match\n<a href=\"#VkCooperativeMatrixPropertiesKHR\">VkCooperativeMatrixPropertiesKHR</a>::<code>ResultType</code>.</p>\n</li>\n<li>\n<p>If and only if <a href=\"#VkCooperativeMatrixPropertiesKHR\">VkCooperativeMatrixPropertiesKHR</a>::<code>AType</code> is a\nsigned integer type, <code>MatrixASignedComponents</code> <strong class=\"purple\">must</strong> be used.</p>\n</li>\n<li>\n<p>If and only if <a href=\"#VkCooperativeMatrixPropertiesKHR\">VkCooperativeMatrixPropertiesKHR</a>::<code>BType</code> is a\nsigned integer type, <code>MatrixBSignedComponents</code> <strong class=\"purple\">must</strong> be used.</p>\n</li>\n<li>\n<p>If and only if <a href=\"#VkCooperativeMatrixPropertiesKHR\">VkCooperativeMatrixPropertiesKHR</a>::<code>CType</code> is a\nsigned integer type, <code>MatrixCSignedComponents</code> <strong class=\"purple\">must</strong> be used.</p>\n</li>\n<li>\n<p>If and only if <a href=\"#VkCooperativeMatrixPropertiesKHR\">VkCooperativeMatrixPropertiesKHR</a>::<code>ResultType</code>\nis a signed integer type, <code>MatrixResultSignedComponents</code> <strong class=\"purple\">must</strong> be\nused.</p>\n</li>\n<li>\n<p>If and only if\n<a href=\"#VkCooperativeMatrixPropertiesKHR\">VkCooperativeMatrixPropertiesKHR</a>::<code>saturatingAccumulation</code> is\n<code>VK_TRUE</code>, <code>SaturatingAccumulationKHR</code> <strong class=\"purple\">must</strong> be used.</p>\n</li>\n<li>\n<p>If and only if\n<a href=\"#VkCooperativeMatrixPropertiesKHR\">VkCooperativeMatrixPropertiesKHR</a>::<code>saturatingAccumulation</code> is\n<code>VK_FALSE</code>, <code>SaturatingAccumulationKHR</code> <strong class=\"purple\">must</strong> not be used.</p>\n</li>\n<li>\n<p>The scope of all cooperative matrix operands <strong class=\"purple\">must</strong> be\n<a href=\"#VkScopeKHR\">VkScopeKHR</a>::<code>VK_SCOPE_SUBGROUP_KHR</code>.</p>\n</li>\n</ul>\n</div>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-cooperativeMatrixSupportedStages-08985",
          "text": "<code>OpTypeCooperativeMatrixKHR</code> and <code>OpCooperativeMatrix*</code> instructions <strong class=\"purple\">must</strong> not be used in shader stages not included in <a href=\"#VkPhysicalDeviceCooperativeMatrixPropertiesKHR\">VkPhysicalDeviceCooperativeMatrixPropertiesKHR</a>::<code>cooperativeMatrixSupportedStages</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-DescriptorSet-06323",
          "text": "<code>DescriptorSet</code> and <code>Binding</code> decorations <strong class=\"purple\">must</strong> obey the constraints on <code>Storage</code> <code>Class</code>, type, and descriptor type described in <a href=\"#interfaces-resources-setandbinding\">DescriptorSet and Binding Assignment</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpCooperativeMatrixLoadNV-06324",
          "text": "For <code>OpCooperativeMatrixLoadNV</code> and <code>OpCooperativeMatrixStoreNV</code> instructions, the <code>Pointer</code> and <code>Stride</code> operands <strong class=\"purple\">must</strong> be aligned to at least the lesser of 16 bytes or the natural alignment of a row or column (depending on <code>ColumnMajor</code>) of the matrix (where the natural alignment is the number of columns/rows multiplied by the component size)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-MeshNV-07113",
          "text": "For mesh shaders using the <code>MeshNV</code> <code>Execution</code> <code>Model</code> the <code>OutputVertices</code> <code>OpExecutionMode</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMeshShaderPropertiesNV\">VkPhysicalDeviceMeshShaderPropertiesNV</a>::<code>maxMeshOutputVertices</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-MeshNV-07114",
          "text": "For mesh shaders using the <code>MeshNV</code> <code>Execution</code> <code>Model</code> the <code>OutputPrimitivesNV</code> <code>OpExecutionMode</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMeshShaderPropertiesNV\">VkPhysicalDeviceMeshShaderPropertiesNV</a>::<code>maxMeshOutputPrimitives</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-MeshEXT-07115",
          "text": "For mesh shaders using the <code>MeshEXT</code> <code>Execution</code> <code>Model</code> the <code>OutputVertices</code> <code>OpExecutionMode</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMeshShaderPropertiesEXT\">VkPhysicalDeviceMeshShaderPropertiesEXT</a>::<code>maxMeshOutputVertices</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-MeshEXT-07332",
          "text": "For mesh shaders using the <code>MeshEXT</code> <code>Execution</code> <code>Model</code> the &#8220;Vertex Count&#8221; operand of <code>OpSetMeshOutputsEXT</code> <strong class=\"purple\">must</strong> be less than or equal to <code>OutputVertices</code> <code>OpExecutionMode</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-MeshEXT-07116",
          "text": "For mesh shaders using the <code>MeshEXT</code> <code>Execution</code> <code>Model</code> the <code>OutputPrimitivesEXT</code> <code>OpExecutionMode</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMeshShaderPropertiesEXT\">VkPhysicalDeviceMeshShaderPropertiesEXT</a>::<code>maxMeshOutputPrimitives</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-MeshEXT-07333",
          "text": "For mesh shaders using the <code>MeshEXT</code> <code>Execution</code> <code>Model</code> the &#8220;Primitive Count&#8221; operand of <code>OpSetMeshOutputsEXT</code> <strong class=\"purple\">must</strong> be less than or equal to <code>OutputPrimitivesEXT</code> <code>OpExecutionMode</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-TaskEXT-07117",
          "text": "In task shaders using the <code>TaskEXT</code> <code>Execution</code> <code>Model</code> <code>OpEmitMeshTasksEXT</code> <strong class=\"purple\">must</strong> be called exactly once under dynamically uniform conditions",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-MeshEXT-07118",
          "text": "In mesh shaders using the <code>MeshEXT</code> <code>Execution</code> <code>Model</code> <code>OpSetMeshOutputsEXT</code> <strong class=\"purple\">must</strong> be called at most once under dynamically uniform conditions",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-TaskEXT-07291",
          "text": "In task shaders using the <code>TaskEXT</code> <code>Execution</code> <code>Model</code> the <code>x</code> size in <code>LocalSize</code> or <code>LocalSizeId</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMeshShaderPropertiesEXT\">VkPhysicalDeviceMeshShaderPropertiesEXT</a>::<code>maxTaskWorkGroupSize</code>[0]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-TaskEXT-07292",
          "text": "In task shaders using the <code>TaskEXT</code> <code>Execution</code> <code>Model</code> the <code>y</code> size in <code>LocalSize</code> or <code>LocalSizeId</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMeshShaderPropertiesEXT\">VkPhysicalDeviceMeshShaderPropertiesEXT</a>::<code>maxTaskWorkGroupSize</code>[1]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-TaskEXT-07293",
          "text": "In task shaders using the <code>TaskEXT</code> <code>Execution</code> <code>Model</code> the <code>z</code> size in <code>LocalSize</code> or <code>LocalSizeId</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMeshShaderPropertiesEXT\">VkPhysicalDeviceMeshShaderPropertiesEXT</a>::<code>maxTaskWorkGroupSize</code>[2]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-TaskEXT-07294",
          "text": "In task shaders using the <code>TaskEXT</code> <code>Execution</code> <code>Model</code> the product of <code>x</code> size, <code>y</code> size, and <code>z</code> size in <code>LocalSize</code> or <code>LocalSizeId</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMeshShaderPropertiesEXT\">VkPhysicalDeviceMeshShaderPropertiesEXT</a>::<code>maxTaskWorkGroupInvocations</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-MeshEXT-07295",
          "text": "For mesh shaders using the <code>MeshEXT</code> <code>Execution</code> <code>Model</code> the <code>x</code> size in <code>LocalSize</code> or <code>LocalSizeId</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMeshShaderPropertiesEXT\">VkPhysicalDeviceMeshShaderPropertiesEXT</a>::<code>maxMeshWorkGroupSize</code>[0]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-MeshEXT-07296",
          "text": "For mesh shaders using the <code>MeshEXT</code> <code>Execution</code> <code>Model</code> the <code>y</code> size in <code>LocalSize</code> or <code>LocalSizeId</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMeshShaderPropertiesEXT\">VkPhysicalDeviceMeshShaderPropertiesEXT</a>::<code>maxMeshWorkGroupSize</code>[1]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-MeshEXT-07297",
          "text": "For mesh shaders using the <code>MeshEXT</code> <code>Execution</code> <code>Model</code> the <code>z</code> size in <code>LocalSize</code> or <code>LocalSizeId</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMeshShaderPropertiesEXT\">VkPhysicalDeviceMeshShaderPropertiesEXT</a>::<code>maxMeshWorkGroupSize</code>[2]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-MeshEXT-07298",
          "text": "For mesh shaders using the <code>MeshEXT</code> <code>Execution</code> <code>Model</code> the product of <code>x</code> size, <code>y</code> size, and <code>z</code> size in <code>LocalSize</code> or <code>LocalSizeId</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMeshShaderPropertiesEXT\">VkPhysicalDeviceMeshShaderPropertiesEXT</a>::<code>maxMeshWorkGroupInvocations</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-TaskEXT-07299",
          "text": "In task shaders using the <code>TaskEXT</code> <code>Execution</code> <code>Model</code> the value of the &#8220;Group Count X&#8221; operand of <code>OpEmitMeshTasksEXT</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMeshShaderPropertiesEXT\">VkPhysicalDeviceMeshShaderPropertiesEXT</a>::<code>maxMeshWorkGroupCount</code>[0]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-TaskEXT-07300",
          "text": "In task shaders using the <code>TaskEXT</code> <code>Execution</code> <code>Model</code> the value of the &#8220;Group Count Y&#8221; operand of <code>OpEmitMeshTasksEXT</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMeshShaderPropertiesEXT\">VkPhysicalDeviceMeshShaderPropertiesEXT</a>::<code>maxMeshWorkGroupCount</code>[1]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-TaskEXT-07301",
          "text": "In task shaders using the <code>TaskEXT</code> <code>Execution</code> <code>Model</code> the value of the &#8220;Group Count Z&#8221; operand of <code>OpEmitMeshTasksEXT</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMeshShaderPropertiesEXT\">VkPhysicalDeviceMeshShaderPropertiesEXT</a>::<code>maxMeshWorkGroupCount</code>[2]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-TaskEXT-07302",
          "text": "In task shaders using the <code>TaskEXT</code> <code>Execution</code> <code>Model</code> the product of the &#8220;Group Count&#8221; operands of <code>OpEmitMeshTasksEXT</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMeshShaderPropertiesEXT\">VkPhysicalDeviceMeshShaderPropertiesEXT</a>::<code>maxMeshWorkGroupTotalCount</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-maxMeshSharedMemorySize-08754",
          "text": "The sum of size in bytes for variables and <a href=\"#workgroup-padding\">padding</a> in the <code>Workgroup</code> <code>Storage</code> <code>Class</code> in the <code>MeshEXT</code> <code>Execution</code> <code>Model</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxMeshSharedMemorySize\"><code>maxMeshSharedMemorySize</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-maxMeshPayloadAndSharedMemorySize-08755",
          "text": "The sum of size in bytes for variables and <a href=\"#workgroup-padding\">padding</a> in the <code>TaskPayloadWorkgroupEXT</code> or <code>Workgroup</code> <code>Storage</code> <code>Class</code> in the <code>MeshEXT</code> <code>Execution</code> <code>Model</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxMeshPayloadAndSharedMemorySize\"><code>maxMeshPayloadAndSharedMemorySize</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-maxMeshOutputMemorySize-08756",
          "text": "The sum of size in bytes for variables in the <code>Output</code> <code>Storage</code> <code>Class</code> in the <code>MeshEXT</code> <code>Execution</code> <code>Model</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxMeshOutputMemorySize\"><code>maxMeshOutputMemorySize</code></a> according to the formula in <a href=\"#mesh-output\">Mesh Shader Output</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-maxMeshPayloadAndOutputMemorySize-08757",
          "text": "The sum of size in bytes for variables and in the <code>TaskPayloadWorkgroupEXT</code> or <code>Output</code> <code>Storage</code> <code>Class</code> in the <code>MeshEXT</code> <code>Execution</code> <code>Model</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxMeshPayloadAndOutputMemorySize\"><code>maxMeshPayloadAndOutputMemorySize</code></a> according to the formula in <a href=\"#mesh-output\">Mesh Shader Output</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-maxTaskPayloadSize-08758",
          "text": "The sum of size in bytes for variables and in the <code>TaskPayloadWorkgroupEXT</code> <code>Storage</code> <code>Class</code> in the <code>TaskEXT</code> <code>Execution</code> <code>Model</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxTaskPayloadSize\"><code>maxTaskPayloadSize</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-maxTaskSharedMemorySize-08759",
          "text": "The sum of size in bytes for variables and <a href=\"#workgroup-padding\">padding</a> in the <code>Workgroup</code> <code>Storage</code> <code>Class</code> in the <code>TaskEXT</code> <code>Execution</code> <code>Model</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxTaskSharedMemorySize\"><code>maxTaskSharedMemorySize</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-maxTaskPayloadAndSharedMemorySize-08760",
          "text": "The sum of size in bytes for variables and <a href=\"#workgroup-padding\">padding</a> in the <code>TaskPayloadWorkgroupEXT</code> or <code>Workgroup</code> <code>Storage</code> <code>Class</code> in the <code>TaskEXT</code> <code>Execution</code> <code>Model</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxTaskPayloadAndSharedMemorySize\"><code>maxTaskPayloadAndSharedMemorySize</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpCooperativeMatrixLoadKHR-08986",
          "text": "For <code>OpCooperativeMatrixLoadKHR</code> and <code>OpCooperativeMatrixStoreKHR</code> instructions, the <code>Pointer</code> and <code>Stride</code> operands <strong class=\"purple\">must</strong> be aligned to at least the lesser of 16 bytes or the natural alignment of a row or column (depending on <code>ColumnMajor</code>) of the matrix (where the natural alignment is the number of columns/rows multiplied by the component size)",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-shaderSampleRateInterpolationFunctions-06325",
          "text": "If the <code><a href=\"#VK_KHR_portability_subset\">VK_KHR_portability_subset</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>shaderSampleRateInterpolationFunctions</code> is <code>VK_FALSE</code>, then <code>GLSL.std.450</code> fragment interpolation functions are not supported by the implementation and <code>OpCapability</code> <strong class=\"purple\">must</strong> not be set to <code>InterpolationFunction</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-tessellationShader-06326",
          "text": "If <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> is enabled, and the <code><a href=\"#VK_KHR_portability_subset\">VK_KHR_portability_subset</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>tessellationIsolines</code> is <code>VK_FALSE</code>, then <code>OpExecutionMode</code> <strong class=\"purple\">must</strong> not be set to <code>IsoLines</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-tessellationShader-06327",
          "text": "If <a href=\"#features-tessellationShader\"><code>tessellationShader</code></a> is enabled, and the <code><a href=\"#VK_KHR_portability_subset\">VK_KHR_portability_subset</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>tessellationPointMode</code> is <code>VK_FALSE</code>, then <code>OpExecutionMode</code> <strong class=\"purple\">must</strong> not be set to <code>PointMode</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-storageBuffer8BitAccess-06328",
          "text": "If <a href=\"#features-storageBuffer8BitAccess\"><code>storageBuffer8BitAccess</code></a> is <code>VK_FALSE</code>, then objects containing an 8-bit integer element <strong class=\"purple\">must</strong> not have <code>Storage</code> <code>Class</code> of <code>StorageBuffer</code>, <code>ShaderRecordBufferKHR</code>, or <code>PhysicalStorageBuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-uniformAndStorageBuffer8BitAccess-06329",
          "text": "If <a href=\"#features-uniformAndStorageBuffer8BitAccess\"><code>uniformAndStorageBuffer8BitAccess</code></a> is <code>VK_FALSE</code>, then objects in the <code>Uniform</code> <code>Storage</code> <code>Class</code> with the <code>Block</code> decoration <strong class=\"purple\">must</strong> not have an 8-bit integer member",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-storagePushConstant8-06330",
          "text": "If <a href=\"#features-storagePushConstant8\"><code>storagePushConstant8</code></a> is <code>VK_FALSE</code>, then objects containing an 8-bit integer element <strong class=\"purple\">must</strong> not have <code>Storage</code> <code>Class</code> of <code>PushConstant</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-storageBuffer16BitAccess-06331",
          "text": "If <a href=\"#features-storageBuffer16BitAccess\"><code>storageBuffer16BitAccess</code></a> is <code>VK_FALSE</code>, then objects containing 16-bit integer or 16-bit floating-point elements <strong class=\"purple\">must</strong> not have <code>Storage</code> <code>Class</code> of <code>StorageBuffer</code>, <code>ShaderRecordBufferKHR</code>, or <code>PhysicalStorageBuffer</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-uniformAndStorageBuffer16BitAccess-06332",
          "text": "If <a href=\"#features-uniformAndStorageBuffer16BitAccess\"><code>uniformAndStorageBuffer16BitAccess</code></a> is <code>VK_FALSE</code>, then objects in the <code>Uniform</code> <code>Storage</code> <code>Class</code> with the <code>Block</code> decoration <strong class=\"purple\">must</strong> not have 16-bit integer or 16-bit floating-point members",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-storagePushConstant16-06333",
          "text": "If <a href=\"#features-storagePushConstant16\"><code>storagePushConstant16</code></a> is <code>VK_FALSE</code>, then objects containing 16-bit integer or 16-bit floating-point elements <strong class=\"purple\">must</strong> not have <code>Storage</code> <code>Class</code> of <code>PushConstant</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-storageInputOutput16-06334",
          "text": "If <a href=\"#features-storageInputOutput16\"><code>storageInputOutput16</code></a> is <code>VK_FALSE</code>, then objects containing 16-bit integer or 16-bit floating-point elements <strong class=\"purple\">must</strong> not have <code>Storage</code> <code>Class</code> of <code>Input</code> or <code>Output</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-None-06337",
          "text": "<a href=\"#features-shaderBufferFloat16Atomics\"><code>shaderBufferFloat16Atomics</code></a>, or <a href=\"#features-shaderBufferFloat16AtomicAdd\"><code>shaderBufferFloat16AtomicAdd</code></a>, or <a href=\"#features-shaderBufferFloat16AtomicMinMax\"><code>shaderBufferFloat16AtomicMinMax</code></a>, or <a href=\"#features-shaderSharedFloat16Atomics\"><code>shaderSharedFloat16Atomics</code></a>, or <a href=\"#features-shaderSharedFloat16AtomicAdd\"><code>shaderSharedFloat16AtomicAdd</code></a>, or <a href=\"#features-shaderSharedFloat16AtomicMinMax\"><code>shaderSharedFloat16AtomicMinMax</code></a> <strong class=\"purple\">must</strong> be enabled for 16-bit floating-point atomic operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-None-06338",
          "text": "<a href=\"#features-shaderBufferFloat32Atomics\"><code>shaderBufferFloat32Atomics</code></a>, or <a href=\"#features-shaderBufferFloat32AtomicAdd\"><code>shaderBufferFloat32AtomicAdd</code></a>, or <a href=\"#features-shaderSharedFloat32Atomics\"><code>shaderSharedFloat32Atomics</code></a>, or <a href=\"#features-shaderSharedFloat32AtomicAdd\"><code>shaderSharedFloat32AtomicAdd</code></a>, or <a href=\"#features-shaderImageFloat32Atomics\"><code>shaderImageFloat32Atomics</code></a>, or <a href=\"#features-shaderImageFloat32AtomicAdd\"><code>shaderImageFloat32AtomicAdd</code></a> or <a href=\"#features-shaderBufferFloat32AtomicMinMax\"><code>shaderBufferFloat32AtomicMinMax</code></a>, or <a href=\"#features-shaderSharedFloat32AtomicMinMax\"><code>shaderSharedFloat32AtomicMinMax</code></a>, or <a href=\"#features-shaderImageFloat32AtomicMinMax\"><code>shaderImageFloat32AtomicMinMax</code></a> <strong class=\"purple\">must</strong> be enabled for 32-bit floating-point atomic operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-None-06339",
          "text": "<a href=\"#features-shaderBufferFloat64Atomics\"><code>shaderBufferFloat64Atomics</code></a>, or <a href=\"#features-shaderBufferFloat64AtomicAdd\"><code>shaderBufferFloat64AtomicAdd</code></a>, or <a href=\"#features-shaderSharedFloat64Atomics\"><code>shaderSharedFloat64Atomics</code></a>, or <a href=\"#features-shaderSharedFloat64AtomicAdd\"><code>shaderSharedFloat64AtomicAdd</code></a>, or <a href=\"#features-shaderBufferFloat64AtomicMinMax\"><code>shaderBufferFloat64AtomicMinMax</code></a>, or <a href=\"#features-shaderSharedFloat64AtomicMinMax\"><code>shaderSharedFloat64AtomicMinMax</code></a>, <strong class=\"purple\">must</strong> be enabled for 64-bit floating-point atomic operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-shaderFloat16VectorAtomics-09581",
          "text": "<a href=\"#features-shaderFloat16VectorAtomics\"><code>shaderFloat16VectorAtomics</code></a>, <strong class=\"purple\">must</strong> be enabled for 16-bit floating-point, 2- and 4-component vector atomic operations to be supported",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-NonWritable-06340",
          "text": "If <a href=\"#features-fragmentStoresAndAtomics\"><code>fragmentStoresAndAtomics</code></a> is not enabled, then all storage image, storage texel buffer, and storage buffer variables in the fragment stage <strong class=\"purple\">must</strong> be decorated with the <code>NonWritable</code> decoration",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-NonWritable-06341",
          "text": "If <a href=\"#features-vertexPipelineStoresAndAtomics\"><code>vertexPipelineStoresAndAtomics</code></a> is not enabled, then all storage image, storage texel buffer, and storage buffer variables in the vertex, tessellation, and geometry stages <strong class=\"purple\">must</strong> be decorated with the <code>NonWritable</code> decoration",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-None-06342",
          "text": "If <a href=\"#limits-subgroupQuadOperationsInAllStages\"><code>subgroupQuadOperationsInAllStages</code></a> is <code>VK_FALSE</code>, then <a href=\"#features-subgroup-quad\">quad subgroup operations</a> <strong class=\"purple\">must</strong> not be used except for in fragment and compute stages",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-None-06343",
          "text": "<a href=\"#shaders-group-operations\">Group operations</a> with <a href=\"#shaders-scope-subgroup\">subgroup scope</a> <strong class=\"purple\">must</strong> not be used if the shader stage is not in <a href=\"#limits-subgroupSupportedStages\"><code>subgroupSupportedStages</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-Offset-06344",
          "text": "The first element of the <code>Offset</code> operand of <code>InterpolateAtOffset</code> <strong class=\"purple\">must</strong> be greater than or equal to:<br> <span class=\"eq\">frag<sub>width</sub> × <a href=\"#limits-minInterpolationOffset\"><code>minInterpolationOffset</code></a></span><br> where <span class=\"eq\">frag<sub>width</sub></span> is the width of the current fragment in pixels",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-Offset-06345",
          "text": "The first element of the <code>Offset</code> operand of <code>InterpolateAtOffset</code> <strong class=\"purple\">must</strong> be less than or equal to<br> <span class=\"eq\">frag<sub>width</sub> × (<a href=\"#limits-maxInterpolationOffset\"><code>maxInterpolationOffset</code></a> +  ULP ) - ULP</span><br> where <span class=\"eq\">frag<sub>width</sub></span> is the width of the current fragment in pixels and <span class=\"eq\">ULP = 1 / 2^<a href=\"#limits-subPixelInterpolationOffsetBits\"><code>subPixelInterpolationOffsetBits</code></a>^</span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-Offset-06346",
          "text": "The second element of the <code>Offset</code> operand of <code>InterpolateAtOffset</code> <strong class=\"purple\">must</strong> be greater than or equal to<br> <span class=\"eq\">frag<sub>height</sub> × <a href=\"#limits-minInterpolationOffset\"><code>minInterpolationOffset</code></a></span><br> where <span class=\"eq\">frag<sub>height</sub></span> is the height of the current fragment in pixels",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-Offset-06347",
          "text": "The second element of the <code>Offset</code> operand of <code>InterpolateAtOffset</code> <strong class=\"purple\">must</strong> be less than or equal to<br> <span class=\"eq\">frag<sub>height</sub> × (<a href=\"#limits-maxInterpolationOffset\"><code>maxInterpolationOffset</code></a> +  ULP ) - ULP</span><br> where <span class=\"eq\">frag<sub>height</sub></span> is the height of the current fragment in pixels and <span class=\"eq\">ULP = 1 / 2^<a href=\"#limits-subPixelInterpolationOffsetBits\"><code>subPixelInterpolationOffsetBits</code></a>^</span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpRayQueryInitializeKHR-06348",
          "text": "For <code>OpRayQueryInitializeKHR</code> instructions, all components of the <code>RayOrigin</code> and <code>RayDirection</code> operands <strong class=\"purple\">must</strong> be finite floating-point values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpRayQueryInitializeKHR-06349",
          "text": "For <code>OpRayQueryInitializeKHR</code> instructions, the <code>RayTmin</code> and <code>RayTmax</code> operands <strong class=\"purple\">must</strong> be non-negative floating-point values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpRayQueryInitializeKHR-06350",
          "text": "For <code>OpRayQueryInitializeKHR</code> instructions, the <code>RayTmin</code> operand <strong class=\"purple\">must</strong> be less than or equal to the <code>RayTmax</code> operand",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpRayQueryInitializeKHR-06351",
          "text": "For <code>OpRayQueryInitializeKHR</code> instructions, <code>RayOrigin</code>, <code>RayDirection</code>, <code>RayTmin</code>, and <code>RayTmax</code> operands <strong class=\"purple\">must</strong> not contain NaNs",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpRayQueryInitializeKHR-06352",
          "text": "For <code>OpRayQueryInitializeKHR</code> instructions, <code>Acceleration</code> <code>Structure</code> <strong class=\"purple\">must</strong> be an acceleration structure built as a <a href=\"#acceleration-structure-top-level\">top-level acceleration structure</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpRayQueryInitializeKHR-06889",
          "text": "For <code>OpRayQueryInitializeKHR</code> instructions, the <code>Rayflags</code> operand <strong class=\"purple\">must</strong> not contain both <code>SkipTrianglesKHR</code> and <code>SkipAABBsKHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpRayQueryInitializeKHR-06890",
          "text": "For <code>OpRayQueryInitializeKHR</code> instructions, the <code>Rayflags</code> operand <strong class=\"purple\">must</strong> not contain more than one of <code>SkipTrianglesKHR</code>, <code>CullBackFacingTrianglesKHR</code>, and <code>CullFrontFacingTrianglesKHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpRayQueryInitializeKHR-06891",
          "text": "For <code>OpRayQueryInitializeKHR</code> instructions, the <code>Rayflags</code> operand <strong class=\"purple\">must</strong> not contain more than one of <code>OpaqueKHR</code>, <code>NoOpaqueKHR</code>, <code>CullOpaqueKHR</code>, and <code>CullNoOpaqueKHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpRayQueryGenerateIntersectionKHR-06353",
          "text": "For <code>OpRayQueryGenerateIntersectionKHR</code> instructions, <code>Hit</code> <code>T</code> <strong class=\"purple\">must</strong> satisfy the condition <span class=\"eq\"><code>RayTmin</code> ≤ <code>Hit</code> <code>T</code> ≤ <code>RayTmax</code></span>, where <code>RayTmin</code> is equal to the value returned by <code>OpRayQueryGetRayTMinKHR</code> with the same ray query object, and <code>RayTmax</code> is equal to the value of <code>OpRayQueryGetIntersectionTKHR</code> for the current committed intersection with the same ray query object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpRayQueryGenerateIntersectionKHR-06354",
          "text": "For <code>OpRayQueryGenerateIntersectionKHR</code> instructions, <code>Acceleration</code> <code>Structure</code> <strong class=\"purple\">must</strong> not be built with <code>VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV</code> in <code>flags</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-flags-08761",
          "text": "For <code>OpRayQueryGetIntersectionTriangleVertexPositionsKHR</code> instructions, <code>Acceleration</code> <code>Structure</code> <strong class=\"purple\">must</strong> have been built with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR</code> in <code>flags</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpTraceRayKHR-06355",
          "text": "For <code>OpTraceRayKHR</code> instructions, all components of the <code>RayOrigin</code> and <code>RayDirection</code> operands <strong class=\"purple\">must</strong> be finite floating-point values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpTraceRayKHR-06356",
          "text": "For <code>OpTraceRayKHR</code> instructions, the <code>RayTmin</code> and <code>RayTmax</code> operands <strong class=\"purple\">must</strong> be non-negative floating-point values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpTraceRayKHR-06552",
          "text": "For <code>OpTraceRayKHR</code> instructions, the <code>Rayflags</code> operand <strong class=\"purple\">must</strong> not contain both <code>SkipTrianglesKHR</code> and <code>SkipAABBsKHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpTraceRayKHR-06892",
          "text": "For <code>OpTraceRayKHR</code> instructions, the <code>Rayflags</code> operand <strong class=\"purple\">must</strong> not contain more than one of <code>SkipTrianglesKHR</code>, <code>CullBackFacingTrianglesKHR</code>, and <code>CullFrontFacingTrianglesKHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpTraceRayKHR-06893",
          "text": "For <code>OpTraceRayKHR</code> instructions, the <code>Rayflags</code> operand <strong class=\"purple\">must</strong> not contain more than one of <code>OpaqueKHR</code>, <code>NoOpaqueKHR</code>, <code>CullOpaqueKHR</code>, and <code>CullNoOpaqueKHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpTraceRayKHR-06553",
          "text": "For <code>OpTraceRayKHR</code> instructions, if the <code>Rayflags</code> operand contains <code>SkipTrianglesKHR</code>, the pipeline <strong class=\"purple\">must</strong> not have been created with <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR</code> set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpTraceRayKHR-06554",
          "text": "For <code>OpTraceRayKHR</code> instructions, if the <code>Rayflags</code> operand contains <code>SkipAABBsKHR</code>, the pipeline <strong class=\"purple\">must</strong> not have been created with <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR</code> set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpTraceRayKHR-06357",
          "text": "For <code>OpTraceRayKHR</code> instructions, the <code>RayTmin</code> operand <strong class=\"purple\">must</strong> be less than or equal to the <code>RayTmax</code> operand",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpTraceRayKHR-06358",
          "text": "For <code>OpTraceRayKHR</code> instructions, <code>RayOrigin</code>, <code>RayDirection</code>, <code>RayTmin</code>, and <code>RayTmax</code> operands <strong class=\"purple\">must</strong> not contain NaNs",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpTraceRayKHR-06359",
          "text": "For <code>OpTraceRayKHR</code> instructions, <code>Acceleration</code> <code>Structure</code> <strong class=\"purple\">must</strong> be an acceleration structure built as a <a href=\"#acceleration-structure-top-level\">top-level acceleration structure</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpReportIntersectionKHR-06998",
          "text": "The value of the &#8220;Hit Kind&#8221; operand of <code>OpReportIntersectionKHR</code> <strong class=\"purple\">must</strong> be in the range <span class=\"eq\">[0,127]</span>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpTraceRayKHR-06360",
          "text": "For <code>OpTraceRayKHR</code> instructions, if <code>Acceleration</code> <code>Structure</code> was built with <code>VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV</code> in <code>flags</code>, the pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV</code> set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpTraceRayMotionNV-06361",
          "text": "For <code>OpTraceRayMotionNV</code> instructions, all components of the <code>RayOrigin</code> and <code>RayDirection</code> operands <strong class=\"purple\">must</strong> be finite floating-point values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpTraceRayMotionNV-06362",
          "text": "For <code>OpTraceRayMotionNV</code> instructions, the <code>RayTmin</code> and <code>RayTmax</code> operands <strong class=\"purple\">must</strong> be non-negative floating-point values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpTraceRayMotionNV-06363",
          "text": "For <code>OpTraceRayMotionNV</code> instructions, the <code>RayTmin</code> operand <strong class=\"purple\">must</strong> be less than or equal to the <code>RayTmax</code> operand",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpTraceRayMotionNV-06364",
          "text": "For <code>OpTraceRayMotionNV</code> instructions, <code>RayOrigin</code>, <code>RayDirection</code>, <code>RayTmin</code>, and <code>RayTmax</code> operands <strong class=\"purple\">must</strong> not contain NaNs",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpTraceRayMotionNV-06365",
          "text": "For <code>OpTraceRayMotionNV</code> instructions, <code>Acceleration</code> <code>Structure</code> <strong class=\"purple\">must</strong> be an acceleration structure built as a <a href=\"#acceleration-structure-top-level\">top-level acceleration structure</a> with <code>VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV</code> in <code>flags</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpTraceRayMotionNV-06366",
          "text": "For <code>OpTraceRayMotionNV</code> instructions the <code>time</code> operand <strong class=\"purple\">must</strong> be between 0.0 and 1.0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpTraceRayMotionNV-06367",
          "text": "For <code>OpTraceRayMotionNV</code> instructions the pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV</code> set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpHitObjectTraceRayMotionNV-07704",
          "text": "For <code>OpHitObjectTraceRayMotionNV</code> instructions, if <code>Acceleration</code> <code>Structure</code> was built with <code>VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV</code> in <code>flags</code>, the pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV</code> set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpHitObjectTraceRayNV-07705",
          "text": "For <code>OpHitObjectTraceRayNV</code> and <code>OpHitObjectTraceRayMotionNV</code> instructions, all components of the <code>RayOrigin</code> and <code>RayDirection</code> operands <strong class=\"purple\">must</strong> be finite floating-point values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpHitObjectTraceRayNV-07706",
          "text": "For <code>OpHitObjectTraceRayNV</code> and <code>OpHitObjectTraceRayMotionNV</code> instructions, the <code>RayTmin</code> and <code>RayTmax</code> operands <strong class=\"purple\">must</strong> be non-negative floating-point values",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpHitObjectTraceRayNV-07707",
          "text": "For <code>OpHitObjectTraceRayNV</code> and <code>OpHitObjectTraceRayMotionNV</code> instructions, the <code>RayTmin</code> operand <strong class=\"purple\">must</strong> be less than or equal to the <code>RayTmax</code> operand",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpHitObjectTraceRayNV-07708",
          "text": "For <code>OpHitObjectTraceRayNV</code> and <code>OpHitObjectTraceRayMotionNV</code> instructions, <code>RayOrigin</code>, <code>RayDirection</code>, <code>RayTmin</code>, and <code>RayTmax</code> operands <strong class=\"purple\">must</strong> not contain NaNs",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpHitObjectTraceRayMotionNV-07709",
          "text": "For <code>OpHitObjectTraceRayMotionNV</code> instructions, <code>Acceleration</code> <code>Structure</code> <strong class=\"purple\">must</strong> be an acceleration structure built as a <a href=\"#acceleration-structure-top-level\">top-level acceleration structure</a> with <code>VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV</code> in <code>flags</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpHitObjectTraceRayNV-07710",
          "text": "For <code>OpHitObjectTraceRayNV</code> and <code>OpHitObjectTraceRayMotionNV</code> instructions the <code>time</code> operand <strong class=\"purple\">must</strong> be between 0.0 and 1.0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpHitObjectTraceRayMotionNV-07711",
          "text": "For <code>OpHitObjectTraceRayMotionNV</code> instructions the pipeline <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV</code> set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpHitObjectTraceRayNV-07712",
          "text": "For <code>OpHitObjectTraceRayNV</code> and <code>OpHitObjectTraceRayMotionNV</code> instructions, the <code>Rayflags</code> operand <strong class=\"purple\">must</strong> not contain both <code>SkipTrianglesKHR</code> and <code>SkipAABBsKHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpHitObjectTraceRayNV-07713",
          "text": "For <code>OpHitObjectTraceRayNV</code> and <code>OpHitObjectTraceRayMotionNV</code> instructions, the <code>Rayflags</code> operand <strong class=\"purple\">must</strong> not contain more than one of <code>SkipTrianglesKHR</code>, <code>CullBackFacingTrianglesKHR</code>, and <code>CullFrontFacingTrianglesKHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpHitObjectTraceRayNV-07714",
          "text": "For <code>OpHitObjectTraceRayNV</code> and <code>OpHitObjectTraceRayMotionNV</code> instructions, the <code>Rayflags</code> operand <strong class=\"purple\">must</strong> not contain more than one of <code>OpaqueKHR</code>, <code>NoOpaqueKHR</code>, <code>CullOpaqueKHR</code>, and <code>CullNoOpaqueKHR</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpHitObjectTraceRayNV-07715",
          "text": "For <code>OpHitObjectTraceRayNV</code> and <code>OpHitObjectTraceRayMotionNV</code> instructions, if the <code>Rayflags</code> operand contains <code>SkipTrianglesKHR</code>, the pipeline <strong class=\"purple\">must</strong> not have been created with <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR</code> set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpHitObjectTraceRayNV-07716",
          "text": "For <code>OpHitObjectTraceRayNV</code> and <code>OpHitObjectTraceRayMotionNV</code> instructions, if the <code>Rayflags</code> operand contains <code>SkipAABBsKHR</code>, the pipeline <strong class=\"purple\">must</strong> not have been created with <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR</code> set",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-x-06429",
          "text": "In compute shaders using the <code>GLCompute</code> <code>Execution</code> <code>Model</code> the <code>x</code> size in <code>LocalSize</code> or <code>LocalSizeId</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxComputeWorkGroupSize</code>[0]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-y-06430",
          "text": "In compute shaders using the <code>GLCompute</code> <code>Execution</code> <code>Model</code> the <code>y</code> size in <code>LocalSize</code> or <code>LocalSizeId</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxComputeWorkGroupSize</code>[1]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-z-06431",
          "text": "In compute shaders using the <code>GLCompute</code> <code>Execution</code> <code>Model</code> the <code>z</code> size in <code>LocalSize</code> or <code>LocalSizeId</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxComputeWorkGroupSize</code>[2]",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-x-06432",
          "text": "In compute shaders using the <code>GLCompute</code> <code>Execution</code> <code>Model</code> the product of <code>x</code> size, <code>y</code> size, and <code>z</code> size in <code>LocalSize</code> or <code>LocalSizeId</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxComputeWorkGroupInvocations</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-LocalSizeId-06434",
          "text": "If <code>Execution</code> <code>Mode</code> <code>LocalSizeId</code> is used, <a href=\"#features-maintenance4\"><code>maintenance4</code></a> <strong class=\"purple\">must</strong> be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-maintenance4-06817",
          "text": "If <a href=\"#features-maintenance4\"><code>maintenance4</code></a> is not enabled, any <code>OpTypeVector</code> output interface variables <strong class=\"purple\">must</strong> not have a higher <code>Component</code> <code>Count</code> than a matching <code>OpTypeVector</code> input interface variable",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpEntryPoint-08743",
          "text": "Any <a href=\"#interfaces-iointerfaces-user\">user-defined variables</a> shared between the <code>OpEntryPoint</code> of two shader stages, and declared with <code>Input</code> as its <code>Storage</code> <code>Class</code> for the subsequent shader stage, <strong class=\"purple\">must</strong> have all <code>Location</code> slots and <code>Component</code> words declared in the preceding shader stage&#8217;s <code>OpEntryPoint</code> with <code>Output</code> as the <code>Storage</code> <code>Class</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpEntryPoint-07754",
          "text": "Any <a href=\"#interfaces-iointerfaces-user\">user-defined variables</a> between the <code>OpEntryPoint</code> of two shader stages <strong class=\"purple\">must</strong> have the same type and width for each <code>Component</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpVariable-08746",
          "text": "Any <code>OpVariable</code>, <code>Block</code>-decorated <code>OpTypeStruct</code>, or <code>Block</code>-decorated <code>OpTypeStruct</code> members shared between the <code>OpEntryPoint</code> of two shader stages <strong class=\"purple\">must</strong> have matching decorations as defined in <a href=\"#interfaces-iointerfaces-matching\">interface matching</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-Workgroup-06530",
          "text": "The sum of size in bytes for variables and <a href=\"#workgroup-padding\">padding</a> in the <code>Workgroup</code> <code>Storage</code> <code>Class</code> in the <code>GLCompute</code> <code>Execution</code> <code>Model</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxComputeSharedMemorySize\"><code>maxComputeSharedMemorySize</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-shaderZeroInitializeWorkgroupMemory-06372",
          "text": "If <a href=\"#features-shaderZeroInitializeWorkgroupMemory\"><code>shaderZeroInitializeWorkgroupMemory</code></a> is not enabled, any <code>OpVariable</code> with <code>Workgroup</code> as its <code>Storage</code> <code>Class</code> <strong class=\"purple\">must</strong> not have an <code>Initializer</code> operand",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpImage-06376",
          "text": "If an <code>OpImage*Gather</code> operation has an image operand of <code>Offset</code>, <code>ConstOffset</code>, or <code>ConstOffsets</code> the offset value <strong class=\"purple\">must</strong> be greater than or equal to <a href=\"#limits-minTexelGatherOffset\"><code>minTexelGatherOffset</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpImage-06377",
          "text": "If an <code>OpImage*Gather</code> operation has an image operand of <code>Offset</code>, <code>ConstOffset</code>, or <code>ConstOffsets</code> the offset value <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxTexelGatherOffset\"><code>maxTexelGatherOffset</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpImageSample-06435",
          "text": "If an <code>OpImageSample*</code> or <code>OpImageFetch*</code> operation has an image operand of <code>ConstOffset</code> then the offset value <strong class=\"purple\">must</strong> be greater than or equal to <a href=\"#limits-minTexelOffset\"><code>minTexelOffset</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpImageSample-06436",
          "text": "If an <code>OpImageSample*</code> or <code>OpImageFetch*</code> operation has an image operand of <code>ConstOffset</code> then the offset value <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxTexelOffset\"><code>maxTexelOffset</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-samples-08725",
          "text": "If an <code>OpTypeImage</code> has an <code>MS</code> operand 0, its bound image <strong class=\"purple\">must</strong> have been created with <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>samples</code> as <code>VK_SAMPLE_COUNT_1_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-samples-08726",
          "text": "If an <code>OpTypeImage</code> has an <code>MS</code> operand 1, its bound image <strong class=\"purple\">must</strong> not have been created with <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>samples</code> as <code>VK_SAMPLE_COUNT_1_BIT</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-SampleRateShading-06378",
          "text": "If the subpass description contains <code>VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM</code>, then the SPIR-V fragment shader Capability <code>SampleRateShading</code> <strong class=\"purple\">must</strong> not be enabled",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-SubgroupUniformControlFlowKHR-06379",
          "text": "The <code>Execution</code> <code>Mode</code> <code>SubgroupUniformControlFlowKHR</code> <strong class=\"purple\">must</strong> not be applied to an entry point unless <a href=\"#features-shaderSubgroupUniformControlFlow\"><code>shaderSubgroupUniformControlFlow</code></a> is enabled, the corresponding shader stage bit is set in <a href=\"#limits-subgroupSupportedStages\"><code>subgroupSupportedStages</code></a>, and the entry point does not execute any <a href=\"#ray-tracing-repack\"><em>invocation repack instructions</em></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-shaderEarlyAndLateFragmentTests-06767",
          "text": "If <a href=\"#features-shaderEarlyAndLateFragmentTests\"><code>shaderEarlyAndLateFragmentTests</code></a> is not enabled, the <code>EarlyAndLateFragmentTestsEXT</code> <code>Execution</code> <code>Mode</code> <strong class=\"purple\">must</strong> not be used",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-shaderEarlyAndLateFragmentTests-06768",
          "text": "If <a href=\"#features-shaderEarlyAndLateFragmentTests\"><code>shaderEarlyAndLateFragmentTests</code></a> feature is not enabled, the <code>StencilRefUnchangedFrontEXT</code> <code>Execution</code> <code>Mode</code> <strong class=\"purple\">must</strong> not be used",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-shaderEarlyAndLateFragmentTests-06769",
          "text": "If <a href=\"#features-shaderEarlyAndLateFragmentTests\"><code>shaderEarlyAndLateFragmentTests</code></a> is not enabled, the <code>StencilRefUnchangedBackEXT</code> <code>Execution</code> <code>Mode</code> <strong class=\"purple\">must</strong> not be used",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-shaderEarlyAndLateFragmentTests-06770",
          "text": "If <a href=\"#features-shaderEarlyAndLateFragmentTests\"><code>shaderEarlyAndLateFragmentTests</code></a> is not enabled, the <code>StencilRefGreaterFrontEXT</code> <code>Execution</code> <code>Mode</code> <strong class=\"purple\">must</strong> not be used",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-shaderEarlyAndLateFragmentTests-06771",
          "text": "If <a href=\"#features-shaderEarlyAndLateFragmentTests\"><code>shaderEarlyAndLateFragmentTests</code></a> is not enabled, the <code>StencilRefGreaterBackEXT</code> <code>Execution</code> <code>Mode</code> <strong class=\"purple\">must</strong> not be used",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-shaderEarlyAndLateFragmentTests-06772",
          "text": "If <a href=\"#features-shaderEarlyAndLateFragmentTests\"><code>shaderEarlyAndLateFragmentTests</code></a> is not enabled, the <code>StencilRefLessFrontEXT</code> <code>Execution</code> <code>Mode</code> <strong class=\"purple\">must</strong> not be used",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-shaderEarlyAndLateFragmentTests-06773",
          "text": "If <a href=\"#features-shaderEarlyAndLateFragmentTests\"><code>shaderEarlyAndLateFragmentTests</code></a> is not enabled, the <code>StencilRefLessBackEXT</code> <code>Execution</code> <code>Mode</code> <strong class=\"purple\">must</strong> not be used",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpImageWeightedSampleQCOM-06979",
          "text": "If an <code>OpImageWeightedSampleQCOM</code> operation is used, then the <code>Texture</code> <code>Sampled</code> <code>Image</code> and <code>Weight</code> <code>Image</code> parameters <strong class=\"purple\">must</strong> both be <em>dynamically uniform</em> for the quad",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpImageWeightedSampleQCOM-06980",
          "text": "If an <code>OpImageWeightedSampleQCOM</code> operation is used, then the <code>Weight</code> <code>Image</code> parameter <strong class=\"purple\">must</strong> be of <code>Storage</code> <code>Class</code> <code>UniformConstant</code> and type <code>OpTypeImage</code> with <code>Depth</code>=0, <code>Dim</code>=<code>2D</code>, <code>Arrayed</code>=1, <code>MS</code>=0, and <code>Sampled</code>=1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpImageWeightedSampleQCOM-06981",
          "text": "If an <code>OpImageWeightedSampleQCOM</code> operation is used, then the <code>Weight</code> <code>Image</code> parameter <strong class=\"purple\">must</strong> be decorated with <code>WeightTextureQCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpImageBlockMatchSADQCOM-06982",
          "text": "If an <code>OpImageBlockMatchSADQCOM</code> or <code>OpImageBlockMatchSSDQCOM</code> operation is used, then the <code>target</code> <code>sampled</code> <code>image</code>, <code>reference</code> <code>sampled</code> <code>image</code>, and <code>Block</code> <code>Size</code> parameters <strong class=\"purple\">must</strong> both be <em>dynamically uniform</em> for the quad",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpImageBlockMatchSSDQCOM-06983",
          "text": "If an <code>OpImageBlockMatchSSDQCOM</code> or <code>OpImageBlockMatchSADQCOM</code> operation is used, then <code>target</code> <code>sampled</code> <code>image</code> and <code>reference</code> <code>sampled</code> <code>image</code> parameters <strong class=\"purple\">must</strong> be of storage class <code>UniformConstant</code> and type <code>OpTypeImage</code> with <code>Depth</code>=0, <code>Dim</code>=<code>2D</code>, <code>Arrayed</code>=0, <code>MS</code>=0, and <code>Sampled</code>=1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpImageBlockMatchSSDQCOM-06984",
          "text": "If an <code>OpImageBlockMatchSSDQCOM</code> or <code>OpImageBlockMatchSADQCOM</code> operation is used, then the <code>target</code> <code>sampled</code> <code>image</code> and <code>reference</code> <code>sampled</code> <code>image</code> parameters <strong class=\"purple\">must</strong> be decorated with <code>BlockMatchTextureQCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpImageBlockMatchSSDQCOM-06985",
          "text": "If an <code>OpImageBlockMatchSSDQCOM</code> or <code>OpImageBlockMatchSADQCOM</code> operation is used, then <code>target</code> <code>sampled</code> <code>image</code> and <code>reference</code> <code>sampled</code> <code>image</code> parameters <strong class=\"purple\">must</strong> have been created using an identical sampler object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpImageBlockMatchSSDQCOM-06986",
          "text": "If an <code>OpImageBlockMatchSSDQCOM</code> or <code>OpImageBlockMatchSADQCOM</code> operation is used, then <code>target</code> <code>sampled</code> <code>image</code> and <code>reference</code> <code>sampled</code> <code>image</code> parameters <strong class=\"purple\">must</strong> have been created with a sampler object with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpImageBlockMatchSSDQCOM-06987",
          "text": "If an <code>OpImageBlockMatchSSDQCOM</code> or <code>OpImageBlockMatchSADQCOM</code> operation is used, then <code>target</code> <code>sampled</code> <code>image</code> and <code>reference</code> <code>sampled</code> <code>image</code> parameters <strong class=\"purple\">must</strong> have been created with a sampler object with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpImageBlockMatchSSDQCOM-06988",
          "text": "If an <code>OpImageBlockMatchSSDQCOM</code> or <code>OpImageBlockMatchSADQCOM</code> operation is used, then <code>Block</code> <code>Size</code> less than or equal to <a href=\"#limits-blockmatch-maxblocksize\"><code>maxBlockMatchRegion</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpImageBoxFilterQCOM-06989",
          "text": "If an <code>OpImageBoxFilterQCOM</code> operation is used, then <code>Box</code> <code>Size.y</code> <strong class=\"purple\">must</strong> be equal to or greater than 1.0 and less than or equal to <a href=\"#limits-boxfilter-maxblocksize\"><code>maxBoxFilterBlockSize</code></a>.<code>height</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpImageBoxFilterQCOM-06990",
          "text": "If an <code>OpImageBoxFilterQCOM</code> operation is used, then <code>Sampled</code> <code>Texture</code> <code>Image</code> and <code>Box</code> <code>Size</code> parameters <strong class=\"purple\">must</strong> be <em>dynamically uniform</em>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpEntryPoint-08727",
          "text": "Each <code>OpEntryPoint</code> <strong class=\"purple\">must</strong> not have more than one variable decorated with <code>InputAttachmentIndex</code> per image aspect of the attachment image bound to it, either explicitly or implicitly as described by <a href=\"#interfaces-inputattachment\">input attachment interface</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-shaderTileImageColorReadAccess-08728",
          "text": "If <a href=\"#features-shaderTileImageColorReadAccess\"><code>shaderTileImageColorReadAccess</code></a> is not enabled, <code>OpColorAttachmentReadEXT</code> operation <strong class=\"purple\">must</strong> not be used",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-shaderTileImageDepthReadAccess-08729",
          "text": "If <a href=\"#features-shaderTileImageDepthReadAccess\"><code>shaderTileImageDepthReadAccess</code></a> is not enabled, <code>OpDepthAttachmentReadEXT</code> operation <strong class=\"purple\">must</strong> not be used",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-shaderTileImageStencilReadAccess-08730",
          "text": "If <a href=\"#features-shaderTileImageStencilReadAccess\"><code>shaderTileImageStencilReadAccess</code></a> is not enabled, <code>OpStencilAttachmentReadEXT</code> operation <strong class=\"purple\">must</strong> not be used",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-minSampleShading-08731",
          "text": "If <a href=\"#primsrast-sampleshading\">sample shading</a> is enabled and <code>minSampleShading</code> is 1.0, the <code>sample</code> operand of any <code>OpColorAttachmentReadEXT</code>, <code>OpDepthAttachmentReadEXT</code>, or <code>OpStencilAttachmentReadEXT</code> operation <strong class=\"purple\">must</strong> evaluate to the value of the <a href=\"#primsrast-multisampling-coverage-mask\">coverage index</a> for any given fragment invocation",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-minSampleShading-08732",
          "text": "If <a href=\"#primsrast-sampleshading\">sample shading</a> is enabled and any of the <code>OpColorAttachmentReadEXT</code>, <code>OpDepthAttachmentReadEXT</code>, or <code>OpStencilAttachmentReadEXT</code> operations are used, then <code>minSampleShading</code> <strong class=\"purple\">must</strong> be 1.0",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-MeshEXT-09218",
          "text": "In mesh shaders using the <code>MeshEXT</code> or <code>MeshNV</code> <code>Execution</code> <code>Model</code> and the <code>OutputPoints</code> <code>Execution</code> <code>Mode</code>, if <a href=\"#features-maintenance5\"><code>maintenance5</code></a> is not enabled, and if the number of output points is greater than 0, a <code>PointSize</code> decorated variable <strong class=\"purple\">must</strong> be written to for each output point",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-maintenance5-09190",
          "text": "If <a href=\"#features-maintenance5\"><code>maintenance5</code></a> is enabled and a <code>PointSize</code> decorated variable is written to, all execution paths <strong class=\"purple\">must</strong> write to a <code>PointSize</code> decorated variable",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-ShaderEnqueueAMDX-09191",
          "text": "The <code>ShaderEnqueueAMDX</code> capability <strong class=\"purple\">must</strong> only be used in shaders with the <code>GLCompute</code> execution model",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-NodePayloadAMDX-09192",
          "text": "Variables in the <code>NodePayloadAMDX</code> storage class <strong class=\"purple\">must</strong> only be declared in the <code>GLCompute</code> execution model",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-maxExecutionGraphShaderPayloadSize-09193",
          "text": "Variables declared in the <code>NodePayloadAMDX</code> storage class <strong class=\"purple\">must</strong> not be larger than the <a href=\"#limits-maxExecutionGraphShaderPayloadSize\"><code>maxExecutionGraphShaderPayloadSize</code></a> limit",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-maxExecutionGraphShaderPayloadSize-09194",
          "text": "Variables declared in the <code>NodeOutputPayloadAMDX</code> storage class <strong class=\"purple\">must</strong> not be larger than the <a href=\"#limits-maxExecutionGraphShaderPayloadSize\"><code>maxExecutionGraphShaderPayloadSize</code></a> limit",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-maxExecutionGraphShaderPayloadSize-09195",
          "text": "For a given entry point, the sum of the size of any variable in the <code>NodePayloadAMDX</code> storage class, and the combined size of all statically initialized variables in the <code>NodeOutputPayloadAMDX</code> storage class <strong class=\"purple\">must</strong> not be greater than <a href=\"#limits-maxExecutionGraphShaderPayloadSize\"><code>maxExecutionGraphShaderPayloadSize</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-maxExecutionGraphShaderPayloadCount-09196",
          "text": "Shaders <strong class=\"purple\">must</strong> not statically initialize more than <a href=\"#limits-maxExecutionGraphShaderPayloadCount\"><code>maxExecutionGraphShaderPayloadCount</code></a> variables in the <code>NodeOutputPayloadAMDX</code> storage class",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-maxExecutionGraphShaderOutputNodes-09197",
          "text": "Shaders <strong class=\"purple\">must</strong> not include more than <a href=\"#limits-maxExecutionGraphShaderOutputNodes\"><code>maxExecutionGraphShaderOutputNodes</code></a> instances of <code>OpInitializeNodePayloadsAMDX</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpImageBlockMatchWindow-09219",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> operation is used, then the <code>target</code> <code>sampled</code> <code>image</code>, <code>reference</code> <code>sampled</code> <code>image</code>, and <code>Block</code> <code>Size</code> parameters <strong class=\"purple\">must</strong> both be <em>dynamically uniform</em> for the quad",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpImageBlockMatchWindow-09220",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> operation is used, then <code>target</code> <code>sampled</code> <code>image</code> and <code>reference</code> <code>sampled</code> <code>image</code> parameters <strong class=\"purple\">must</strong> be of storage class <code>UniformConstant</code> and type <code>OpTypeImage</code> with <code>Depth</code>=0, <code>Dim</code>=<code>2D</code>, <code>Arrayed</code>=0, <code>MS</code>=0, and <code>Sampled</code>=1",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpImageBlockMatchWindow-09221",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> operation is used, then the <code>target</code> <code>sampled</code> <code>image</code> and <code>reference</code> <code>sampled</code> <code>image</code> parameters <strong class=\"purple\">must</strong> be decorated with <code>BlockMatchTextureQCOM</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpImageBlockMatchWindow-09222",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> operation is used, then <code>target</code> <code>sampled</code> <code>image</code> and <code>reference</code> <code>sampled</code> <code>image</code> parameters <strong class=\"purple\">must</strong> have been created using an identical sampler object",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpImageBlockMatchWindow-09223",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> operation is used, then <code>target</code> <code>sampled</code> <code>image</code> and <code>reference</code> <code>sampled</code> <code>image</code> parameters <strong class=\"purple\">must</strong> have been created with a sampler object with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-OpImageBlockMatchWindow-09224",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> operation is used, then <code>target</code> <code>sampled</code> <code>image</code> and <code>reference</code> <code>sampled</code> <code>image</code> parameters <strong class=\"purple\">must</strong> have been created with sampler object with <code>unnormalizedCoordinates</code> equal to <code>VK_TRUE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-maxBlockMatchRegion-09225",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> or <code>OpImageBlockMatchGather*QCOM</code> operation is used, then <code>Block</code> <code>Size</code> less than or equal to <a href=\"#limits-blockmatch-maxblocksize\"><code>maxBlockMatchRegion</code></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-pNext-09226",
          "text": "If a <code>OpImageBlockMatchWindow*QCOM</code> operation is used, then <code>target</code> <code>sampled</code> <code>image</code> <strong class=\"purple\">must</strong> have been created using asampler object that included <a href=\"#VkSamplerBlockMatchWindowCreateInfoQCOM\">VkSamplerBlockMatchWindowCreateInfoQCOM</a> in the <code>pNext</code> chain",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-MaximallyReconvergesKHR-09565",
          "text": "The execution mode <code>MaximallyReconvergesKHR</code> <strong class=\"purple\">must</strong> not be applied to an entry point unless the entry point does not execute any <a href=\"#ray-tracing-repack\"><em>invocation repack instructions</em></a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-shaderSubgroupRotateClustered-09566",
          "text": "If <a href=\"#features-shaderSubgroupRotateClustered\"><code>shaderSubgroupRotateClustered</code></a> is <code>VK_FALSE</code>, then the <code>ClusterSize</code> operand to <code>OpGroupNonUniformRotateKHR</code> <strong class=\"purple\">must</strong> not be used",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-protectedNoFault-09645",
          "text": "If <a href=\"#limits-protectedNoFault\"><code>protectedNoFault</code></a> is not supported, the <code>Storage</code> <code>Class</code> of the <code>PhysicalStorageBuffer</code> <strong class=\"purple\">must</strong> not be used if the buffer being accessed is <a href=\"#memory-protected-memory\">protected</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-RuntimeSpirv-meshAndTaskShaderDerivatives-10153",
          "text": "If <a href=\"#limits-meshAndTaskShaderDerivatives\"><code>meshAndTaskShaderDerivatives</code></a> is <code>VK_FALSE</code>, the <code>DerivativeGroupLinearKHR</code> and <code>DerivativeGroupQuadsKHR</code> execution modes <strong class=\"purple\">must</strong> not be used in the <code>MeshEXT</code>, <code>MeshNV</code>, <code>TaskEXT</code>, or <code>TaskNV</code> <code>Execution</code> <code>Model</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateCuFunctionNVX": {
      "core": [
        {
          "vuid": "VUID-vkCreateCuFunctionNVX-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateCuFunctionNVX-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCuFunctionCreateInfoNVX\">VkCuFunctionCreateInfoNVX</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateCuFunctionNVX-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateCuFunctionNVX-pFunction-parameter",
          "text": "<code>pFunction</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkCuFunctionNVX\">VkCuFunctionNVX</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkCuFunctionCreateInfoNVX": {
      "core": [
        {
          "vuid": "VUID-VkCuFunctionCreateInfoNVX-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCuFunctionCreateInfoNVX-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCuFunctionCreateInfoNVX-module-parameter",
          "text": "<code>module</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCuModuleNVX\">VkCuModuleNVX</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCuFunctionCreateInfoNVX-pName-parameter",
          "text": "<code>pName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroyCuFunctionNVX": {
      "core": [
        {
          "vuid": "VUID-vkDestroyCuFunctionNVX-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyCuFunctionNVX-function-parameter",
          "text": "<code>function</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCuFunctionNVX\">VkCuFunctionNVX</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyCuFunctionNVX-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyCuFunctionNVX-function-parent",
          "text": "<code>function</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCreateCuModuleNVX": {
      "core": [
        {
          "vuid": "VUID-vkCreateCuModuleNVX-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateCuModuleNVX-pCreateInfo-parameter",
          "text": "<code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCuModuleCreateInfoNVX\">VkCuModuleCreateInfoNVX</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateCuModuleNVX-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCreateCuModuleNVX-pModule-parameter",
          "text": "<code>pModule</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkCuModuleNVX\">VkCuModuleNVX</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkCuModuleCreateInfoNVX": {
      "core": [
        {
          "vuid": "VUID-VkCuModuleCreateInfoNVX-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCuModuleCreateInfoNVX-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCuModuleCreateInfoNVX-pData-parameter",
          "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",
          "page": "vkspec"
        }
      ]
    },
    "vkDestroyCuModuleNVX": {
      "core": [
        {
          "vuid": "VUID-vkDestroyCuModuleNVX-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyCuModuleNVX-module-parameter",
          "text": "<code>module</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCuModuleNVX\">VkCuModuleNVX</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyCuModuleNVX-pAllocator-parameter",
          "text": "If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkDestroyCuModuleNVX-module-parent",
          "text": "<code>module</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkCmdCuLaunchKernelNVX": {
      "core": [
        {
          "vuid": "VUID-vkCmdCuLaunchKernelNVX-commandBuffer-parameter",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCuLaunchKernelNVX-pLaunchInfo-parameter",
          "text": "<code>pLaunchInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCuLaunchInfoNVX\">VkCuLaunchInfoNVX</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCuLaunchKernelNVX-commandBuffer-recording",
          "text": "<code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCuLaunchKernelNVX-commandBuffer-cmdpool",
          "text": "The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkCmdCuLaunchKernelNVX-videocoding",
          "text": "This command <strong class=\"purple\">must</strong> only be called outside of a video coding scope",
          "page": "vkspec"
        }
      ]
    },
    "VkCuLaunchInfoNVX": {
      "core": [
        {
          "vuid": "VUID-VkCuLaunchInfoNVX-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCuLaunchInfoNVX-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCuLaunchInfoNVX-function-parameter",
          "text": "<code>function</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCuFunctionNVX\">VkCuFunctionNVX</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCuLaunchInfoNVX-pParams-parameter",
          "text": "If <code>paramCount</code> is not <code>0</code>, <code>pParams</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>paramCount</code> bytes",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkCuLaunchInfoNVX-pExtras-parameter",
          "text": "If <code>extraCount</code> is not <code>0</code>, <code>pExtras</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>extraCount</code> bytes",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceAmigoProfilingFeaturesSEC": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceAmigoProfilingFeaturesSEC-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkAmigoProfilingSubmitInfoSEC": {
      "core": [
        {
          "vuid": "VUID-VkAmigoProfilingSubmitInfoSEC-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC</code>",
          "page": "vkspec"
        }
      ]
    },
    "vkGetDescriptorSetLayoutHostMappingInfoVALVE": {
      "core": [
        {
          "vuid": "VUID-vkGetDescriptorSetLayoutHostMappingInfoVALVE-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDescriptorSetLayoutHostMappingInfoVALVE-pBindingReference-parameter",
          "text": "<code>pBindingReference</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDescriptorSetBindingReferenceVALVE\">VkDescriptorSetBindingReferenceVALVE</a> structure",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDescriptorSetLayoutHostMappingInfoVALVE-pHostMapping-parameter",
          "text": "<code>pHostMapping</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDescriptorSetLayoutHostMappingInfoVALVE\">VkDescriptorSetLayoutHostMappingInfoVALVE</a> structure",
          "page": "vkspec"
        }
      ]
    },
    "vkGetDescriptorSetHostMappingVALVE": {
      "core": [
        {
          "vuid": "VUID-vkGetDescriptorSetHostMappingVALVE-device-parameter",
          "text": "<code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDescriptorSetHostMappingVALVE-descriptorSet-parameter",
          "text": "<code>descriptorSet</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorSet\">VkDescriptorSet</a> handle",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDescriptorSetHostMappingVALVE-ppData-parameter",
          "text": "<code>ppData</code> <strong class=\"purple\">must</strong> be a valid pointer to a pointer value",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-vkGetDescriptorSetHostMappingVALVE-descriptorSet-parent",
          "text": "<code>descriptorSet</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE": {
      "core": [
        {
          "vuid": "VUID-VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE</code>",
          "page": "vkspec"
        }
      ]
    },
    "VkDescriptorSetBindingReferenceVALVE": {
      "core": [
        {
          "vuid": "VUID-VkDescriptorSetBindingReferenceVALVE-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetBindingReferenceVALVE-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetBindingReferenceVALVE-descriptorSetLayout-parameter",
          "text": "<code>descriptorSetLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> handle",
          "page": "vkspec"
        }
      ]
    },
    "VkDescriptorSetLayoutHostMappingInfoVALVE": {
      "core": [
        {
          "vuid": "VUID-VkDescriptorSetLayoutHostMappingInfoVALVE-sType-sType",
          "text": "<code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE</code>",
          "page": "vkspec"
        },
        {
          "vuid": "VUID-VkDescriptorSetLayoutHostMappingInfoVALVE-pNext-pNext",
          "text": "<code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>",
          "page": "vkspec"
        }
      ]
    }
  }
}